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