VectorCAST/QA是VectorCAST產(chǎn)品族中用于統(tǒng)計系統(tǒng)測試過程中代碼覆蓋度的軟件工具。為降低配置難度,傳統(tǒng)的VectorCAST/QA系統(tǒng)測試項目通常使用手動操作方式完成以下步驟:
>創(chuàng)建系統(tǒng)測試環(huán)境
>添加待插裝源碼
>設(shè)置覆蓋度類型并插裝
>導(dǎo)入或查看覆蓋度數(shù)據(jù)
對于使用Bazel構(gòu)建的大型項目,當(dāng)需要統(tǒng)計覆蓋度的源碼量大時,手動添加被測源碼需要了解項目組織結(jié)構(gòu)。更快捷的方法是在Bazel構(gòu)建的過程中,由VectorCAST/QA自動完成創(chuàng)建測試環(huán)境,根據(jù)構(gòu)建目標(biāo)自動添加插裝的源碼列表,并完成插裝、測試結(jié)果加載,以及生成測試報告的工作。
VectorCAST的JIT(Just In Time)功能可以實現(xiàn)上述目標(biāo)。VectorCAST JIT功能提供一系列VectorCAST工具的API接口,可用于在項目構(gòu)建時完成上述步驟。下面將具體介紹在Ubuntu發(fā)行版本中,如何實現(xiàn)VectorCAST/QA與Bazel構(gòu)建工具的集成方法。
01配置集成
下載VectorCAST/QA的Bazel規(guī)則集
VectorCAST/QA的Bazel規(guī)則集是將VectorCAST/QA的JIT API基于Bazel構(gòu)建工具進行更高層次的封裝,以便在Bazel build或Bazel test構(gòu)建過程中更便捷的調(diào)用JIT API。因此,需要將此規(guī)則集下載到測試機中。
導(dǎo)入VectorCAST規(guī)則集
打開項目對應(yīng)的.bazelrc文件,導(dǎo)入VectorCAST/QA的Bazel規(guī)則集:
import{absolute_or_local_path/to/rules_vectorcast}/vectorcast.rc
上述語句中,斜體部分應(yīng)改為插件文件vectorcast.rc的實際路徑,可以是相對于當(dāng)前.bazelrc的相對路徑,也可以是絕對路徑。示例如下:

圖1:bazelrc導(dǎo)入vectorcast.rc規(guī)則集
配置Bazel項目
為了使用VectorCAST/QA的JIT功能,需要對項目進行配置。
有兩種配置方法:
方法一:配置WORKSPACE文件,添加對VectorCAST/QA JIT的支持;
方法二:當(dāng)項目開啟Bzlmod時,配置MODULE.bazel來添加對VectorCAST/QA JIT的支持。
配置WORKSPACE
打開項目的根目錄中的WORKSPACE文件,添加如下配置:
local_repository(
name = "rules_vectorcast",
path ="{absolute_or_local_path/to/rules_ vectorcast}"
)
load("@rules_vectorcast//:deps.bzl", "rules_vectorcast_dependencies")
rules_vectorcast_dependencies()
load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")
bazel_skylib_workspace()
load("@rules_vectorcast//:workspace.bzl", "vectorcast_tools")
vectorcast_tools(
name = "vectorcast_tools",
)
以上配置中,斜體部分應(yīng)改為插件文件vectorcast.rc的實際路徑,可以是相對于當(dāng)前WORKSPACE的相對路徑,也可以是絕對路徑。
示例如下:

圖2:配置WORKSPACE
配置MODULE.bazel
打開項目的根目錄中的MODULE.bazel文件,添加如下配置:
bazel_dep(name = "rules_vectorcast")
local_path_override(
module_name = "rules_vectorcast",
path = "{absolute_or_local_path/to/rules_ vectorcast}"
)
vectorcast_tools_extension=use_extension("@rules_vectorcast//:extensions.bzl", "vectorcast_tools_extension")
vectorcast_tools_extension.tools()
use_repo(vectorcast_tools_extension, "vectorcast_tools")
以上配置中,斜體部分應(yīng)改為插件文件vectorcast.rc的實際路徑,可以是相對于當(dāng)前MODULE.bazel的相對路徑,也可以是絕對路徑。
示例如下:

圖3:配置MODULE.bazel
配置構(gòu)建規(guī)則
配置完Bazel項目和Bazel工具本身使用VectorCAST規(guī)則集后,還需要在構(gòu)建目標(biāo)對應(yīng)的BUILD.bazel文件中加載該規(guī)則集。具體的方法如下:
找到Bazel build構(gòu)建目標(biāo),或者build test目標(biāo)所在的BUILD.bazel文件
編輯BUILD.bazel文件,首行添加load語句加載指定規(guī)則。
配置如下:
load("@rules_vectorcast//:def.bzl", "vectorcast_binary")
在文件末尾添加vectorcast_binary配置,用于生成包含覆蓋度插裝代碼的可執(zhí)行程序。其中,
target_to_instrument指原始構(gòu)建目標(biāo)的名稱;
name為新生成的包含插裝代碼的新可執(zhí)行程序的名稱:
vectorcast_binary(
name = "manager_driver_instrumented",
target_to_instrument = ":manager_driver"
)
在下圖示例中:
構(gòu)建目標(biāo)是可執(zhí)行程序:manager_driver
首行使用load加載bazel規(guī)則
末尾配置插裝生成新可執(zhí)行程序的名稱

圖4 配置目標(biāo)的構(gòu)建規(guī)則
配置構(gòu)建指令
使用VectorCAST/QA JIT功能還需要在最終的Bazel構(gòu)建指令中開啟VectorCAST JIT功能。
只需要在最終的Bazel build或者Bazel test指令中添加以下選項:
--config=vectorcast:開啟VectorCAST JIT
--vectorcast_compiler_tag=
目前可支持Bazel集成的編譯鏈Tag列表如下:
GNU_CPP_X
GNU_CPP98_X
GNU_CPP03_X
GNU_CPP11_X
GNU_CPP14_X
GNU_CPP17_X
GNU_CPP20_X
CLANG_CPP_X
CLANG_CPP98_X
CLANG_CPP03_X
CLANG_CPP11_X
CLANG_CPP14_X
CLANG_CPP17_X
CLANG_CPP20_X
--vectorcast_coverage_type=
STATEMENT+BRANCH:覆蓋度類型,可選類型有:
STATEMENT+MC/DC
STATEMENT+BRANCH
STATEMENT
FUNCTION
MC/DC
BRANCH
FUNCTION+FUNCTION_CALL
下圖為示例項目中生成可執(zhí)行程序的腳本。在Bazel build指令中添加了如下配置,以開啟VectorCAST JIT插裝,使用編譯鏈為GNU C++編譯鏈;插裝覆蓋度類型為語句和分支:
--config=vectorcast--vectorcast_compiler_tag=GNU_CPP_X--vectorcast_coverage_type=STATEMENT+BRANCH

圖5:配置Bazel構(gòu)建指令
注意:對于Bazel 7.1.2及更低版本,需要額外添加配置:--spawn_strategy=local
02構(gòu)建項目
完成前述配置后,即可開始構(gòu)建項目。以下是示例項目的完整構(gòu)建腳本,包含構(gòu)建目標(biāo)可執(zhí)行程序、模擬手動執(zhí)行用例、以及加載測試數(shù)據(jù)等所有操作。

圖6:完整構(gòu)建腳本
進入項目目錄,直接執(zhí)行project_build.sh,等待構(gòu)建完成。

圖7:構(gòu)建示例項目
構(gòu)建完成后,會打印最終生成的HTML報告完整路徑信息,如下圖所示。

圖8:測試報告路徑
使用瀏覽器打開management_report.htm測試報告,內(nèi)容如下:

圖9:測試報告示例
互動專區(qū)
歡迎在留言區(qū)提出您的意見和建議,參與即有機會獲得精美禮品。
包括但不限于:
>期望未來VectorCAST產(chǎn)品支持哪些新特性。
>期望以何種方式(圖文或視頻)更深入了解VectorCAST產(chǎn)品的哪些特性。
我們將從參與互動的用戶中隨機抽取 5 位,送出一份精美定制禮品,期待您的建議!
-
接口
+關(guān)注
關(guān)注
33文章
9527瀏覽量
157103 -
代碼
+關(guān)注
關(guān)注
30文章
4970瀏覽量
74017 -
Vector
+關(guān)注
關(guān)注
3文章
100瀏覽量
10046
原文標(biāo)題:VectorCAST/QA與Bazel集成配置方法
文章出處:【微信號:VectorChina,微信公眾號:Vector維克多】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
請問在NXP板的BSP QA過程中采用了哪些具體的測試方法?
NPA1003QA射頻晶體管
tflite mcu怎么使用
onnxruntime-1.8.2-r0 do_package_qa:QA 運行發(fā)現(xiàn)致命錯誤怎么解決?
電位器整定的定時器專用電路QA640896 QA640892
電位器整定的定時器專用電路QA640896/QA640892
基于知識圖譜的QA系統(tǒng)研究
LV52117QA 用于LCD面板的雙輸出DC-DC轉(zhuǎn)換器
LV5762QA 降壓型開關(guān)穩(wěn)壓器
QA3000加速計的數(shù)據(jù)手冊免費下載
VectorCAST/QA如何在LiteOS-A內(nèi)核上實現(xiàn)系統(tǒng)白盒測試
直播預(yù)告 | VectorCAST-嵌入式軟件代碼自動化測試方案
VectorCAST 對基于***的軟件代碼開發(fā)支持
VectorCAST/QA與Bazel集成配置方法
評論