Parasoft C/C++ test 自動(dòng)化用戶指南(十四):配置測(cè)試范圍
Parasoft C/C++test針對(duì)C/C++開發(fā)的專業(yè)白盒自動(dòng)化測(cè)試方案,能有效提高軟件開發(fā)效率和代碼質(zhì)量。C++test 可以進(jìn)行靜態(tài)分析,全面代碼審查,運(yùn)行時(shí)錯(cuò)誤檢測(cè),并在單元測(cè)試和組件測(cè)試中集成覆蓋率分析。
輸入范圍定義了 C 和 C++ 源文件以使用 C/C++test 進(jìn)行測(cè)試。輸入范圍還提供有關(guān)編譯器選項(xiàng)和環(huán)境的全套信息,因此 C/C++test 可以重新創(chuàng)建原始構(gòu)建環(huán)境以提供準(zhǔn)確的測(cè)試結(jié)果。
- 分析單個(gè)文件
- 分析基于 Makefile 的項(xiàng)目
使用現(xiàn)有構(gòu)建數(shù)據(jù)分析代碼
只會(huì)分析構(gòu)建數(shù)據(jù)文件中定義的源文件。源文件中包含的頭文件將被排除在分析之外。有關(guān)其他信息,請(qǐng)參閱以下部分:
- .bdf 的概念以及如何創(chuàng)建它的描述,請(qǐng)參閱 運(yùn)行靜態(tài)分析。
- 使用 .bdf 進(jìn)行分析的步驟說(shuō)明,請(qǐng)參閱運(yùn)行靜態(tài)分析。
- 有關(guān)如何擴(kuò)大測(cè)試文件范圍的說(shuō)明,包括頭文件。
定義源文件結(jié)構(gòu)(模塊)
C/C++test 將輸入范圍視為一組不相關(guān)的源文件。定義模塊允許您引入定義良好的源文件結(jié)構(gòu)并將其他文件(例如頭文件)添加到輸入范圍中。
模塊是通過(guò)指定其名稱和根目錄來(lái)定義的。位于根目錄或其子目錄中的所有測(cè)試文件都屬于該模塊。被測(cè)試源文件包含的位于根目錄或其子目錄中的所有頭文件也將屬于該模塊,并與源文件一起進(jìn)行分析。
對(duì)于模塊中的所有文件,“模塊相對(duì)路徑”將可用。項(xiàng)目相對(duì)路徑被計(jì)算為從模塊根到實(shí)際文件位置的相對(duì)路徑。在大多數(shù)情況下,模塊相對(duì)路徑獨(dú)立于機(jī)器,因此可以輕松地在不同機(jī)器之間共享測(cè)試結(jié)果。
模塊結(jié)構(gòu)示例
第一段代碼描述了一個(gè)簡(jiǎn)單的目錄/文件結(jié)構(gòu)。在第二段代碼中,描述了文件和模塊根目錄之間的關(guān)系,以及將分析哪些文件:
/home/devel_1/project/src/foo.cp | tested file defined in bdf will be analyzed |
/home/devel_1/project/includes/foo.h | #included by foo.cpp |
/home/devel_1/project/includes/other.h | not #included by foo.cpp |
/home/devel_1/common/common.h | #included by foo.cpp |
假設(shè)模塊MyApp是用/home/devel_1/project rootlocation定義的,以下文件將作為模塊的一部分進(jìn)行測(cè)試:
/home/devel_1/project/src/foo.cpp | belongs to MyApp as MyApp/src/foo.cpp; will be analyzed |
/home/devel_1/project/includes/foo.h | belongs to MyApp as MyApp/includes/foo.h; will be analyzed |
/home/devel_1/project/includes/other.h | not #included; will not be analyzed |
/home/devel_1/common/common.h | does not belong to MyApp; will not be analyzed |
定義基本模塊結(jié)構(gòu)
使用 -[=]開關(guān)定義模塊。如果未指定名稱,將使用根目錄的名稱:
-module MyApp=/home/devel_1/project -module /home/devel_1/project -module MyModule=../projects/module1 -module .
或者,可以使用以下cpptest.scope.module.=屬性在自定義配置文件中定義模塊結(jié)構(gòu):
cpptest.scope.module.MyApp=/home/devel_1/project cpptest.scope.module.MyModule=../projects/module1
定義具有多個(gè)根位置的模塊
添加指向適當(dāng)根位置的模塊名稱的邏輯路徑以定義多個(gè)非重疊位置:
-module MyApp/module1=/home/devel_1/project -module MyApp/module2=/home/external/module2/src cpptest.scope.module.MyApp/module1=/home/devel_1/project cpptest.scope.module.MyApp/module2=/home/external/module2/src
微調(diào)輸入范圍
使用 -resource開關(guān)指定一個(gè)或一組文件進(jìn)行測(cè)試。
-resource /home/cpptest/examples/ATM/ATM.cxx -resource /home/cpptest/examples/ATM -resource ATM.cxx
可以在路徑中指定以下資源:
- 文件路徑(只測(cè)試選定的文件)
- 目錄路徑(僅測(cè)試選定目錄中的文件)
- 文件名(僅測(cè)試選定名稱的文件)
使用 -include 和 -exclude 開關(guān)將其他過(guò)濾器應(yīng)用于范圍:
- 文件路徑(只測(cè)試選定的文件)
- -include指示 C/C++test 只測(cè)試與文件系統(tǒng)路徑匹配的文件;跳過(guò)所有其他文件。
- -exclude 指示 C/C++test 測(cè)試所有文件,除了那些與文件系統(tǒng)路徑匹配的文件。
根據(jù)源代碼管理數(shù)據(jù)定義文件過(guò)濾器
可以通過(guò)設(shè)置其他文件過(guò)濾器將分析范圍限制為本地修改的文件或在當(dāng)前工作分支上修改的文件。這使您可以在源代碼控制系統(tǒng)中檢查代碼或與主要開發(fā)流合并之前專注于識(shí)別和修復(fù)由最近的代碼更改引入的錯(cuò)誤。
先決條件
-
必須正確配置與支持的源碼控制系統(tǒng)的連接(見連接到源碼控制和源碼控制設(shè)置)。
- scope.scontrol=true設(shè)置必須被配置為根據(jù)你的源碼控制系統(tǒng)啟用計(jì)算作者資格(見范圍和作者資格設(shè)置)。
分析本地修改的文件
要將分析范圍縮小到本地修改的文件,請(qǐng)?jiān)?properties配置文件中添加以下選項(xiàng):
scope.scontrol.files.filter.mode=local
分析在當(dāng)前工作分支上修改的文件
要將分析范圍縮小到當(dāng)前工作分支上與主要集成流不同的文件,例如“master”或“trunk”,請(qǐng)?jiān)?properties配置文件中添加以下選項(xiàng):
scope.scontrol.files.filter.mode=branch
|
如果要將您的工作分支與另一個(gè)分支或特定修訂版而不是主要集成流進(jìn)行比較,則需要提供要用作參考的分支或修訂版的名稱或 ID。以下配置將分析范圍縮小到當(dāng)前工作分支上與自定義分支/修訂版不同的文件:
scope.scontrol.files.filter.mode=branch
scope.scontrol.ref.branch=[name/ID of the custom reference branch/revision]
|
在測(cè)試范圍中包含頭文件
C/C++test 不直接分析頭文件。這意味著只有在被測(cè)試的源文件中包含頭文件時(shí)才會(huì)分析頭文件。如果通過(guò)應(yīng)用文件過(guò)濾器從分析中排除未修改的源文件,則該源文件使用的所有頭文件也將被排除 - 即使它們已被修改。
為了確保分析修改后的頭文件,即使包含它們的源文件保持不變,請(qǐng)cpptest.scope.adjuster.cu.enabled 在包含高級(jí)范圍選項(xiàng)的.properties文件中啟用該 選項(xiàng)。這將能夠分析與已修改文件屬于同一編譯單元的所有文件。
例子
scope.scontrol.files.filter.mode=local
cpptest.scope.adjuster.cu.enabled=true
|
scope.scontrol.files.filter.mode=branch
scope.scontrol.ref.branch=[name/ID of the custom reference branch/revision]
cpptest.scope.adjuster.cu.enabled=true
|
Parasoft——領(lǐng)先的自動(dòng)化測(cè)試工具,滿足絕大多數(shù)行業(yè)標(biāo)準(zhǔn)
Parasoft是一家專門提供軟件測(cè)試解決方案的公司,幫助企業(yè)打造無(wú)缺陷的軟件。
從開發(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ò)展跨開發(fā)和測(cè)試團(tuán)隊(duì)的有效的軟件測(cè)試實(shí)踐。
Parasoft針對(duì)C/C++、Java、.NET和嵌入式的開發(fā)測(cè)試都有著30多年的深入研究,很多全國(guó)500強(qiáng)企業(yè)使用Parasoft的產(chǎn)品實(shí)現(xiàn)了軟件快速、高質(zhì)量的交付。