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