王朝百科
分享
 
 
 

Visual Unit 2

王朝百科·作者佚名  2010-03-13  
宽屏版  字体: |||超大  

Visual Unit是什么?

Visual Unit,简称VU,是一种可视化、自动化、标准化、高效率的C/C++单元测试工具,功能强大并且易学易用。

为什么要进行单元测试?

测试是保证软件产品质量的基本手段,单元测试就是将代码单元与其他代码隔离进行测试,相当于电视机工厂对元器件的测试。软件单元测试可能比电视机的元器件测试有更高必要性和价值,因为代码单元是人工编写的,"故障率"更高,软件复杂度通常也更高,导致在集成后查找代码错误的单位成本也高得多。

单元测试为什么难于实施?

工厂在组装电视机前都会对元器件进行测试,这是保证质量减少后续测试成本的最好选择,但很多软件开发企业都没有实施单元测试,为什么?成本太高或耗时太多工期不允许,成本高或耗时多的原因之一,是缺少测试效果好测试效率高的单元测试工具。

传统的单元测试工具大致分为两类:手工类和自动类,自动类使用自动静态分析和自动生成测试用例进行动态测试,只能发现有特征错误,而有特征错误一般不会超过20%,大多数代码错误都是自动系列无法发现的;手工类理论上可能发现所有错误,但要人工编写测试代码,耗费时间一般是编码时间的一倍到几倍。有些自动单元测试工具也提供手工方法,当然也要面对手工方法耗时多的问题。即使不考虑价格,由于自动类的测试效果远不能满足需要,更多企业还是选择手工类,投入编码时间的一至几倍来进行单元测试,不但成本高昂,而且常常难于实施。

在开发工具领域内,单元测试工具是最薄弱的一环,多年来都没有太大的进展。对于大多数软件开发企业来说,单元测试也是开发过程中最薄弱的环节。

Visual Unit介绍

经过五年的研发,我们创新了单元测试理论,找出了一套既保证测试效果又具有很高效率的方法,并完整地实现了这套方法,开发出新一代单元测试工具Visual Unit。

Visual Unit 1.0于2005年8月底公开测试,10月初发布1.0正式版。V2.0是在V1.0大量应用的基础上,完全重新设计的版本。

评价单元测试工具的应用价值,主要有几个指标:可用性、测试效果、测试效率,开发效率。

可用性:高度耦合的代码难于分割测试一直是单元测试的主要难点,VU2具有完善的桩功能,包括:补齐(自动生成未定义符号)、隔离(自动生成桩代码替换底层代码)、控制(在用例中随意控制底层代码的行为),从开始编码到升级维护的各个阶段,均可对任意层次、范围的代码实施分割测试,对被测试代码完全没有可测性要求。

测试效果:测试效果通常用白盒覆盖率来衡量,Visual Unit独有的"基于现有用例找出遗漏用例"的技术,可以轻松实现100%的语句、条件、分支、路径覆盖。这里说的是"实现"这些覆盖,而不仅仅是"统计"出覆盖率,仅仅统计出覆盖率意义并不太大,剩余的往往是最难的,没有自动工具的支持,找出遗漏用例是很困难的。

测试效率:自动生成测试代码和用例框架;功能强大的用例编辑器可快速建立用例集;无需编写代码即可随意控制底层代码行为;使用用例设计器高效找出遗漏用例;自动生成边界测试用例。能自动化的都已自动化,人的工作量已压缩到最低限度,保证了测试效率。

开发效率:VU还为高效开发调试提供支持。编码过程中,自动同步更新,随时可以执行测试;自动显示输入输出数据,可用简单语法输出任意中间变量、表达式的值,自动显示代码执行状况,使程序行为一目了然,帮助整理和验证编程思维,并能快速排除错误;增强调试器功能,包括:可视化选择调试输入、自动中断、无限制重复或后退、调试过程中切换除入。无需增加工作时间和劳动强度,在原来用于编码的时间内可以同时完成编码和基本单元测试。

从"桩控制"功能看VU2的技术领先地位

VU的多数功能皆为独有,难于与其他工具一对一比较,但"桩控制"在VU之前就具有成熟的技术,很多单元测试工具都已实现此功能,还有专门产品,因此可以作为判断VU技术地位的一个参考点。"桩控制",或者Stub、Mock,目的都差不多,都是在用例中控制底层代码的行为,即在底层代码未实现、被隔离、或不符合测试要求时,通过一定的技术手段模拟底层代码的行为。对于VU来说,"桩控制"是一个重要功能,但只是一个三级功能(用例编辑器下的用例助手下的一个功能),仅仅这一个功能,就具有多项重要的技术进步:

不需要编写代码;

不仅可以设定返回值,还可以设定输出参数、成员变量、全局变量的值,支持任意数据类型;

多次调用同一子函数可以分别设定不同的行为,例如,指定返回1,2,3,4,那么子函数第一次执行返回1,第二次执行返回2…;

自动判断子函数是否被调用和调用次数(在自动控制等领域具有重要价值);

可以屏蔽桩控制,改为调用实际代码(只需重设一下选项)。

VU2部分功能清单

具有完善的桩功能,包括:补齐、隔离、控制,从开始编码到升级维护的各个阶段,均可对任意层次、范围的代码实施分割测试;

自动生成测试代码和用例框架;

可视化编辑测试用例,用简单语法判断各种输出,还可自动判断中间变量;

可在用例中随意控制子函数的行为,包括设定返回值、输出参数、成员变量、全局变量的值,多次调用同一子函数可以设置不同的行为;

自动统计语句、条件、分支、路径覆盖;

显示参数、成员变量、返回值等输入输出数据;

显示每个用例所执行的代码;

自动画出逻辑结构图,显示每个用例的执行路径;

显示逻辑结构图中任一语句块、分支、分支结构、路径的代码;

逻辑结构图可自由裁剪,语句块、分支、分支结构、路径均可删除/恢复;

用例设计器可轻松找出遗漏用例,实现100%的语句、条件、分支、路径覆盖;

自动描述程序行为,帮助整理、验证编程思路,提高编程效率,快速排除程序错误;

增强调试器功能,自动支持后退、重复、可视化选择输入、调试中切换输入;

自动生成HTML格式的测试报告。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格​十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有