• <menu id="w2i4a"></menu>
  • logo Parasoft C/C++ test 自動化用戶指南

    文檔首頁>>Parasoft C/C++ test 自動化用戶指南>>Parasoft C/C++ test 自動化用戶指南(二十):檢測和構(gòu)建檢測源代碼

    Parasoft C/C++ test 自動化用戶指南(二十):檢測和構(gòu)建檢測源代碼


    Parasoft C/C++test針對C/C++開發(fā)的專業(yè)白盒自動化測試方案,能有效提高軟件開發(fā)效率和代碼質(zhì)量。C++test 可以進行靜態(tài)分析,全面代碼審查,運行時錯誤檢測,并在單元測試和組件測試中集成覆蓋率分析。

    Parasoft C/C++test申請免費試用


    Parasoft C/C++test 可以從單元測試、功能測試以及其他類型的應用程序執(zhí)行中收集覆蓋率信息。C/C++test 支持一系列覆蓋指標,可用于本機和跨應用程序開發(fā)。本文介紹其中的第一個階段——檢測和構(gòu)建檢測源代碼。

    在此階段執(zhí)行三個步驟:

    1. 源代碼被檢測。
    2. 檢測的源代碼被編譯為目標文件。
    3. 所有檢測和非檢測對象都鏈接到代碼覆蓋工具庫,以及形成最終可測試二進制工件所需的任何其他庫。

    這些步驟通常在構(gòu)建過程中執(zhí)行,并且要求覆蓋工具與用戶構(gòu)建系統(tǒng)集成。cpptestcc工具檢測源代碼并將其編譯為目標文件。cpptestcc被設(shè)計為用作匯編命令行編譯器前綴。

    原始編譯命令行: 

    cc -I app/includes -D defines -c source.cpp

    覆蓋模式編譯命令行:  

    cpptestcc -compiler gcc_3_4 -line-coverage -workspace /home/test/proj/cov -- cc -I app/includes -D defines -c source.cpp

    當覆蓋模式編譯命令行執(zhí)行時,cpptestcc執(zhí)行以下操作:

    • 編譯命令行分析提取源文件信息
    • 對所有檢測到的源文件進行解析和檢測以獲取覆蓋率指標
    • 使用-workspace開關(guān)在指定位置重建插裝文件還存儲了有關(guān)報告生成期間使用的代碼結(jié)構(gòu)的附加信息
    • 編譯命令行修改,原始源文件替換為插裝版本
    • 執(zhí)行編譯命令行,在與原始命令行相同的位置創(chuàng)建對象文件

    您可以將[INSTALL_DIR]/bin目錄添加到 PATH 變量中,這樣在指定cpptestcc命令時就不必使用完整路徑 。本文檔中的所有示例均假設(shè)已完成此操作。

    以下模式描述了覆蓋檢測的語法:

    cpptestcc -compiler <compiler configuration> <coverage metric specification> -workspace <workspace directory> -- <compilation command line>
    • <compiler configuration>指支持的編譯器配置,例如 gcc_3_4;有關(guān)支持的編譯器 列表,請參閱支持的編譯器。
    • <coverage metric specification>“覆蓋”指的是支持的覆蓋度量,例如,線路覆蓋。有關(guān)支持的覆蓋率指標列表,請參閱cpptestcc 的命令行參考。
    • cpptestcc命令行從與編譯器命令行分離--隔板。

    鏈接檢測代碼

    必須修改原始鏈接器命令以包含代碼覆蓋率檢測所需的附加庫。以下示例顯示了這通常是如何完成的:

    原始編譯命令行:  

    lxx -L app/lib app/source.o -lsomelib -o app.exe

    覆蓋模式編譯命令行: 

    lxx -L app/lib app/source.o somelib.lib <coverage tool>/runtime/lib/cpptest.lib -o app.exe

    執(zhí)行檢測代碼 

    執(zhí)行環(huán)境的細節(jié)取決于應用程序的細節(jié),但覆蓋工具對執(zhí)行施加了以下有限的依賴:

    • 如果覆蓋工具庫被鏈接為共享(動態(tài)加載)庫,那么您必須確保在啟動檢測的應用程序時可以加載該庫。在 Windows 上,這通常需要將[INSTALL_DIR]/bin目錄添加到 PATH 環(huán)境變量中。在 Linux 系統(tǒng)上,添加[INSTALL_DIR]/runtime/lib到 LD_LIBRARY_PATH 變量。
    • 如果覆蓋結(jié)果傳輸信道被修改,則必須滿足由修改產(chǎn)生的所有要求。例如,如果結(jié)果是通過 TCP/IP 套接字或 rs232 發(fā)送的,則需要在檢測的應用程序執(zhí)行之前啟動適當?shù)膫陕牬怼?/span>

    在檢測的應用程序完成執(zhí)行后,收集的結(jié)果必須存儲在將用于生成報告的文件中。

    生成報告

    最終覆蓋率報告由兩種類型的信息生成:

    • cpptestcc構(gòu)建過程中生成的代碼結(jié)構(gòu)信息(存儲在workspace中)
    • 通過檢測代碼執(zhí)行獲得的覆蓋結(jié)果

    覆蓋率報告可以 HTML 格式生成或發(fā)送到 DTP 服務器。以下示例顯示了用于生成報告的命令:

    cpptestcli -config builtin://Coverage -input cpptest_results.clog -workspace /home/test/proj/cov

    為了在 DTP 中正確合并覆蓋數(shù)據(jù),您必須在命令行或 .properties 設(shè)置文件中指定一個或多個覆蓋圖像標簽。覆蓋圖像會自動發(fā)送到連接的 DTP 服務器,在那里它可以與過濾器相關(guān)聯(lián)。

    您可以指定一組最多三個標簽,這些標簽可用于在 DTP 服務器中使用以下report.coverage.images屬性創(chuàng)建覆蓋圖像

    report.coverage.images=[tag1; tag2; tag3]

    在報告中心管理頁面(管理> 項目> 過濾器> [單擊過濾器]中的 DTP 中關(guān)聯(lián)覆蓋圖像

    您還可以使用該report.coverage.limit屬性指定較低的覆蓋閾值:

    report.coverage.limit=[value]

    低于此值的覆蓋率結(jié)果在報告中突出顯示。默認值為40。 

    使用示例

    在此示例中,以下代碼來自名為 的 c++ 源文件main.c: 

    #include <iostream>
     
    int main(int argc, char ** argv) {
       if (argc > 1) {
          std::cout << "Thank you for arguments" << std::endl;
       } else {
          std::cout << "Provide some arguments please !" << std::endl;
       }
       return 0;
    }

    正常的文件編譯命令是gcc: 

    g++ -c main.c -o main.o

    要檢測此文件并將檢測后的代碼編譯為目標文件,編譯命令行必須包含cpptestcc命令前綴: 

    cpptestcc -compiler gcc_3_4 -line-coverage -workspace /home/test/proj/cov -- g++ -c main.c -o main.o

    作為 cpptestcc 命令調(diào)用的結(jié)果,創(chuàng)建了兩個工件:

    • 帶有檢測代碼的對象
    • 代碼結(jié)構(gòu)信息存儲在 -workspace選項指定的目錄中

    一旦源文件被檢測并編譯成目標文件,它就可以鏈接起來形成最終的可執(zhí)行文件。通常這個簡單的例子將與以下命令鏈接:

    g++ main.o -o app.exe

    覆蓋率檢測需要額外的庫,因此鏈接命令行需要如下所示:

    g++ main.o <coverage tool install dir>/runtime/lib/cpptest.a -o app.exe

    在此示例中,使用了覆蓋庫的靜態(tài)版本。還提供了動態(tài)/共享版本以及源代碼,用于構(gòu)建自定義版本。

    一旦應用程序被鏈接,就可以執(zhí)行它來收集有關(guān)代碼覆蓋率的信息。運行以下命令:

    ./app.exe

    應用程序?qū)?/span>cpptest_results.clog在當前工作目錄中輸出默認命名的覆蓋率日志文件。

    最后,使用以下命令生成報告:  

    cpptestcli -config builtin://Coverage -workspace /home/test/proj/cov -input cpptest_results.clog -report report_dir

    將創(chuàng)建一個報告目錄,其中包含帶有代碼覆蓋率信息的 HTML 報告。


    Parasoft——領(lǐng)先的自動化測試工具,滿足絕大多數(shù)行業(yè)標準

    Parasoft是一家專門提供軟件測試解決方案的公司,幫助企業(yè)打造無缺陷的軟件。

    從開發(fā)到質(zhì)量檢查,Parasoft的技術(shù)通過集成靜態(tài)和運行時分析,單元、功能和API測試,以及服務虛擬化,在不犧牲質(zhì)量和安全性的情況下加快軟件交付,節(jié)約交付成本。

    強大的報告和分析功能可幫助用戶快速查明有風險的代碼區(qū)域,并了解新代碼更改如何影響其軟件質(zhì)量,而突破性的技術(shù)將人工智能和機器學習添加到軟件測試中,使組織更容易采用和擴展跨開發(fā)和測試團隊的有效的軟件測試實踐。

    Parasoft針對C/C++、Java、.NET和嵌入式的開發(fā)測試都有著30多年的深入研究,很多全國500強企業(yè)使用Parasoft的產(chǎn)品實現(xiàn)了軟件快速、高質(zhì)量的交付。

        獲取Parasoft資料或申請試用可加QQ:2867205852

    申請Parasoft測試試用

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();