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为调试文件的路径。可用gdb运行此文件进行调试。目前未实现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、覆盖统计增加了“调用返回覆盖率”。
编程工具 /
下载编程工具 /
下载编程工具 /
下载编程工具 /
下载编程工具 /
下载编程工具 /
下载编程工具 /
下载编程工具 /
下载编程工具 /
下载编程工具 /
下载
网友评论