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

简介: 本节书摘来自华章出版社《 自动化测试最佳实践:来自全球的经典自动化测试案例解析 》一 书中的第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和整个监控解决方案中其他元素(单服务器并且由外到内)的空缺。

相关文章
|
4月前
|
开发框架 .NET 中间件
.net8 使用 license 证书授权案例解析
本文介绍了如何使用 `.NET CLI` 创建并改造一个 `ASP.NET Core Web API` 项目,以实现基于许可证的授权机制。具体步骤包括创建项目、添加必要的 NuGet 包(如 `Standard.Licensing` 和 `Swashbuckle.AspNetCore`),以及修改 `Program.cs` 文件以集成自定义的许可证验证中间件。项目结构中新增了 `LicenseController` 接口用于处理授权相关操作,并通过测试流程验证了默认天气接口在未授权和授权状态下的响应情况。整个过程确保了应用程序能够在启动时正确验证许可证,保障系统的安全性与可控性。
152 8
.net8 使用 license 证书授权案例解析
|
4月前
|
存储 设计模式 Java
重学Java基础篇—ThreadLocal深度解析与最佳实践
ThreadLocal 是一种实现线程隔离的机制,为每个线程创建独立变量副本,适用于数据库连接管理、用户会话信息存储等场景。
136 5
|
4月前
|
机器学习/深度学习 人工智能 搜索推荐
技术革新下的培训新趋势:案例解析
从最初的“试试看”,到如今的“非做不可”,企业培训已经成为央国企和上市公司不可或缺的战略环节。无论是AI与大模型的赋能,DeepSeek,还是具身智能、智算技术和数据科学的实战应用,这些课程都在为企业打开新的可能性。
|
7月前
|
NoSQL Java Linux
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
《docker高级篇(大厂进阶):2.DockerFile解析》包括:是什么、DockerFile构建过程解析、DockerFile常用保留字指令、案例、小总结
416 76
|
6月前
|
存储 人工智能 NoSQL
Tablestore深度解析:面向AI场景的结构化数据存储最佳实践
《Tablestore深度解析:面向AI场景的结构化数据存储最佳实践》由阿里云专家团队分享,涵盖Tablestore十年发展历程、AI时代多模态数据存储需求、VCU模式优化、向量检索发布及客户最佳实践等内容。Tablestore支持大规模在线数据存储,提供高性价比、高性能和高可用性,特别针对AI场景进行优化,满足结构化与非结构化数据的统一存储和高效检索需求。通过多元化索引和Serverless弹性VCU模式,助力企业实现低成本、灵活扩展的数据管理方案。
294 12
|
7月前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
|
7月前
|
存储 监控 调度
云服务器成本优化深度解析与实战案例
本文深入探讨了云服务器成本优化的策略与实践,涵盖基本原则、具体策略及案例分析。基本原则包括以实际需求为导向、动态调整资源、成本控制为核心。具体策略涉及选择合适计费模式、优化资源配置、存储与网络配置、实施资源监控与审计、应用性能优化、利用优惠政策及考虑多云策略。文章还通过电商、制造企业和初创团队的实际案例,展示了云服务器成本优化的有效性,最后展望了未来的发展趋势,包括智能化优化、多云管理和绿色节能。
|
7月前
|
监控 数据管理 测试技术
API接口自动化测试深度解析与最佳实践指南
本文详细介绍了API接口自动化测试的重要性、核心概念及实施步骤,强调了从明确测试目标、选择合适工具、编写高质量测试用例到构建稳定测试环境、执行自动化测试、分析测试结果、回归测试及集成CI/CD流程的全过程,旨在为开发者提供一套全面的技术指南,确保API的高质量与稳定性。
|
7月前
|
数据管理 测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
在当今快速迭代的软件开发环境中,自动化测试已成为确保软件质量和加速产品上市的关键手段。本文旨在探讨软件测试中的自动化测试策略,包括选择合适的自动化测试工具、构建有效的自动化测试框架以及实施持续集成和持续部署(CI/CD)。通过分析自动化测试的最佳实践,本文为软件开发团队提供了一系列实用的指南,以优化测试流程、提高测试效率并减少人为错误。
191 4
|
7月前
|
PHP 开发者 容器
PHP命名空间深度解析及其最佳实践####
本文深入探讨了PHP中引入命名空间的重要性与实用性,通过实例讲解了如何定义、使用及别名化命名空间,旨在帮助开发者有效避免代码冲突,提升项目的模块化与可维护性。同时,文章还涉及了PHP-FIG标准,引导读者遵循最佳实践,优化代码结构,促进团队协作效率。 ####
91 1

热门文章

最新文章

推荐镜像

更多
  • DNS