翻譯|使用教程|編輯:李顯亮|2021-07-28 10:29:08.227|閱讀 328 次
概述:C/C++test 運行時庫是一組由源代碼檢測使用的輔助函數(shù)和服務(wù),用于在應(yīng)用程序運行時發(fā)出覆蓋率信息。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
Parasoft C/C++test針對C/C++開發(fā)的專業(yè)白盒自動化測試方案,能有效提高軟件開發(fā)效率和代碼質(zhì)量。C++test 可以進(jìn)行靜態(tài)分析,全面代碼審查,運行時錯誤檢測,并在單元測試和組件測試中集成覆蓋率分析。
Parasoft C/C++test 運行時庫是一組由源代碼檢測使用的輔助函數(shù)和服務(wù),用于在應(yīng)用程序運行時發(fā)出覆蓋率信息。沒有庫就無法鏈接已檢測的應(yīng)用程序。根據(jù)測試的項目類型,運行時庫可以通過多種方式鏈接到最終的可測試二進(jìn)制文件。
除了為插裝代碼提供基本服務(wù)外,該庫還用于使代碼覆蓋解決方案適應(yīng)特定的開發(fā)環(huán)境,例如支持測試嵌入式設(shè)備和開發(fā)主機之間的覆蓋結(jié)果的非標(biāo)準(zhǔn)傳輸。
C/C++test 附帶運行時庫的預(yù)構(gòu)建版本,它們適合在安裝 CCE 的同一平臺上使用。在大多數(shù)情況下,從本地開發(fā)的應(yīng)用程序(即 MS Windows 或 Linux x86 和 x86-64)收集代碼覆蓋率信息可以使用運行時庫的預(yù)構(gòu)建版本。
所有開發(fā)跨平臺應(yīng)用程序的用戶都需要使用合適的交叉編譯器和可能的鏈接器準(zhǔn)備運行時庫的自定義構(gòu)建。代碼覆蓋運行時庫的源代碼隨 CCE 一起提供。
準(zhǔn)備運行時庫自定義構(gòu)建的過程通常僅限于運行時庫源代碼的編譯。在某些情況下,您可能需要安裝一些源代碼片段以使代碼覆蓋率適應(yīng)特定的開發(fā)平臺。此過程將在以下部分中描述。
C/C++test 包含以下二進(jìn)制文件:
Windows(x86 和 x86-64)
文件
|
描述
|
---|---|
<INSTALL_DIR>/runtime/lib/cpptest.a | 與 Cygwin GNU GCC 編譯器一起使用的 32 位靜態(tài)存檔。要添加到鏈接命令行 |
<INSTALL_DIR>/runtime/lib/cpptest.lib | 與 Microsoft CL 編譯器一起使用的 32 位導(dǎo)入庫。要添加到鏈接命令行 |
<INSTALL_DIR>/runtime/lib/cpptes64.lib | 與 Microsoft CL 編譯器一起使用的 64 位導(dǎo)入庫。要添加到鏈接命令行 |
<INSTALL_DIR>/bin/cpptest.dll | 與 Microsoft CL 編譯器一起使用的 32 位動態(tài)鏈接庫。[INSTALL_DIR]/bin應(yīng)該添加到 PATH 環(huán)境變量中 |
<INSTALL_DIR>/bin/cpptest64.dll | 與 Microsoft CL 編譯器一起使用的 64 位動態(tài)鏈接庫。[INSTALL_DIR]/bin應(yīng)該添加到 PATH 環(huán)境變量中 |
Linux(x86 和 x86-64)
文件
|
描述
|
---|---|
<INSTALL_DIR>/runtime/lib/libcpptest.so | 32 位共享庫。要添加鏈接命令行。[INSTALL_DIR]/runtime/lib應(yīng)該添加到 LD_LIBRARY_PATH |
<INSTALL_DIR>/runtime/lib/libcpptest64.so | 64 位共享庫。要添加鏈接命令行。[INSTALL_DIR]/runtime/lib應(yīng)該添加到 LD_LIBRARY_PATH |
如果您需要以未作為開箱即用解決方案提供的形式使用運行時庫,請準(zhǔn)備與特定開發(fā)環(huán)境要求相匹配的運行時庫的自定義構(gòu)建。有關(guān)更多詳細(xì)信息,請參閱 自定義運行時庫。
將 C/C++test 運行時庫與經(jīng)過測試的應(yīng)用程序鏈接過程集成通常需要修改鏈接器命令行,在某些情況下,還需要修改執(zhí)行環(huán)境。本節(jié)介紹如何在使用 C/C++test 附帶的預(yù)構(gòu)建版本時修改鏈接過程。
Windows Cygwin GNU GCC 編譯器的靜態(tài)庫:
MS CL 編譯器的動態(tài)鏈接庫:
修改構(gòu)建腳本,以便在鏈接器命令行中的某處指定覆蓋運行時庫——最好在所有目標(biāo)文件之后。例如:
$ (LXX) $ (PRODUCT_OBJ) $ (OFLAG_EXE) $ (PROJ_EXECUTABLE) $ (LXXFLAGS) $ (SYSLIB) $ (EXECUTABLE_LIB_LXX_OPTS) <安裝> /runtime/lib/cpptest.lib
確保將該[INSTALL_DIR]/bin目錄添加到您的 PATH 環(huán)境變量中,以便在啟動測試程序時可以找到該庫。您還可以考慮將文件復(fù)制cpptest.dll(或cpptest64.dll)到與可執(zhí)行文件相同的目錄中,或者復(fù)制到在測試應(yīng)用程序啟動期間掃描動態(tài)鏈接庫的其他位置。
Linux GNU GCC 編譯器的共享庫:
修改構(gòu)建腳本,以便在鏈接器命令行中的某處指定覆蓋運行時庫——最好在所有目標(biāo)文件之后。例如:
$(LXX)$(PRODUCT_OBJ)$(OFLAG_EXE)$(PROJ_EXECUTABLE)$(LXXFLAGS)$(SYSLIB)$(EXECUTABLE_LIB_LXX_OPTS)-L<INSTALL>/runtime/lib-lcpptest
請注意添加了 -L [INSTALL_DIR]/runtime/lib和-lcpptest選項。
由于以下情況,您可能需要自定義運行時庫:
運行時庫源代碼隨[INSTALL_DIR]/runtime目錄中的 C/C++test 一起提供。下表描述了結(jié)構(gòu):
成分
|
描述
|
---|---|
include |
包含庫包含文件的目錄。 |
src |
包含庫源代碼的目錄。 |
Makefile | 為構(gòu)建運行時庫提供的基本 Makefile。 |
target | 包含一組 Makefile 的目錄包含帶有編譯器特定選項的文件,用于為大多數(shù)流行的開發(fā)環(huán)境準(zhǔn)備運行時庫構(gòu)建。 |
channel | 包含一組 Makefile 的目錄包含具有支持的通信通道配置的文件。 |
運行時庫支持通過各種通信渠道收集數(shù)據(jù)。使用的通信渠道取決于開發(fā)環(huán)境。在大多數(shù)情況下,將結(jié)果存儲在一個或多個文件中是合適的,但在其他 TCP/IP 套接字或 RS232 傳輸中可能需要。通過在cpptest.c庫源文件編譯期間將值設(shè)置為專用宏,可以啟用特定的通信通道。將 -D<MACRO> 添加到編譯命令行以設(shè)置值。下表提供了通信通道控制宏的完整列表:
渠道
|
描述
|
---|---|
CPPTEST_NULL_COMMUNICATION | 空執(zhí)行。如果啟用,則不會發(fā)送任何結(jié)果。適用于初始測試構(gòu)建和調(diào)試。 |
CPPTEST_FILE_COMMUNICATION |
基于文件的實現(xiàn)。使用 ANSI C 文件 I/O 接口。如果啟用,結(jié)果將寫入本地驅(qū)動器文件。 還提供了以下附加配置宏: CPPTEST_LOG_FILE_NAME:結(jié)果文件的名稱;默認(rèn)cpptest_results.clog CPPTEST_LOG_FILE_APPEND:創(chuàng)建新的結(jié)果文件或附加到現(xiàn)有的。默認(rèn)值為1 -> append,替代0 -> create new |
CPPTEST_SPLIT_FILE_COMMUNICATION |
基于文件的實現(xiàn)。使用 ANSI C 文件 I/O 接口。如果啟用,結(jié)果將寫入一系列本地驅(qū)動器文件。 您可以使用以下宏配置此通道: CPPTEST_LOG_FILE_NAME: 系列中第一個結(jié)果文件的名稱;默認(rèn)為cpptest_results.clog. 其他文件將依次命名,例如cpptest_results.clog.0001. 要將系列傳遞給cpptestcli,請確保系列中的所有文件都位于同一目錄中,并且僅提供第一個文件的名稱作為輸入。當(dāng)您運行該cpptestcli命令時,其他文件將與系列中的第一個文件合并并從目錄中刪除。 CPPTEST_MAX_ALLOWED_NUMBER_OF_BYTES_PER_FILE: 指定系列中一個文件的最大大小;默認(rèn) 2000000000 字節(jié) (2 GB)。 |
CPPTEST_UNIX_SOCKET_COMMUNICATION |
基于 TCP/IP 套接字的實現(xiàn)。使用 POSIX API。如果啟用,結(jié)果將發(fā)送到指定的 TCP/IP 端口。提供了以下附加配置宏: CPPTEST_LOG_SOCKET_HOST: 指定主機 IP 地址字符串 CPPTEST_LOG_SOCKET_PORT: 指定端口號 CPPTEST_GETHOSTBYNAME_ENABLED: 如果設(shè)置為1,可以通過域名指定主機(需要gethostbyname函數(shù)存在) |
CPPTEST_WIN_SOCKET_COMMUNICATION | 如上所述,使用了 MS Windows API。 |
CPPTEST_UNIX_SOCKET_UDP_COMMUNICATION | 如上,基于UDP的實現(xiàn)。 |
CPPTEST_RS232_UNIX_COMMUNICATION |
基于 RS232 的實現(xiàn)。使用 POSIX API。如果啟用,則結(jié)果將通過指定的 RS232 系統(tǒng)設(shè)備發(fā)送。提供了以下附加配置宏: CPPTEST_RS232_DEVICE_NAME: 系統(tǒng)設(shè)備名稱 CPPTEST_RS232_BAUD_RATE: 傳輸波特率 CPPTEST_RS232_BYTE_SIZE: 字節(jié)大小 CPPTEST_RS232_PARITY: 奇偶校驗控制 CPPTEST_RS232_STOP_BIT: 停止位使用 CPPTEST_RS232_TIMEOUT: 傳輸超時值 |
CPPTEST_RS232_WIN_COMMUNICATION | 如上。使用 MS Windows API。 |
CPPTEST_RS232_STM32F103ZE_COMMUNICATION | 基于 STM32F103x USART 的實現(xiàn)。使用STM Cortex庫接口(ST/STM32F10x/stm32f10x.h需要頭文件) |
CPPTEST_HEW_SIMIO_COMMUNICATION | 瑞薩 HEW 模擬器特定實現(xiàn)。 |
CPPTEST_LAUTERBACH_FDX_COMMUNICATION | 基于勞特巴赫 TRACE32 的實現(xiàn)(使用 FDX) |
CPPTEST_ITM_COMMUNICATION | 基于 ARM CoreSight ITM 單元的通信。需要 CMSIS 頭文件。 |
CPPTEST_CUSTOM_COMMUNICATION | 為自定義實現(xiàn)啟用空模板 |
如果使用提供的 Makefile 構(gòu)建運行時庫,則[INSTALL_DIR]/runtime/channel可以使用目錄中提供的 make 配置文件之一。有關(guān)詳細(xì)信息,請參閱 與基于 Make 的構(gòu)建系統(tǒng)集成。
如果沒有任何通信通道實現(xiàn)適合您的開發(fā)環(huán)境,則可以提供自定義實現(xiàn)。以下說明描述了如何自定義運行時庫,以便它使用通信通道的自定義實現(xiàn):
找到第 1.13 節(jié)“自定義通信實現(xiàn)。
自定義通信實現(xiàn)部分包含四種不同方法的空模板:
功能
|
描述
|
---|---|
void cpptestInitializeStream(void) | 該函數(shù)負(fù)責(zé)初始化通信通道,例如創(chuàng)建并連接到套接字或初始化 UART 設(shè)備。 |
void cpptestFinalizeStream(void) | 該函數(shù)負(fù)責(zé)最終確定通信通道。例如,它可能負(fù)責(zé)關(guān)閉 TCP/IP 套接字。 |
int cpptestSendData(const char *data, unsigned size) |
該函數(shù)負(fù)責(zé)從數(shù)據(jù)緩沖區(qū)發(fā)送大小字節(jié)。 |
void cpptestFlushData(void) | 該函數(shù)負(fù)責(zé)刷新數(shù)據(jù)。它的含義取決于特定的傳輸類型。它在某些實現(xiàn)中可能具有有限的應(yīng)用。在這種情況下,它應(yīng)該留空。 |
運行時庫包含對多線程應(yīng)用程序的支持。支持 POSIX、MS Windows 和 VxWorks API。您可以通過-D<MACRO>在編譯期間添加到編譯命令行來啟用對特定多線程 API 的支持cpptest.c。下表描述了多線程 API 支持控制宏的完整列表:
宏
|
描述
|
---|---|
CPPTEST_NO_THREADS | 空執(zhí)行。Coverage 運行時不準(zhǔn)備與多線程應(yīng)用程序一起使用 |
CPPTEST_WINDOWS_THREADS | MS Windows 多線程 API 實現(xiàn) |
CPPTEST_UNIX_THREADS | POSIX 多線程 API 實現(xiàn) |
CPPTEST_VXWORKS_THREADS | VxWorks 多線程 API 實現(xiàn) |
如果您將 C/C++test 與不使用受支持的多線程 API 的多線程應(yīng)用程序一起使用,您可以自定義運行時庫以使用您的多線程 API。需要以下步驟:
找到第 2.5 節(jié)“自定義多線程實現(xiàn)”
自定義多線程實現(xiàn)部分包含兩種不同方法的空模板:
功能
|
描述
|
---|---|
static int cpptestLock(void) | 此函數(shù)可確保覆蓋工具運行時庫內(nèi)的同步操作。如果一個線程鎖定了對運行時庫服務(wù)的訪問,則意味著正在進(jìn)行原子操作,并且沒有其他線程可以使用運行時庫服務(wù)。一旦鎖定被釋放,其他線程就可以使用運行時庫服務(wù) |
static int cpptestUnlock(void) | 釋放對運行時庫服務(wù)的鎖定。 |
提供與您的環(huán)境要求相匹配的方法的實現(xiàn)。
編譯cpptest.c與添加到編譯命令行下面的宏:
"-DCPPTEST_CUSTOM_THREADS"
如果生成的目標(biāo)文件不足,您可以進(jìn)一步處理該文件以滿足您的需要(例如,創(chuàng)建共享庫)。
C/C++test 附帶一個簡單的 Makefile(請參閱庫源代碼結(jié)構(gòu)),它簡化了構(gòu)建運行時庫的過程。但是,在許多情況下,不需要提供的 make 文件,因為源代碼已經(jīng)針對構(gòu)建過程進(jìn)行了優(yōu)化。始終需要的唯一步驟是編譯主cpptest.c源文件。對生成的目標(biāo)文件的任何額外處理將取決于特定的開發(fā)環(huán)境及其要求,例如提供運行時庫作為共享庫。
如果需要修改編譯標(biāo)志(例如,添加特定的特定交叉編譯器或定義以強制執(zhí)行運行時庫重新配置),請在目標(biāo)子目錄中提供一個新的 make 配置文件。為方便起見,復(fù)制現(xiàn)有的目標(biāo)配置文件之一并修改其內(nèi)容以滿足您的需要。
調(diào)用以下命令行以創(chuàng)建build包含單個對象的子目錄,該對象cpptest.<OBJ_EXT>可用于與檢測的應(yīng)用程序鏈接。
make TARGET_CFG=<目標(biāo)配置文件名> CHANNEL_FILE=<通道配置文件名>
您的命令行可能類似于以下內(nèi)容:
make TARGET_CFG=gcc-static.mk CHANNEL_FILE=channel/unix-socket.mk
或者,您可以提供頻道類型:
make TARGET_CFG=gcc-static.mk CHANNEL_TYPE=unix-socket
要設(shè)置覆蓋工具運行時庫的用戶構(gòu)建,請執(zhí)行以下步驟:
Parasoft是一家專門提供軟件測試解決方案的公司,幫助企業(yè)打造無缺陷的軟件。
從開發(fā)到質(zhì)量檢查,Parasoft的技術(shù)通過集成靜態(tài)和運行時分析,單元、功能和API測試,以及服務(wù)虛擬化,在不犧牲質(zhì)量和安全性的情況下加快軟件交付,節(jié)約交付成本。
強大的報告和分析功能可幫助用戶快速查明有風(fēng)險的代碼區(qū)域,并了解新代碼更改如何影響其軟件質(zhì)量,而突破性的技術(shù)將人工智能和機器學(xué)習(xí)添加到軟件測試中,使組織更容易采用和擴展跨開發(fā)和測試團隊的有效的軟件測試實踐。
Parasoft針對C/C++、Java、.NET和嵌入式的開發(fā)測試都有著30多年的深入研究,很多全國500強企業(yè)使用Parasoft的產(chǎn)品實現(xiàn)了軟件快速、高質(zhì)量的交付。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn