• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

软件测试中单元测试极大地提高C/C++应用质量

发布: 2009-10-30 15:13 | 作者: 网络转载 | 来源: 领测软件测试网 | 查看: 95次 | 进入软件测试论坛讨论

领测软件测试网

C++Test做什么?

1. 自动建立测试驱动和桩函数

C++Test自动建立一个测试驱动程序,其设计目标是极大化类的测试覆盖性和错误检测。为类建立测试驱动,你只要简单地打开这个类,然后按Build Test键。C++Test将自动建立测试驱动程序。

另外,如果被测的方法需要调用当时还不存在或无法访问的函数,C++Test能够自动生成桩函数;这样能够测试与外部资源操作的交互作用和不包含任何隐藏的弱点。C++Test不是实际调用这些函数,而是调用桩函数并返回桩函数提供的值。如果你需要控制使用的返回值,你可以建立一个桩调用表,生命输入/输出的关系。

图4:建立桩调用表

你还能加入用户定义的桩函数。例如,如果你要使用原始的函数,且该函数定义在不同的文件中;或者你想要仿真原始函数的行为,而用一个简单的函数替代它。

图5:键入用户自定义的桩调用

自动生成C/C++类的测试驱动程序和桩函数的能力是C++Test所独有的;只有C++Test能够自动测试C/C++类(一当它能够编译时),而不需要用户的任何干预。使得你能够尽快地自动检测代码错误,以最容易、最省钱和最快速的方法找到和修正它们。如果没有这样的自动化工具,大量的时间和资源消耗将失去单元测试的潜在好处和现实意义。

2. 白盒测试

C++Test提供了一种有效并且高效的方法执行白盒测试。C++Test完全自动执行所有的白盒测试过程,自动生成和执行精心设计的测试用例。自动标记任何运行失败,并以一种简单的图示化结构显示。然后自动保存这些测试用例,能够方便地用于以后的回归测试

由于C++Test能够自动生成桩函数,或允许你加入自己的桩函数,因此它能够测试引用外部对象的类。换句话说,C++Test能够运行任何一个或一组类,并自动生成和执行一组测试用例,它们被设计成能够发现尽可能多的错误。

图6:执行自动白盒测试

C++Test允许你定制白盒测试用例的生成,和在什么层次上(项目、文件、类或方法)执行测试。

3. 黑盒测试

C++Test通过自动化黑盒测试的大部分操作,减轻了这类测试的负担。特别是以两种方法自动化黑盒测试的第一阶段--建立测试用例:

帮助你设置每个测试用例的结果
你可以简单地输入测试用例输入,然后让C++Test运行测试用例并自动确定实际的输出结果。如果结果正确,不需要其它动作。如果结果不正确,你可以输入预期的输出结果。这样比手工输入每个测试用例的结果更快更容易。

自动生成测试用例的核心集合
C++Test自动设计了一组广谱的白盒测试用例。当使用这些测试用例在黑盒测试时,你只需简单地观察实际的输出结果,然后对任何不正确的结果输入预期的值。

当你需要输入或修改测试用例时,你可以在C++Test自动生成的测试用例框架种简单地键入相应的值。这将显著地加快建立测试用例的过程。

图7:键入一个测试用例

在自动化建立黑盒测试用例的大多数步骤之外,C++Test完全自动化余下的黑盒测试步骤。按一个键,你能够对项目、文件、类或方法运行一个或一组。C++Test然后自动执行所有的测试用例,报告所有的输入/输出关系,并标记任何实际输出与预期不一致或导致程序崩溃的测试用例。

4. 回归测试

C++Test完全自动化与回归测试有关的所有步骤。C++Test首次测试某个类时,自动保存其测试和测试参数。当需要执行回归测试时,你可以打开合适的项目和文件,运行所有原来的白盒和黑盒测试用例;C++Test会自动运行完全相同的测试用例和测试参数,并告之发现的任何问题。这意味着你能够立即知道修改是否引入了任何错误。

5. 测试覆盖性分析

为了帮助你测量当前使用的测试用例集合的有效性,并且给你提供达到尽可能高的覆盖性的信息,C++Test自动监视测试覆盖性:

  • 行覆盖
  • 累计行覆盖
  • 基本块覆盖
  • 分支(判断)覆盖
  • 条件覆盖
  • MC/DC覆盖(DO-178B标准)

图8:浏览测试结果

C++Test实时跟踪测试覆盖性,然后建立一个综合测试覆盖性报告。覆盖性窗口图示化地说明了当前正在被执行的代码行,已执行过的行和每行的执行次数。因此,它不仅指出了一个代码行是否被测试过,而且说明了被测试的有多彻底。这些信息对于确定那些代码需要追加测试是非常有帮助的。

6. 集成的单步调试

如果你选择在方法测试时捆绑调试器,C++Test将自动自动激活Microsoft Visual C++调试器,这样使得你在用C++Test测试任何方法时仍然能够方便地进行单步调式。

7. 防止错误

C++Test能够自动执行两种类型的变成标准。其内建的特性允许你自动执行动态的变成标准,如“总是对每个类执行单元测试”和“总是单步调试类”等。另外,假如你使用CodeWizard--ParaSoft的自动化可定制编程标准强化工具,C++Test可以自动运行CodeWizard。

8. 运行时错误检测

C++Test还能帮助你执行类一级的运行时错误自动检测。如果你安装了Insure++,C++Test可以自动运行类和方法通过Insure++,它将检查下列错误:

  • 内存引用错误/内存未初始化
  • 内存泄漏
  • 内存分配错误
  • 变量定义冲突
  • I/O错误
  • 指针错误
  • 库调用错误
  • 逻辑错误
  • 算法错误
 这意味着你能够在类开发的第一时间检测运行时错误,而且无需自己做任何运行数据。C++Test自动生成大量而精心设计的测试用例,能够帮助你更彻底、更方便和更快速地检测运行时错误。

结论

通过执行单元测试,你能够有效地防止许多错误的出现,尽早检测出已存在的错误,并且比其它测试手段和技术更有效。影响C/C++开发人员执行单元测试的主要障碍是需要消耗大量的时间的资源,目前的一些单元测试工具仍然存在着这样的问题。C++Test的推出克服了这一障碍。C++Test做到了开发人员总是希望却不敢相信的事情:自动化C/C++单元测试。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

22/2<12

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网