Visual
Unit提供軟件代碼測試功能,可以直接對代碼單元測試,分析當前的項目代碼是否有錯誤,是否可以優化菜單,軟件已經提供了測試案例,加載官方的案例工程到軟件就可以執行分析測試,支持導入工程數據、執行函數測試、執行類/文件測試、執行全體測試、執行集成/部件測試,可以在統計界面查看到測試的數據,可以在報告菜單上統計本次測試的全部結果,從而導出測試報告,方便以后對比其他單元測試項目結果,適合需要對c++項目測試的朋友使用,Visual
Unit官方已經提供了詳細的教程內容,新用戶也可以快速執行單元測試!
Visual Unit 4,簡稱VU4,適用于C和C++單元測試、集成測試、嵌入式測試、回歸測試、白盒測試,以及測試驅動開發(可視編程)。VU4具備以下功能特性:
一、完全自動化操作功能
完全的表格驅動,測試工作=填表格。
表格中填寫一個數據,相當于完成N行代碼。VU自動生成測試驅動代碼、樁代碼等。
表格支持復合類型、數組、指針,多級指針可設置任一級的空指針。
對于不便于表格驅動的數據,如鏈表、映射表,提供了數據轉換接口,轉換為便于表格驅動的數據。
二、自動化用例生成功能
一鍵即可實現測試用例的自動生成,且自動用例生成,最高可實現100%全覆蓋。
自動用例取值包括數字的邊界值、空字符串、空指針等,以檢測邊界輸入造成的崩潰、超時、異常等問題。(注:自動用例生成功能不能識別程序員用意,僅能跟著代碼邏輯完成用例的設置)
三、輕松完成全覆蓋功能
VU擁有用獨創的用例設計器,根據用例設計器提示,便可輕輕松松實現全面覆蓋;
支持語句、條件值、判定、MC/DC、分支、路徑覆蓋的自動統計;
所有未覆蓋的邏輯單位具有清晰的標示。
四、開發效率至少可提升1倍
人工智慧完成代碼開發,測試工作由VU4自動完成,即一邊開發,VU則一邊自動更新測試代碼并執行測試,通過VU可查看測試結果,包括:程序行為描述,用例的輸入、所執行的代碼輸出等。減少來來回回查找錯誤修改錯誤的時間,給人工騰出更多時間開發。
五、底層輸入——無須調用底層函數、無須打樁便可輕松控制底層函數在測試中需要的數據。
支持在表格中控制底層函數產生測試需要的數據,包括返回值、出參、全局變量、成員變量;
支持在表格中控制底層函數在某些用例產生指定的數據,在另一些用例調用實際代碼;
支持在表格中判斷底層函數的調用次數;
支持在表格中控制底層函數直接跳過;
支持在表格中控制間接調用的函數產生測試需要的數據;
以上功能支持任意數據類型,且不需要編寫代碼,不污染產品代碼。
六、局部變量測試難題,也不需手工編寫代碼,可隨意控制局部輸入與局部輸出。
支持將局部數據轉換為可在表格中設置輸入的變量;
支持多次賦值,解決死循環之類的問題;
支持在任意指定位置打印局部數據,并支持對局部數據的結果進行判斷;
以上功能不需要手工編寫代碼,更不污染產品代碼。
七、輕易實現回歸測試,可維護性強
產品代碼修改時,測試代碼自動更新,測試代碼不需要手工維護;
測試數據與測試代碼分離,便以維護。
八、測試數據可保存可復用于其它函數
可以將測試數據保存到文本文件/excel,其他函數可以從文本文件/Excel中導入數據。
九、測試報告支持自定義
測試報告數據信息完整,包括覆蓋率、用例數、測試情況、測試狀態等。
可以將測試報告導出成word或HTML格式。測試數據可以導出在excel表格中。
十、復雜類型可轉換為簡單化數據類型
通過回調賦值,可以將復雜的數據簡單化,讓數據填寫時更加便捷。
十一、可靈活選擇需要測試函數、集成函數和屏蔽函數文件
在建立工程時可以通過標記為T/N/X來靈活選擇測試文件,T表示要測試的文件,N表示不測但會調用的文件,X表示不測試也不需要調用的。
十二、對嵌入式項目的支持
可以支持絕大多數嵌入式項目。VU自動解決各種嵌入式項目的平臺差異和編譯差異,自動模擬底層調用包括操作系統API。
利用VU開發嵌入式項目,在主要的開發過程中,可以實現并行、脫板開發,大幅提升開發效率。
十三、輕松實現linux/unix項目的測試
可在win系統,通過遠程控制,直接測試linux/unix項目。遠程測試,是指針對在windows上開發的linux項目,進行單元測試和可視編程。測試代碼在linux上編譯和執行。
1、構建測試用例的成本
表格驅動邏輯塊的輸入輸出,不需要編寫測試代碼和樁代碼,支持面向邏輯塊的測試
2、完成覆蓋的成本
自動計算近似用例和修改提示,根據提示修改近似用例可以快速實現覆蓋
3、對編程效率的促進
程序行為可視,列出最新更新的函數,支持Easy TDD快速編程
4、維護成本
測試代碼完全自動生成,自動維護
5、數據的可重用性
數據與測試代碼分離,易以重用
1、啟動VU-Setup_v4.7.exe就可以執行軟件安裝
2、設置軟件的安裝地址D:Visual_Unit_4
3、進入軟件就可以創建新的測試項目,也可以打開軟件提供的示例工程文件
4、使用演示License只能測試示例代碼(可以新建工程測試/Samples/Demo/中的代碼)您也可以為其他項目建立W工程,但需要正式License才能正常測試。
5、產品項目開發環境設置界面:ADS1.2、AVR、CCS、CodeWarrior、CS+ for CA,CX、CubeSuite、DS-5、EVC 4.0、G++4
6、數據導入界面,支持從工程文件或makefile導入數據,或從makefile生成的命令行導入數據,cmake生成的makefile
7、執行make -B -k-n >xxx.txt,可生成文件xxx.txt,點擊“選擇文件”,選擇xxx.txt文件。如xxx.txt是從他處拷貝的,則需同時拷貝CMakeFiles文件夾下的*.rsp文件,并保持這些文件原來的目錄結構。
8、第三方庫頭文件根目錄(用;分隔)
如使用了第三方庫(指可以鏈接.a或lib的模塊,不包括編譯器的頭文件),請將這些庫的頭文件的根目錄添加在這里。使用多個第三方庫時,只需添加共同的根目錄。
9、將全部文件設為隔離(X),手動選擇測試目標
也可以點擊“下一步”跳過本步驟。
即使由工程文件導入數據,也可以在后續步驟中手工調整各項設定,包括重設測試目標。
10、請謹慎選擇!建議選擇到包含項目所有源文件和頭文件的最低目錄,例如,E:/a/b/proj,proj下有inc、src、lib等子目錄,則根目錄應設為E:/a/b/proj。根目錄可以重設(例如,測試工程拷到其他機上工作時,根目錄可能不同),但必須指向相同的子目錄。同一項目的所有測試工程,根目錄也應該指向相同的子目錄。
11、本地工程(可在遠程設置中指定根目錄,工程遷移只需拷貝此文件夾)
開發過程中,編譯中間文件(如VC.obj,GCC的.o)保存目錄
12、常規頭文件目錄(產品項目頭文件、嵌入式環境頭文件,---自動插裝/打樁--)
13、預處理定義(用,或;分隔,用=賦值)
_MT,_WIN32,WIN32,_WINDOWS,_MSC_VER=1200,_M_IX86=500,_MSC_EXTENSIONS,
_INTEGRAL_MAX_BITS=64,_DEBUG,DEBUG
14、其他選項(需按命令行的格式填寫,如VC系列由/開始,GCC由-開始,用空格分隔)
15、鏈接
庫文件搜索目錄
$(vc6_dir)/vc98/lib/
$(vc6 dir)/vc98/mfc/lib/
鏈接以下庫(用或分隔)
忽略以下庫(用或;分隔)
其他鏈接選項(需按命令行的格式填寫,如VC系列由/開始,GCC由-開始,用空格分隔)
命令行
16、高級設置
替換:屏蔽/轉定義關鍵字或代碼片斷,主要用于在PC上測試嵌入式項目。
忽略:指定不展開的宏、不測試的函數及不生成樁的函數,通常無須修改。
擴展:其他選項,通常無須修改。
敏捷開發設置:用于TDD(測試驅動開發)、VTDD(Visual TDD)的設置,可按規則指定不測試的函數。
集成測試設置:集成測試方面的設定。
強制拷貝文件:強制拷貝文件到VU工程,通常用于在源文件未建立的新項目中分配頭文件。
添加內置類型:解釋過程如出現"引用的類型xx未定義"的警告,可在這里添加定義。
17、請點擊“添加”,設置需屏蔽或替換的關鍵字或代碼片斷。一個項是另一個項的一部分時,后者應在前面,如long long和long long int都替換為_int64,則long long int必須放在前面。
18、忽略
不展開的宏定義(用,分隔,只需填寫宏名稱)
ASSERT, ASSERT_VALID, TRACE, TRACEO, TRACE1, TRACE2, TRACE3, new, DEBUG_NEW,
_T, _TEXT, _FILE_,_FUNCTION_,LINE_
將帶分支或復雜的宏設為“不展開”,可以避免VW將這些宏展開造成分支和路徑增多。
內容引用名稱的宏不展開(如#define Var gObj.Var,展開可能造成編譯錯誤)
19、擴展選項
頭文件
生成樁代碼時將庫頭文件放在前面
自動為頭文件添加#ifndef XXXX #define XXXX ... #endif宏,避免頭文件被重復編譯
數據表格特別標識符(為維護測試數據統一,建議不要修改。流類型修改在重新打開工程后生效)
20、這里是軟件的幫助功能,如果你需要查看軟件的全部教程內容就可以在這里打開幫助
禁止初始化
加入表格的變量,缺省會自動初始化(調用構造子函數或清零),對于在定義中已初始化的變量,可填寫UNINIT,禁止初始化,但表格中仍然可以對個別成員賦值。
例如,以下代碼
全局變量fpData的兩個成員,在定義時已初始化為分別指向已實現的函數func和func2,如果在測試時不希望改變它們的值,則可以在表填中填UNINIT,如下圖,仍然可以給其他成員設值:
fpData.fp1()實際調用的是函數func,如果要給func設定底層輸入,需要在左邊函數代碼窗口,右鍵菜單選擇“添加間接底層輸入”,直接給函數func設定底層輸入,如下圖用例2:
從命令行導入數據
從命令行導入數據的優勢
命令行是指編譯命令行,其內容包括了源文件編譯時需要的所有信息,因此,從命令行導入數據,可以讓VU準確完整地獲得編譯信息,減少測試工程可能產生的錯誤。
使用命令行導入方式建立的測試工程,通常不須要作任何的手動設置(指不需要修改工程屬性)。
命令行導入數據方式,適用于超大型項目。
生成命令行文件
目前只支持由cmake生成的命令行。
用以下參數調用make,即可生成命令行文件:
make -B -k -n >filename.txt
其中,-B,表示全部重新生成,-k表示有錯誤也繼續,-n表示只生成命令行,不實際編譯,>filename.txt,表示將輸出結果保存到filename.txt文件。
生成命令行過程中,可能生成一些依賴文件,如.rsp文件,這些文件在建立測試工程時同樣需要使用,因此,較好的方式是,建立一個專門用于生成命令行的build目錄,如build2。
建立測試工程時導入數據
建立測試工程時,在導入數據界面,選擇從命令行文件導入,如下圖。后續的步驟可以一路下一步。
公共的編譯和鏈接選項無效
由于每個編譯單元具有獨立且完整的命令行,命令行也具有完整的鏈接信息,因此不再需要公共的編譯選項和鏈接選項,以下紅框內的公共編譯和鏈接選項無效,但綠框內的選項仍然有效(用于處理特別情形)。
Linux項目遠程測試
遠程測試簡介
遠程測試,是指針對在windows上開發的linux項目,進行單元測試和可視編程。
測試代碼在linux上編譯和執行。
遠端工具的安裝與啟動
VU根目錄下,有一個utrt64(用于64位系統)和utrt32(用于32位系統)文件夾,這是遠端工具,utrt的含義是:Unit Test Remote Tool。
安裝:將utrt文件夾拷貝到linux某個位置,例如桌面,不用安裝。
啟動:在utrt文件夾下打開終端工具,輸入./utrt。如下圖。啟動后,顯示utrt的ip地址和監聽端口號。
VU端的設置
在VU“代碼”菜單,選擇“遠程設置”,顯示如下圖所示界面:
ip地址和端口號填寫utrt顯示的ip和port。
本機ip地址和端口號:多網卡可能需要指定本機ip,本機端口號實際并未使用,可以不填。
ip和端口號設置完成后,點擊“連接”,即可連接utrt并檢測網絡狀態。
遠程工作目錄:linux端保存測工程的缺省目錄。
本地工作目錄:本地保存測試工程的缺省目錄。
庫頭文件目錄,在建立工程時,將直接添加到“工程屬性>頭文件>庫頭文件搜索目錄”中,這部分要設置完整且正確 ,點擊GCC/G++可自動查詢并填寫。
linux庫頭文件目錄查詢方法
打開終端,輸入:echo 'main(){}' | gcc -E -v -
結果如下圖所示。
用gcc或g++編譯一個.c文件或.cpp文件,使用-v參數,也可以得到類似的結果,如gcc -v test.c或g++ -v test.cpp。
從linux獲得編譯命令行
對于linux項目,編譯命令行需在linux下生成。方法:
make -B -k -n >filename.txt
建立測試工程
建立測試工程時,開發環境選擇VSCode-Linux,如果linux為64位,則選項帶-64字樣的模板,否則選擇帶-32字模的模板,如下圖。點擊“下一步”會彈出遠程配置界面,可以確認一下遠程配置是否正確。然后,進入導入數據界面,選擇從命令行文件導入,并從映射盤下選擇上一步生成的命令行文件。再后續的步驟可以一路下一步。建立工程后,使用上與本地測試方式基本上沒有區別。以后打開工程前,記得先啟動utrt!。
調試
點擊調試,將編譯調試工程, 編譯成功后,顯示以下信息“Please use gdb to debug: xxxx”,xxxx為調試文件的路徑??捎胓db運行此文件進行調試。目前未實現windows端的IDE方式調試。
獨立執行測試(持續集成)
獨立執行概述
是指脫離VU環境, 以命令行方式執行測試,并生成測試報告以及覆蓋統計報告。
獨立執行可集成到Jenkins之類的持續集成平臺,按預設的周期自動執行測試。
執行測試前,會自動檢查源代碼的修改,對于更新過的代碼,會自動刷新測試代碼,實現自動檢測代碼修改是否引入了新的錯誤。
生成獨立執行工程
VU“工程”菜單,選擇“導出獨立執行的工程”,彈出以下窗口時,導出完成:
上圖的提示信息列出了獨立工程的文件夾(TestRun文件夾)保存位置,TestRun文件可以拷到沒有VU的環境下工作,但執行過程需要編譯器、鏈接器、make,并且,這些應用程序的路徑均應已在系統的PATH環境中設定,可以直接調用。TestRun文件夾具有如下圖所示的內容:
上圖是在linux環境下執行測試的工程,windows環境下有些文件名稱不同:
coder.bin(linux) => Coder.exe(windows)
outrun.bin(linux) => OutRun.exe(windows)
maketest.sh(linux) => maketest.bat(windows)
路徑修改
每次執行測試前,會自動檢查代碼修改并刷新測試代碼。如果流水線環境下有些路徑與當前工程不同,可打開RunTest文件夾下的dirs.txt修改,格式如下,每行一個目錄,順序無關,其中,product_dir為產品項目根目錄(對應:VU工程屬性>常規>產品項目根目錄),include_dir為編譯環境(如gcc)的頭文件目錄(對應:VU工程屬性>頭文件>庫頭文件目錄),lib_dir為靜態庫的搜索目錄(對應:VU工程屬性>鏈接>庫文件搜索目錄 ,run_dir為動態庫目錄),environment_variable為環境變量,用:分隔名稱與值(如environment_variable:work_dir:c:/abc/myproject/src,表示名為work_dir的環境變量,值為c:/abc/myproject/src):
product_dir:/home/wt/projects/Demo-Linux/
include_dir:/usr/local/gcc/lib/gcc/x86_64-linux/7.5.0/include/
include_dir:/usr/local/include/
include_dir:/usr/local/gcc/include/
include_dir:/usr/local/gcc/lib/gcc/x86_64-linux/7.5.0/include-fixed/
include_dir:/usr/include/
lib_dir:/usr/wt/projects/Demo-Linux/lib
run_dir:-rpath,/usr/wt/so
environment_variable:work_dir:c:/abc/myproject/src
執行測試
執行以下文件,即可執行測試:
linux環境:outrun.bin。
windows環境:OutRun.exe
執行過程會自動調用coder.bin(或Coder.exe)刷新測試代碼。
報告文件
測試報告:test.xml
覆蓋統計文件:cov.xml
文件內容與格式與gtest生成的基本一致,持續集成工具中,用于顯示gtest報告的插件可以兼容以上的告。
檢查獨立工程是否有錯誤
執行outrun.bin或OutRun.exe,如果能生成text.xml和cov.xml,表示執行成功。如果失敗,可用文本編輯工具打開maketest.sh或maketest.bat,在最后加一行:pause,保存,然后 執行它,查看輸出信息一般可以分析出失敗原因,常見的原因是找不到make或編譯器、鏈接器。
V4.7 更新 (20220309)
1、增加了從命令行導入數據來建立測試工程的功能
2、增加了遠程測試功能,用于針對在windows上開發的linux項目,進行單元測試和可視編程
3、增加了命令行方式執行測試功能,可用于將單元測試集成到持續集成工具中
4、增加了用例數據恢復功能(數據表格右鍵菜單“恢復用例數據”)。
5、增加了導出json格式用例數據的功能
6、撤消了“導入空閑用例”功能,增加了“拷貝一行數據”及“拷貝整個數據表”功能,提升了數據復用及數據恢復方面的便利性,也可以更好地支持VTDD(在函數原形不斷修改時不丟失數據)
7、增加了“禁止初始化”功能,。
8、覆蓋統計增加了“調用返回覆蓋率”。
編程工具 /
下載編程工具 /
下載編程工具 /
下載編程工具 /
下載編程工具 /
下載編程工具 /
下載編程工具 /
下載編程工具 /
下載編程工具 /
下載編程工具 /
下載
網友評論