现在的位置: 首页 > 综合 > 正文

白盒测试终结无间

2013年10月06日 ⁄ 综合 ⁄ 共 3386字 ⁄ 字号 评论关闭

白盒测试终结无间

Make by Tony 2006/11

1          嵌入式白盒测试的现状与问题

白盒测试是软件测试中重要一环,其测试效果如何直接影响发行产品的稳定性。由于嵌入式产品的固有特征,比如:使用C语言编程、依赖特定硬件环境、要求任务实时调度等,这些都使得白盒测试很难有效的推行。白盒测试做不好,已成为众多嵌入式厂商在质量保证活动中最难克服的焦点问题,主要表现在两方面:一是嵌入式领域的白盒测试缺少合适的方法论指导,二是缺少有效的测试工具。【文章来源:文斯测试技术研究中心 http://blog.csdn.net/vincetest

1.1现状一:缺乏有效的方法论指导

白盒测试技术滞后于编程技术发展是业界公认的事实,对于嵌入式软件而言,问题更为严重,受到限制更多。首先,大部分嵌入式软件都采用C语言进行开发,而C语言的白盒测试在业界至今还缺少有效的工程方法,这不像javaC#等程序,还有一些成熟的方法论指导,如测试驱动开发、持续集成、每日构建等。其次,嵌入式产品依赖于特定的硬件运行环境,很难像微软的纯软件产品,可以做到全方位自动测试,冒烟测试、每日构建等实践难以在嵌入式产品中实施。

1.2现状二:缺少有效的测试工具

嵌入式白盒测试缺少有效工具,是与方法论体系缺失或者欠适用相关的,因为白盒测试是一项实践性很强的工作,理论体系常起源于最佳实践,在实践基础上提炼升华,形成通用的方法论,而方法论以工具为载体,在具体实施中又促进最佳实践。

所以,与其说嵌入式白盒测试缺少有效的方法论指导,还不如说现有方法论应用到嵌入式领域,还有许多欠缺,尤其是缺少切实有效的工具体系。比如,持续集成、测试先行、每日构建等实践,在平台软件(如微软的操作系统、业务支持库等)开发,还有java编程、C#编程的XP实践中,已有许多成功案例,但在C++编程中,成功案例大幅度减少,而在C语言、Pascal语言等过程语言中,应用相同方法论,成功案例就屈指可数了。【文章来源:文斯测试技术研究中心 http://blog.csdn.net/vincetest

要推动嵌入式白盒测试走向成功,我们面对的环境更加苛刻,比方我们拿javaC语言作比较,前者的开发效率远高于后者,而业界多数白盒工具,针对两者的测试效率具有同比率差距,因此,白盒测试难以成功自在情理之中。

2          VcTester解决方案

VcTester由深圳市领测科技有限公司自主研发,专业服务于嵌入式白盒测试领域,它遵循第4代白盒测试方法(4GWMThe 4th Generation White-box-testing Methodology),为苛刻环境下有效实施C语言的单元测试、集成测试、协议测试等方面,提供了系统化的测试解决方案。

4GWM(参见《第4代白盒测试方法概述》)是WAYNE工作室在长期实践中,尤其是积累了十余年通信行业白盒测试工具开发与推广实施经验的基础上,所提出的一套久经市场考验的测试方法论。该方法论有效解决了以下瓶颈问题。

2.14代白盒方法所解决的问题

Ø         4GWM尝试解决测试效率的瓶颈问题。该方法论要求在线测试实施测试,使用脚本语言高效的开发测试用例,测试脚本在线编写、在线运行,在线查看测试结果,并在线的根据覆盖率与测试程度报告,补充改进测试设计。除了在线测试,4GWM还要求最大幅度重用各项工作,测试脚本能够重用,调试过程也能重用,多数调试操作都能方便的转换为自动脚本,另外,该方法论要求的持续集成模式让被测系统能随时稳定运行,其稳定性在测试设计、快速问题定位与解决中,都得到了高度重用。【文章来源:文斯测试技术研究中心 http://blog.csdn.net/vincetest

Ø         4GWM尝试解决测试有效性问题。许多时候测试人员反映白盒测试缺少效果,发现不了多少问题,这种情况多半是测试方法不恰当造成的。比如测试者只按可见代码做测试,忽略了对不可见代码(如缺省的else分支、遗漏的处理过程)的测试,受限于惯性思维做测试,而未按接口规格做测试。4GWM引入测试先行方法,同时克服了XP相关实践中,未见代码先写用例,不够直观与难以实施的缺点,让嵌入式白盒测试能真正深入的实施起来。

Ø         4GWM还解决测试有效性评估问题。除了代码覆盖率,该方法论还引入测试程度评估标准,可以有效的防止不经意测试所带来的覆盖率虚高,致使测试效果评估失准的情况出现。

Ø         在软件持续集成过程中,4GWM还要求遵循一套简明的红绿灯通行机制,保证源码不断修改后白盒测试能有效跟进,并持续、平稳的维持运作。

2.2组网与系统架构

VcTester只支持与VC编译工具(包括VC6VC7VC8)配套使用,它使用CSE集成界面编写用例、调试用例。如图1IDE与被测系统是两个独立的EXE程序,动态运行时两者是以共享内存通信方式连接的两个进程。被测系统中驻留一个代理模块,该模块接受用户界面(CseWin.exe)的操作指令,并完成相关测试。


1VcTester组网图

在一次测试中我们关注被测单元的特性,被测单元作为整体,它在特定环境下运行(比如某些全局变量取特定值、某些依赖的线程或任务已启动等)、具有特定的输入输出,并且,被测单元若能正确运行,还依赖它调用的子函数提供正常功能。我们将一项测试依赖的上述内容分成3类:测试驱动、被测单元与测试桩,如图2

2:测试分层结构

被测单元UUTUnit Under Test)是测试对象,测试中我们尽量维持原状以保证测试可信度,测试驱动(包括构造测试环境及启动测试)与测试桩是我们要用CSE脚本模拟。【文章来源:文斯测试技术研究中心 http://blog.csdn.net/vincetest

2.3组合应用

VcTester支持外部工具嵌到它的IDE中使用,比如VCBuildBuildAll命令可集成进来,外部命令的运行信息能截获到IDE的打印输出区,用户还可以为外部命令指定快捷热键。这一机制大大方便了VcTester与其它测试工具配合使用,常见的集成应用有:

1.         VSSCVS版本机的CheckinCheckOut集成到VcTesterIDE平台

2.         ANT自动构建工具集成

3.         集成pclint工具

4.         集成源码行统计工具

VcTester在覆盖测试方面具有独特优势,我们建议VcTester与如下商用工具组合使用,形成优势互补,测试效果会更好:

1.         使用CodeTest进行性能测试

2.         使用PurifyBoundCheck进行内存越界或内存泄漏检查

3.         使用LogiscopeAudit评估代码可维护性与复杂度,使用RuleChecker检查编码规则【文章来源:文斯测试技术研究中心 http://blog.csdn.net/vincetest

4.         与商用ASN.1工具(如OSS的编解码工具,RedPacketOneDecoderOneViewer等调测工具)配合使用,实现基于消息收发的通信协议测试

附:VcTester简介

VcTester深圳市领测科技有限公司自主研发,专业服务于嵌入式白盒测试领域的测试工具,它遵循第4代白盒测试方法(4GWMThe 4th Generation White-box-testing Methodology),为有效实施针对C语言的单元测试、集成测试与协议测试,提供系统化的测试解决方案。对于VcTester相关信息参见其官方网站http://www.eztester.com

参考文献:

1.         Wayne Chan, 《第4代白盒测试方法概述——VcTester实践篇》

2.         Wayne Chan, VcTester V2技术白皮书》

欢迎转载此文,转载时请注明文章来源:文斯测试技术研究中心http://blog.csdn.net/vincetest

 本人喜欢的网站:新浪网 Google新闻 搜狐新闻 雅虎 天极 CSDN新闻 CSDN博客 B周刊 博客中心 DoNews博客 SourceForge ShareIt 无忧测试 VC在线 共创联盟 华军软件园

 

抱歉!评论已关闭.