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

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

使用JUnit高效完成功能测试

发布: 2010-6-30 10:02 | 作者: 不详 | 来源: 领测测试网采编 | 查看: 171次 | 进入软件测试论坛讨论

领测软件测试网

  测试用例是脆弱的。比如,如果开发人员更改了testXPathEvaluation测试中输入文件的位置,或者creatExpression方法签名有所变动,测试脚本就会失效。

  对于应用程序的测试用例实现来说,大量的重复性工作与改动是不可避免的。因此,可跟踪性对于所有的测试用例都是至关紧要的。出现问题的时候,如果能为开发人员指出相应的测试用例说明和用例说明将有利于提高修正bug的速度。

  因此,测试用例注释中应标明原始说明文档的引用位置。这可以是一个简单的代码注释,也可以对每条测试都注释相关用例和所测功能,这样当测试出现问题时开发人员就会收到一条相关信息。因此,在代码中加入参考并维护可追踪性是很重要的。

  设计运行时事件表

  要了解测试覆盖的范围,必须先了解所测试代码如何运行,以及各种静态类如何形成描述程序状态的动态对象图表。

  有许多模拟这种行为的方法,包括Granovetter图和物件互动图。其基本思想是用图形化的方式研究代码以了解测试中涉及到的运行时部分。这些技术都可用运行时事件表(Runtime Event Diagrams)来描述,因为这些图表显示了程序运行时发生的事件,而非理论上类可以控制的事件。这些图表非常重要的原因包括:

  首先,这些图表便于从高层上理解代码,并提供有用的说明文档。这个文档与代码的内联文档不同。这些图表显示代码的运行时表现,是产生代码功能的地方,也易于对系统的了解;大多数设计模式和架构在用对象和参考表示时要比用类和域表示容易得多。

  另外,这些图表将测试执行的代码分类列表,并确定测试是否会受到将来对任意代码改动的影响。如果开发人员确定测试A是建立在B、C和D的基础上,她就可以确定如果对B、C或D做出改动就需要对A进行重新测试(确保向后兼容)。

  以尽可能少的步骤模拟系统是个好方法。总的来说,实际调用与此无关,重要的是系统如何作为整体运作以获得预期目标。可以用简化的模拟系统实现这个目的,该系统只关心对象间的基本交互,并用自然语言描述交互中发生的事件。

  做出运行时事件表后,就可以将其整合到类文档中。需要注意的是,为表添加一些限制可使其对类的修改更有弹性。首先,一般不能使用方法名,因为它们会随时间发生变化。取而代之的是更易理解的自然语言描述。其次,这些图表主要是关于系统中各部分的交互。这是高层架构上的设计方案,一般不会再做改动。最后,图表是建立在类型而非特定类的基础上。只要基本类型不变,为维持交互协议的正常运行,这些图表就不需要更新。

  一旦图表创建成功,可以在许多方面获得应用。比如,一个图表可以用来获取系统如何运作,以及如何运用其交互部件实现功能的概览。在某种程度上这是一种简化了的UML语言,它只描述关系到整体功能的系统部件:实例及其类型、其它引用的实例,以及组件可以实现的功能。

  这些图表也可以用来分析系统的复杂性以及如何进行简化。要确定简化系统的方法,可以查找系统中使用过一到两次的对象,并为其寻找其它可能更合适的位置。也可以查找重复的任务,将其封装到方法或类中。

  然而,最重要的是图表在测试中的应用。通过对系统状态的总结,图表可以帮助解决系统中出现的问题。出现问题时,图表中的信息便可用作参考。因为只需要将系统目前状态与预期状态作比较即可,这样确定问题产生的原因也就变得比较简单了。对小组件的改动不应该影响整体架构,因此可以通过对照运行时事件表以保证系统仍然正常运行。并且,当有重要组件发生变动时,可以用运行时事件表对照系统当前状态以获取系统修正方案。由于将系统作为整体和对预期功能的描述,运行时事件表也可以看作是一种结构化的单元测试。如果系统有变动,可以更容易地做出修正以维持系统的正常功能。

  如果经常因细节问题影响对全局的把握,就应该使用图表。其高层本质可以用来分析软件的设计模式,就像反模式一样。还有许多其它用途,并且当运行时事件表、测试用例说明和用例说明没有描述所需的细节时,它还提供了直接进行代码分析的路线图。

  利用功能测试进行回归测试

  最后,为回报你在功能测试上做出的努力,配置一个与自动生成的程序相应的自动化测试程序。这个程序不只从功能上测试代码,还可以同时进行常规的回归测试。现在大多开发项目都建立在庞大的代码库基础上,如果不能对代码库进行充分测试,开发团队将无从决定对程序的修正是否会破坏现有的功能,结果就是很难对这种代码进行扩展或优化。与此相反,如果开发人员可以在全面的功能测试基础上进行回归测试,优化或扩展代码时就不必担心可能会引发不可预料的问题。毕竟,没有比做完回归测试后发现一切正常更令人心情愉快的事了。

延伸阅读

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

55/5<12345

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

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