《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一3.6 我们的心得

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

3.6 我们的心得
TiP测试使我们可以找出数据中心上线过程中引入的问题和有时在产品中客户还没发现的问题。随着时间的推移,还可以让我们找出潜在问题、性能和总体功能表现的非常有趣的发展趋势。
3.6.1 合作方服务相关的问题
对TiP测试至关重要的一个组成部分就是:找出我们所依赖的并在其上进行构建的与合作方服务相关的问题。我们的服务,与几乎所有其他云端服务一样,依赖于许多特定领域相关的不同服务。例如,我们依赖Windows Live ID来提供专门的身份验证层。又如,命名空间管理和提供是依赖于在线域名服务的。在找出上面这些通过别的方面无法捕获的依赖问题方面,我们的测试是非常有帮助的。
3.6.2 云端监视的挑战性
Exchange作为服务很独特的一个方面是它的目标客户是IT专业人员,他们在升级到新的服务时总是非常谨慎,而且很多大客户都定制了一些写在Exchange顶层的产品。此外,有一些客户在混合模式下运行,而另一个客户仅仅只在公司的Exchange Servers中运行,也有一些是在云端运行的。在处理单个云端中版本的一些值得注意的、更持久的变化方面,标准监控解决方案设计得并不是很好。TiP测试在流经系统时,其版本和配置变化使我们能更好地在异构的云端测量和保证质量。这些挑战对于很多云端服务来说是非典型的,如Bing、Facebook、Twitter, 更多的是使用同构的和松耦合的服务架构来获取连续的部署模型。
尽管如此,我们的服务是分层的,且依赖于比Exchange团队更快速的发布周期。网络本身就是随着新的Firmware版本和访问控制列表(Access Control List, ACL)的改变而不断更新的一个层。当那些层发生灾难性的改变时,由监控服务(如Gomez 和Keynote)提供的黑盒方法会向运营中心发出警报,但是对于间歇型或边缘情况却不会发出警报。TiP使我们可以在这些依赖问题变成灾难性问题之前深入分析并捕获它们。在某些情况下,我们甚至可以在合作方服务升级过程中捕获问题,这样就可以提醒他们将这些变更进行回滚。
3.6.3 在线TiP测试所发现的一些问题
以下是通过TiP测试在产品中找到问题的一些样例:
都柏林(爱尔兰共和国的首都)的服务提供的一个队列挂起了,但是监控器并没有检测到。
检测到服务提供的延迟。
TiP检测到了Hotmail运行中断,Exchange团队可以暂停并等待Hotmail的修复。
Live ID运行中断影响了Exchange Cloud的客户;Live ID的运营需要进一步加强。
TellMe, 一个可以将电话在我们的系统和手机交换器(Quest/Verizon负责的地上通信线和T-Mobile的移动电话)之间转换的VoIP网关系统,需要对最终用户连接场景的运行中断进行监控。TiP是找出集成试点测试中所使用的电话号码故障的唯一方法。
也常用TiP测试来鉴定发生随时间不断流逝的间歇失效的根本原因(随着时间流逝出现故障的百分比,而不仅仅只是在单个事故中出现故障)。
3.6.4 聚集处理结果中的“噪声”
我们学到了很多关于对一个实时服务如何执行测试的知识。学到的第一点就是,这种自动化的运行并不简单。例如,因为是在公司防火墙后面运行的,所以只好按照雷德蒙德的代理服务器的路线来发送请求。这些代理服务器并非旨在拥有这种用途,所以导致了有时会出现请求丢失、主机查找失败和其他奇怪的网络故障等。这很快导致了第二种实现方法的出现,即在产品系统中运行自动化测试时,重要的不是个体的通过或者失败的结果,而是随着时间推移,这些结果的聚集体。聚集可以帮助识别一个问题是持久中断问题还是仅仅只是一次网络故障,因此可以将噪声级减少到足够低,这能对服务安全性进行更精确的提高。同时还可以帮助预测未来的发展趋势,而只通过简单地适时看一看统计结果是无法做到这些的。
【小窍门】
对细节过程进行监控是非常重要的,但留意总体趋势也同样重要。
当你注意到测试一个小时运行一次的时候,上述最后一点(关于噪声消减)就变得十分重要。这一频率受到测试执行框架上的内置假设的影响,即关于测试通过之后怎么配置(比如,假设每一个测试运行执行都必须出现在一个新部署的机器上)和关于测试本身是如何执行的。我们发现那些假设因为很多原因存在一些漏洞。
它们一个小时运行一次的另外一个原因是担心消耗太多的生产力。我们发现一个服务必须要留出一些额外的设备来支持实时网站监控、使用过程中的高峰和低谷、拒绝服务攻击和成长。如果以一个增长的频率,比如每5分钟一次,在每个产品簇中运行一个自动化功能测试集合来对服务的边缘进行检测,那么运行的这项服务的时间就太密集了,需要增加设备。但事实上,对许多IT组织来说,采购和安置专用硬件的成本太高,以至于他们觉得准备额外设备留作备用是很不可思议的。然而,随着转移到进行云计算并具有了对电脑和存储资源的动态增长能力,很多组织都能负担得起通过一些合理的额外设备构建一个服务以用于在线测试。
3.6.5 易犯的错误
我们得到的一个教训就是,测试自动化比由外到内的基本监控更完整,并且由于这些测试的质量不错,团队很快就想将TiP系统作为一个加强的监控解决方案。但问题是,我们不可能对频率为1小时的测试进行适时的反应,因为收集足够的样本来分析一个问题是否真的需要花费的太长时间。另一种办法是在测试中实施重试逻辑(retry logic),这样有可能进一步降低通过率并有可能因为瞬态问题而给你提供假阳性的结果(例如,因节流机制而引起发送信息失败)。
我们得到的第二个教训是,当处理横向扩展的产品系统时,如果没有一个类似的自动化测试横向验证策略,就有可能导致一种虚假的安全感。在最初的实施过程中,我们为每一个规模化单元的每个人创建了单个邮箱账户集合,问题是,规模化单元还有进一步的粒度分割,因为它们是由多服务器、可用组织和其他最初未说明的资源组成的。事实上,这意味着每个站点只能覆盖一个可用的组织或者邮箱数据库。这会导致事故不被基础设施所捕获的情形,因为规模化单元受到影响的那部分并不是我们所覆盖的那部分。
除了作为回归测试的金丝雀之外,TiP测试像我们的系统一样,应该将其当作更健壮的持续改进项目(continuous improvement project,CIP)中的一员来对待。与大多数CIP一样,高层管理人员的参与和带动是成功的关键。管理人员与团队的同心协力将保证工程团队获得支持以改善产品服务、弥补TiP和整个监控解决方案中其他元素(单服务器并且由外到内)的空缺。

相关文章
|
11天前
|
设计模式 前端开发 JavaScript
自动化测试框架设计原则与最佳实践####
本文深入探讨了构建高效、可维护的自动化测试框架的核心原则与策略,旨在为软件测试工程师提供一套系统性的方法指南。通过分析常见误区,结合行业案例,阐述了如何根据项目特性定制自动化策略,优化测试流程,提升测试覆盖率与执行效率。 ####
37 6
|
27天前
|
机器学习/深度学习 安全 大数据
揭秘!企业级大模型如何安全高效私有化部署?全面解析最佳实践,助你打造智能业务新引擎!
【10月更文挑战第24天】本文详细探讨了企业级大模型私有化部署的最佳实践,涵盖数据隐私与安全、定制化配置、部署流程、性能优化及安全措施。通过私有化部署,企业能够完全控制数据,确保敏感信息的安全,同时根据自身需求进行优化,提升计算性能和处理效率。示例代码展示了如何利用Python和TensorFlow进行文本分类任务的模型训练。
76 6
|
18天前
|
存储 人工智能 自然语言处理
高效档案管理案例介绍:文档内容批量结构化解决方案解析
档案文件内容丰富多样,传统人工管理耗时低效。思通数科AI平台通过自动布局分析、段落与标题检测、表格结构识别、嵌套内容还原及元数据生成等功能,实现档案的高精度分块处理和结构化存储,大幅提升管理和检索效率。某历史档案馆通过该平台完成了500万页档案的数字化,信息检索效率提升60%。
|
21天前
|
PHP 开发者 容器
PHP命名空间深度解析与最佳实践####
本文深入探讨了PHP中命名空间(namespace)的机制、应用场景及最佳实践,旨在帮助开发者有效避免命名冲突,提升代码的组织性和可维护性。通过实例讲解,本文将引导您理解如何在实际项目中灵活运用命名空间,以及如何遵循业界公认的最佳实践来优化您的PHP代码结构。 ####
|
19天前
|
PHP 开发者
PHP 7新特性深度解析及其最佳实践
【10月更文挑战第31天】本文将深入探讨PHP 7带来的革新,从性能提升到语法改进,再到错误处理机制的变革。我们将通过实际代码示例,展示如何高效利用这些新特性来编写更加健壮和高效的PHP应用。无论你是PHP新手还是资深开发者,这篇文章都将为你打开一扇窗,让你看到PHP 7的强大之处。
|
28天前
|
Prometheus 监控 Cloud Native
实战经验:成功的DevOps实施案例解析
实战经验:成功的DevOps实施案例解析
41 6
|
28天前
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
58 1
|
1月前
|
安全 Java
Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧
【10月更文挑战第20天】Java多线程通信新解:本文通过生产者-消费者模型案例,深入解析wait()、notify()、notifyAll()方法的实用技巧,包括避免在循环外调用wait()、优先使用notifyAll()、确保线程安全及处理InterruptedException等,帮助读者更好地掌握这些方法的应用。
19 1
|
1月前
|
监控 安全 Java
构建高效后端服务:微服务架构深度解析与最佳实践###
【10月更文挑战第19天】 在数字化转型加速的今天,企业对后端服务的响应速度、可扩展性和灵活性提出了更高要求。本文探讨了微服务架构作为解决方案,通过分析传统单体架构面临的挑战,深入剖析微服务的核心优势、关键组件及设计原则。我们将从实际案例入手,揭示成功实施微服务的策略与常见陷阱,为开发者和企业提供可操作的指导建议。本文目的是帮助读者理解如何利用微服务架构提升后端服务的整体效能,实现业务快速迭代与创新。 ###
63 2
|
18天前
|
测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
【10月更文挑战第31天】 在当今快速迭代的软件开发环境中,自动化测试成为确保软件质量和加速产品上市的关键。本文探讨了自动化测试的重要性、实施策略以及一些最佳实践。通过分析不同类型的自动化测试工具和框架,本文旨在为软件开发团队提供一套实用的指导方案,以提高测试效率和质量。

热门文章

最新文章

推荐镜像

更多
下一篇
无影云桌面