2.4 开发内部测试工具
该内部测试工具的基本功能是由3 ~ 4位开发人员在6 ~ 9个月的时间内开发出来的,是用Java语言编写的。第一个版本开发之后,一个人专门负责对其进行维护和进一步的开发,显然维护和进一步开发的工作量是逐步减少的。
图2-1是测试的Java引擎(Java Engine for Testing, JET)架构的一个概览。每个大的矩形都是一台运行某些软件的计算机。
我们在图2-1中的运行机(runner)处开始运行一组测试集合。它使用JETBatch来开始运行测试并收集运行结果。客户端(client)运行与JETBatch进行交互的Jet代理程序(JET Agent,JAG),即使用JAG来启动JET运行单个测试。这些JET读入一个XML文档,该文档会给JET提供测试运行的内容,并与服务器的JAG进行交互来启动我们需要测试的软件。整套系统还包括一个测试装置,通过使用不同的机器操作不同的任务,避免了架构本身的资源消耗对被测任务的影响。
因为我们确实投入了大量的时间和精力来设计自动化测试,所以几乎实现了所有的目标(只有性能测试是由我们的另一款内部开发工具完成的,这不在本案例研究的讨论范畴)。几乎所有的测试都是通过我们的工具自动运行的,其中只有几个测试,我们认为自动化的价值并不是很大,是由手动完成的。最后,我们有了一款可以在很多不同领域使用的、功能非常强大的工具。

图2-1 测试工具的架构(出自 http://kenai.com/projects/jet)
2.4.1 配置
测试配置:我们的测试是定义在一个数据库中的,并且可以单选、成组选择或者根据特定序列来进行选择。工具在每次测试之前都会进行一次初始化,避免前面的测试结果影响到后续的测试,工具在每次测试之后也会将测试环境清理干净。工具还自动将测试件进行收集和归档。
【小窍门】
把实施预处理和后续处理作为启动一个测试套件的一部分。
测试时应用程序的配置:可以对产品版本进行选择,包括调试版本和来自开发人员“沙箱”(sandbox)的本地版本。
服务器和客户端平台的配置:我们使平台的定义和在运行测试的平台组的定义变得简单。根据测试装置在一个平台组(例如,Windows Vista,64位,JDK 6)里面是否可用而将其划分成不同的测试装置。我们可以用一到两个平台为服务器设置一个单独的配置,通常也可以用一个平台为客户端设置一个单独的配置。对于客户端和服务器来说,都可以选择不同的操作系统。
一个标准的测试需要4台机器:一台测试机器,一台客户机,两台包含被测数据库的服务器。
2.4.2 资源优化
通过添加更多的机器到测试装置池中,我们可以并行地运行测试。另外,测试具有排队机制:一个测试装置上的测试完成之后,候选队列里面的下一个测试就开始运行。
2.4.3 测试报告
这个内部工具创建了网站来记录测试报告,所有的结果在一个数据库中也进行了详细存档,这有利于我们建立详细的度量,比如下面的度量:
1)在哪些平台上会有一些什么样的bug及其出现的频率(可以帮助指定bug的优先级)。
2)每个平台上的一般信息统计。
3)测试中bug的检出率。
4)测试的冗余。
一个测试完成之后,会自动发送一个包含测试结果的汇总邮件,同时生成一个XML文件,它包含了用以导入到其他数据库或者报表生成器的所有必要信息。
该工具也使得从开源测试覆盖工具(EMMA)中导入信息变得更容易,而且让我们能观察到测试的质量——至少从表面上看是这样的。
2.4.4 故障分析
在测试失效分析达到60% ~ 80%正确率之后,才能对失效进行自动识别。比如,通过定义描述故障的模式和标记来进行识别,在大多数情况下,我们定义一些模式或者签名对故障进行描述,这些模式或者签名通常与测试产生的错误信息、测试名称和产生这条实效信息的测试语句直接相关。一个bug可能有多个标记,如果要对新的故障或者已知故障的新症状进一步进行人工分析,就需要新的标记信息。
用这个新工具实施的某产品的首次发布测试中,要求不论何种原因,无论是产品原因或者是测试原因,至少75%的测试运行的时候不会出现故障。最后,要求至少96%的测试运行的时候不会出现故障。

《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一2.4 开发内部测试工具...相关推荐

  1. 《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一1.3 建立自动化策略...

    1.3 建立自动化策略 我们需要在不破坏现有功能的前提下发布产品的新功能特性.而且,需要尽快知道一个新的代码变动是否会引起回归测试的失败.手动回归测试在每两周的迭代后期才能给予我们反馈,以至于没有时间 ...

  2. 《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一1.6 正确度量...

    1.6 正确度量 如何知道我们是否取得进步了呢?如何衡量成功?我们需要一些度量.我们的构建过程会对测试进行统计,所以很容易跟踪每一个层次的测试数量:JUnit.FitNesse断言和测试页面.Cann ...

  3. 《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一2.8 现状...

    2.8 现状 该工具已经用于不同的数据库产品的测试当中,而且现在是一个开源工具,请参阅http: //kenai.com/projects/jet.

  4. python 自动化微信小程序_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...

    原标题:干货 | 微信小程序自动化测试最佳实践(附 Python 源码) 本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版. 随着微信小程序的功能和生态日益完善, ...

  5. 自动化测试最佳实践(一):从纺锤模型到金字塔模型

    一.当前软件开发的趋势 开篇我们先简要介绍一些近几年在企业开发中出现的重要概念,以便引入持续测试的主旨.这些概念中最重要的两个便是DevOps和微服务.两者都是目前软件开发中的最佳实践和方法论,旨在为 ...

  6. [置顶] 《自动化测试最佳实践》讲座总结

    <自动化测试最佳实践>讲座总结 2016年11月26日 - 27日,参加了为期两天的自动化测试最佳实践.讲师是业界大牛陆宏杰.他在微软工作了5年,后来又在Photoshop工作了5年. 自 ...

  7. 《自动化测试最佳实践》讲座总结

    <自动化测试最佳实践>讲座总结 2016年11月26日 - 27日,参加了为期两天的自动化测试最佳实践.讲师是业界大牛陆宏杰.他在微软工作了5年,后来又在Photoshop工作了5年. 自 ...

  8. 微信 小程序 python 渲染_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...

    本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版,进阶学习文末加群! 随着微信小程序的功能和生态日益完善,很多公司的产品业务形态逐渐从 App 延升到微信小程序. ...

  9. app自动化测试最佳实践

    众所周知,在app的UI测试方面,自动化测试可以减少人工参与.降低成本.提升测试效率.传统的自动化测试一般使用appium等工具完成,但需要有较强的编程能力,测试代码需要经常修改,一般测试人员很难搞定 ...

最新文章

  1. 构造函数、拷贝构造函数和析构函数的的调用时刻及调用顺序
  2. CloudFoundry环境上的三种端口,您分清楚了吗
  3. 构造器是什么?(Java篇)
  4. 一杯水怎么测试_一杯水就能鉴别翡翠真假的高招
  5. LeetCode LCP 06. 拿硬币
  6. 攻防世界web题ics-06(爆破id值)
  7. 飞鸽传书开发者的圈子里面 有很多对飞鸽公司
  8. kali linux引导文件修复,Kali+Windows引导修复
  9. 超过 1 亿 Android 用户的数据遭泄露!
  10. classes是什么意思怎么读_classes怎么读用法大全_classes是什么意思
  11. SPI操作flash MX25L64读写数据
  12. 生成对抗网络(GAN)教程 - 多图详解
  13. MacOS下好用的截图软件snip
  14. 语音计算机怎么切换音乐模式,如何把微信里收藏的语音音乐转换成mp3格式?
  15. Destroying assets is not permitted to avoid data loss.
  16. java 7编程高级进阶_Java7编程高级进阶-积累(1)
  17. PowerTool kEvP.sys=V4.2 内核拒绝服务漏洞
  18. 一个程序员的工作总结
  19. 山东涛雒镇万亩水稻 国稻种芯·中国水稻节:日照迎来收割季
  20. ubuntu16.04系统下谷歌浏览器不能拖入下载好的扩展程序离线包

热门文章

  1. 收集Cocos2d提供的字体!共57种
  2. Android手机启动流程与TEE OS
  3. iBATIS:xml中定义返回值
  4. 【Android必备】与其他碎片进行通信(10)
  5. 大白菜软件常用功能介绍
  6. JavaMail的体系结构及发送复杂邮件
  7. 「linux」win+linux 双系统 默认启动项 的修改
  8. 共享变量类vb.net中的共享方法、共享变量、全局变量
  9. 驴友生涯的开始--香八拉路线精选
  10. 【S1官方核心】18128核心纯净雅黑H大全力打造的1.9精品