

VectorCAST是Vector旗下一款權威的用于嵌入式C/C++代碼的動態白盒測試工具集,可實現高度自動化的動態單元測試和集成測試(VectorCAST/C++)和部分系統測試(VectorCAST/QA)。VectorCAST遵循ASPICE、功能安全ISO26262等行業標準,適用于對自身有高安全性和高可靠性要求的嵌入式系統,可以降低開發風險,提高代碼質量。VectorCAST最大的特點同時也是相比于其它同類工具最大的優勢,就在于最大程序的自動化和更適合用于嵌入式環境。
北匯信息作為Vector的合作伙伴,為中國客戶提供專業的動態代碼測試解決方案。
VectorCAST基于V模型開發,在功能上可以覆蓋軟件測試的各個環節:需求分析、單元測試、集成測試、覆蓋率分析、回歸測試、部分系統測試。針對客戶不同的代碼測試需求,VectorCAST為客戶提供了對應的解決方案,其中包括VectorCAST/C++和VectorCAST/QA工具;VectorCAST/C++用于單元/集成測試,VectorCAST/QA用于系統測試。

圖1 V模型
VectorCAST/C++
VectorCAST/C++是一套高度自動化的軟件測試解決方案,支持在Windows和Linux系統中穩定運行,用于C\C++代碼的動態單元測試和集成測試,能顯著降低測試過程中所必需的時間、工作量以及成本。

圖2 VectorCAST/C++ 原理
VectorCAST/C++特性:
1)需求管理
VectorCAST支持集成多種在線需求管理工具,如Codebeamer/Doors/IBM/Polarion/等,同時支持本地CSV格式需求管理文檔導入;支持基于需求創建測試用例并與需求鏈接,實現測試用例和測試需求的雙向追溯。

圖3 需求管理集成
2)測試環境創建
VectorCAST支持自動生成測試環境套件并預先構建測試套件;支持集成實際編譯鏈進行測試,包括業內主流的編譯鏈以及目標芯片,如Greenhills,Keil,Hightec,Tasking,Windriver等300多種主流交叉編譯環境,并提供對應的編譯配置包(VectorCAST/RSP)。通過結合VectorCAST/C++與VectorCAST/RSP配置包,既可以實現通過UDE,Trace32等調試器聯調后在嵌入式目標板上進行實時測試,也可以完美脫離硬件,在仿真模擬器上直接進行實時應用測試。測試用例在主機設計,在嵌入式目標環境運行,實現嵌入式目標環境的實時測試。
VectorCAST/C++支持部分編譯器:

圖4 編譯器支持(部分)
3)測試用例創建
VectorCAST/C++既可以通過圖形化界面編寫測試用例,也支持用戶以多種方式自動生成測試用例,如基于語句/分支/MCDC覆蓋度方式自動生成測試用例、基于等價類和邊界值方式自動生成測試用例、基于ATG方式自動生成測試用例,還可以基于分類樹生成測試用例,基于CSV數據列表批量生成測試用例。且每條測試用例之間都互相獨立,不具備耦合。

圖5 測試用例創建
4)自動插樁處理
VectorCAST/C++插樁算法強大,支持基于被測代碼自動生成樁函數,無需手動編寫或選擇測試樁代碼,同時支持對樁函數進行編輯以滿足用戶需求;支持手動插樁,包括對標準庫函數以及自定義函數等進行手動插樁。

圖6 自動插樁/手動插減樁
5)覆蓋度統計分析
VectorCAST/C++提供多種覆蓋度指標,包括語句(statement)覆蓋、分支(Branch)覆蓋、MC/DC覆蓋、Function(函數)覆蓋、Function Call(函數調用)覆蓋以及相關覆蓋度的組合覆蓋,以滿足不同標準對覆蓋度的不同要求,針對解析后的被測代碼,可通過不同顏色標注當前代碼的覆蓋狀態。VectorCAST/C++也支持CBA手動覆蓋功能,用于滿足無法通過測試用例覆蓋的代碼覆蓋度要求。

圖7 VectorCAST覆蓋率統計
6)參數類型解析
VectorCAST/C++支持解析C/C++代碼中各類基礎數據類型及復雜數據類型,同時完美支持C++11,C++14以及C++17的特性,并且針對大部分C++的特性,可實現圖形化界面操作。

圖8 參數類型解析
7)回歸測試
VectorCAST/C++具有強大的回歸測試的功能,可通過GUI->Incremental或命令行的方式執行測試,以增量的方式重構測試環境,檢查代碼變更,只執行被影響到的測試用例,節約項目測試時間,降低項目版本維護的成本。

圖9 回歸測試
8)支持Probe Point功能,在測試代碼中插入代碼以實現故障注入,局部變量打印,斷點調試功能

圖10 Probe Point功能
9)測試報告
VectorCAST/C++支持多種輸出格式、多種測試類型的中英文報告。
10)CI/CT集成
VectorCAST/C++支持與Jenkins等CI工具集成,提供Jenkins官方插件,可實現一鍵集成,無需編寫集成腳本,也支持通過Jenkins Pipeline并行執行多個測試環境,節省測試運行時間,還可以通過命令行進行集成,通過腳本來執行測試用例。

圖11 jenkins集成
11)VectorCAST/C++支持超輕量化工程文件管理,即僅需幾十或上百Kb的配置文件,便可實現超大型項目的快速完整遷移以及分布式團隊協作功能。
VectorCAST/QA
VectorCAST/QA主要用于嵌入式開發的自動化系統測試,為白盒系統測試提供了一個集成的工作流程。VectorCAST/QA 通過集成用戶軟件編譯/構建環境和已有的測試基礎架構,進而獲取軟件在系統測試中的關鍵指標,如代碼復雜度、代碼變更頻率、測試用例狀態和代碼覆蓋度等。
VectorCAST/QA的特性:
1)在系統測試期間自動捕獲和維護代碼覆蓋率數據,幫助用戶快速識別未被測試的部分,并確定提高測試完整性所需的資源;
2)基于變更的測試,自動計算提供完整測試更改所需的最小測試集,或者是甄別出因代碼變更而受影響的測試用例并重新執行;
3)VectorCAST/QA本身不能生成測試用例,但是VectorCAST/QA可以沿用客戶已有的系統測試的框架和測試用例;
4)自動對客戶的源碼進行插樁,添加代碼覆蓋率接口;添加覆蓋率接口,會使得源代碼有所膨脹,插樁越細致,代碼膨脹率越大,所以VectorCAST/QA對系統有一定的要求;
5)與Jenkins集成,在Jenkins中持續不斷執行測試,實現持續集成開發/測試。

圖12 VectorCAST/QA
資質認證
VectorCAST通過了南德TüV認證,遵循相關的行業認證標準,比如汽車行業內熟知的ASPICE、ISO26262(ASIL D)、IEC 61508、EN50126等等,而且VectorCAST也是目前市面上“唯一”一款針對大/小版本進行認證,并免費提供給用戶《Safety Manual》協助其認證的代碼測試工具集。

VectorCAST部分客戶
