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

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 本节书摘来自华章出版社《 自动化测试最佳实践:来自全球的经典自动化测试案例解析 》一 书中的第2章,第2. 3节,作者:(英)Dorothy Graham Mark Fewster 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看

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进行交互来启动我们需要测试的软件。整套系统还包括一个测试装置,通过使用不同的机器操作不同的任务,避免了架构本身的资源消耗对被测任务的影响。
因为我们确实投入了大量的时间和精力来设计自动化测试,所以几乎实现了所有的目标(只有性能测试是由我们的另一款内部开发工具完成的,这不在本案例研究的讨论范畴)。几乎所有的测试都是通过我们的工具自动运行的,其中只有几个测试,我们认为自动化的价值并不是很大,是由手动完成的。最后,我们有了一款可以在很多不同领域使用的、功能非常强大的工具。

image

图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%的测试运行的时候不会出现故障。

相关文章
|
19天前
|
机器学习/深度学习 安全 大数据
揭秘!企业级大模型如何安全高效私有化部署?全面解析最佳实践,助你打造智能业务新引擎!
【10月更文挑战第24天】本文详细探讨了企业级大模型私有化部署的最佳实践,涵盖数据隐私与安全、定制化配置、部署流程、性能优化及安全措施。通过私有化部署,企业能够完全控制数据,确保敏感信息的安全,同时根据自身需求进行优化,提升计算性能和处理效率。示例代码展示了如何利用Python和TensorFlow进行文本分类任务的模型训练。
58 6
|
14天前
|
PHP 开发者 容器
PHP命名空间深度解析与最佳实践####
本文深入探讨了PHP中命名空间(namespace)的机制、应用场景及最佳实践,旨在帮助开发者有效避免命名冲突,提升代码的组织性和可维护性。通过实例讲解,本文将引导您理解如何在实际项目中灵活运用命名空间,以及如何遵循业界公认的最佳实践来优化您的PHP代码结构。 ####
|
12天前
|
PHP 开发者
PHP 7新特性深度解析及其最佳实践
【10月更文挑战第31天】本文将深入探讨PHP 7带来的革新,从性能提升到语法改进,再到错误处理机制的变革。我们将通过实际代码示例,展示如何高效利用这些新特性来编写更加健壮和高效的PHP应用。无论你是PHP新手还是资深开发者,这篇文章都将为你打开一扇窗,让你看到PHP 7的强大之处。
|
20天前
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
50 1
|
1月前
|
测试技术 网络安全
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
文章全面介绍了软件测试的基本概念、目的、岗位分类、与开发和调试的区别,并阐述了成为优秀测试人员应具备的素质和技能。
174 1
什么是软件测试? 软件测试都有什么岗位 ?软件测试和调试的区别? 软件测试和开发的区别? 一位优秀的测试人员应该具备哪些素质? 软件测试等相关概念入门篇
|
24天前
|
监控 安全 Java
构建高效后端服务:微服务架构深度解析与最佳实践###
【10月更文挑战第19天】 在数字化转型加速的今天,企业对后端服务的响应速度、可扩展性和灵活性提出了更高要求。本文探讨了微服务架构作为解决方案,通过分析传统单体架构面临的挑战,深入剖析微服务的核心优势、关键组件及设计原则。我们将从实际案例入手,揭示成功实施微服务的策略与常见陷阱,为开发者和企业提供可操作的指导建议。本文目的是帮助读者理解如何利用微服务架构提升后端服务的整体效能,实现业务快速迭代与创新。 ###
57 2
|
4天前
|
安全 测试技术 持续交付
云计算时代的软件开发与测试:高效、灵活、可扩展
云计算时代的软件开发与测试:高效、灵活、可扩展
|
29天前
|
人工智能 监控 测试技术
云应用开发平台测试
云应用开发平台测试
46 2
|
1月前
|
存储 缓存 监控
深入解析:Elasticsearch集群性能调优策略与最佳实践
【10月更文挑战第8天】Elasticsearch 是一个分布式的、基于 RESTful 风格的搜索和数据分析引擎,它能够快速地存储、搜索和分析大量数据。随着企业对实时数据处理需求的增长,Elasticsearch 被广泛应用于日志分析、全文搜索、安全信息和事件管理(SIEM)等领域。然而,为了确保 Elasticsearch 集群能够高效运行并满足业务需求,需要进行一系列的性能调优工作。
83 3
|
1月前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。

推荐镜像

更多