有了适当的目标之后,就要将它们作为测试——尤其是TiP测试的指导原则,并保证它们与整个Exchange项目的目标是一致的。我们最终选中了一组专注于效率和重用的原则。效率原则是指在复杂度最低的环境中用最快的速度找出正确的bug集合,OneBox是最主要的资产。另外,我们还选择将许多OneBox测试环境搭建在数据中心。使用以上方法时,会出现很多因数据中心网络和安全设置所产生的额外bug。重用变得至关重要,因为它意味着将现有的资产和过程扩展到数据中心和产品中,用于更快地产生好的测试结果。
在实验室完成功能测试,意味着我们要在产品线上做进一步的测试,通过扮演客户的角色来验证用户体验。一些TiP方法利用可测试性特性深入到在线网站的堆栈中去,但是在最初实施时,我们坚持使用模拟终端用户进行黑盒测试的方法。
第一步是让测试经理也支持这些指导原则,然后再与团队的资深成员紧密合作,并根据所有主要功能区对原则进行评审。这一过程保证了我们之间没有隔阂,并且能够很好地在不同领域利用测试人员的专业技术知识。这个虚拟团队定义了40多个场景,这些场景代表了视为最重要的功能的宽度。
第二步是决定如何将上面的40多个场景在整个产品系统中具体实施。如前所述,我们要尽可能地重用已有的资产,所以我们集中精力尽快定义和开发出所需的测试。最初实施时,我们决定使用现有的测试执行框架来运行测试,那样的话,就可以重用现有的测试报告工具、机器管理等,这也使得我们可以利用现有的自动化测试库。
我们的第一次实施的具体结构见图3-1。每小时执行引擎都会自动部署一台新机器,并安装相应的客户库、工具和测试,也安装一个“云定义”文件,该文件以一种通用方法描述了目标环境。测试本身并不知道目标环境的任何信息,通过这种抽象的方法我们可以指向某个数据中心、某个逻辑单元或者某台特定的机器(实际上现在是在预检入工作流中完成的)。
【小窍门】
另一种级别的抽象:将测试从机器和它们所运行的环境中分离出来。
图3-1是TiP系统拓扑结构的第一个版本,具有如下特点:
1)部署一台自动化测试主机,在特定的数据中心运行测试。
2)将测试结果发送到Focus测试执行(Focus Test Execution, FTE)服务器上,它将对测试结果进行处理(Focus是工具的名称)。
3)结果将保存到一个公用数据库上。
4)在运行过程中,TiP诊断服务周期性地对结果进行收集。
5)收集的结果会返回给数据库。
6)遇到问题时,产品bug会自动显示出来。
7)诊断服务给管理区发送一个请求信息,包含分页调度和报警信号的逻辑信息。
8)请求信息被发送到SCOM根管理系统(Root Management System,RMS)进行处理。SCOM的警报解除了,同时启动相应的响应处理机制。
图3-1 Exchange TiP第一个版本的系统拓扑结构
最初,在将服务提供(为用户注册和新建邮箱)给新用户之前,我们通过测试来验证服务的新部署。后来我们发现,尽管如此,与传统的以软件为中心的世界中我们只需保证软件质量不同的是,我们现在所经营的服务是一直变化的。不仅配置(域名系统(Domain Name System, DNS)、补丁、新的租户等)经常发生变化,更新的变化也很多,这意味着随着时间的增长,可能会遇到没有测试过或预料到的更新或者小的配置变动。根据我们的经验,即便是对产品来说安全的改变也可能会使服务中断。这也是为什么我们决定采用连续运行测试的方式,而不仅仅只是在进行部署的时候运行一次。
TiP具有一点类似产品服务监控器的作用;然而,相比于传统的轻量级服务监控,我们所运行的测试集更深入,端到端(end-to-end)场景鲁棒性更强。同样,TiP测试就变成了煤矿中的金丝雀,能对潜在用户面临问题提供更早的警报。过去是使用其他构建在Microsoft System Center顶端的基于代理的监控解决方案,然而,这些代理只是停留在单机器层面。TiP测试作为最终用户来运行,并且当它们使用性能降低的时候,会发出警告。
自动化测试最佳实践 连载七
发布时间: 2013-4-26 10:45 作者: 朱少民 等译 来源: 51Testing软件测试网采编
【真知灼见】
不要仅仅通过一种途径来实施自动化,尽可能使用多种有用的方法。不同方法之间可以互补并且往往比单独使用一个方法更有效。
作为我们整个决策的一部分,我们决定停止使用第三方服务,像Gomez和Keynote。虽然在整个决策中非常重要,这种类型的监控关注的主要是一些比较片面的场景(比如登录)的服务可用性。与此同时,TiP场景的宽度比其他测试要小(高级测试只有40个测试用例,而实验室运行的端到端的场景中有70 000多个测试),所以比一般服务的深度肯定是要大些。
通过使用自己的基础设施,例如,我们可以很容易地给手机的ActiveSync协议添加新的验证信息,这在传统的黑盒监控环境中是很难做到的,因为协议具有复杂性。另一方面是敏捷度,根据产品环境和测试本身,在数据中心我们可以进行更改并对更改作出快速回应。因此,正如只关注单机器的SCOM监控基础设施一样,这些TiP测试对外部黑盒测试是一种补充,而不是取代它。
3.4 每月服务评审记分卡样例
每个月都会对总体的服务质量(Quality of Service, QoS)进行一次评审,同时,根据上个月的结果进行有针对性的改进也是要进行评审的。这种评审有利于持续改进总体服务,并帮助改进TiP套件。这种每月的评审是由经理发起的,并且他每个月都参与其中,推动问答(Q&A)环节的进行。这也是他每个月深入实况网站并对其进行改进的一次机会。经理的支持和带动作用对任何一个类似这样的项目都是至关重要的,而我们从一开始就很幸运。图3-2所示是一个记分卡的例子。
图3-2 调整记分卡中的事故和调整情况
3.4.1 阅读记分卡
当你看到TiP记分卡时,提出的第一个最典型的问题就是:怎么阅读记分卡?这是一个很好的问题。
首先需要注意的是,图3-2中所示的记分卡只是每月进行评审的幻灯片中的某一页。首先将每月的数据放到一个很大的Excel数据表格中,然后高级管理层和其他团队将Excel中的每项数据放到一页幻灯片中进行评审。
图3-3显示了将记分卡按不同的区域进行分解后的情况。区域1提供了指向Excel表格中具体行的标记。因为幻灯片中空间有限,所以只显示了最近3个月的数据,但事实上,Excel电子表格包含的不仅仅只是这3个月的数据。在评审过程中,每个人都有这个Excel电子表格的一份副本,并通过在自己的笔记本电脑上进行评审来对幻灯片的内容进行更新。
区域2是细分(drill-down)后的区域的名字。在给出的例子中该区域的名称是“事故及调整情况”。
区域3是从Excel表格报表中拉出的数据。包括度量的名称以及最近3个月的数据。在图3-3所示的样例中,数据根据事故数量和服务组件,按月显示。当整个Exchange 云端服务的某个组件发生了一次故障,并需要人工干预来进行解决,则称为一次事故(incident)。通过最近3个月的数据,即便在已经达到每月目标的前提下,还可以帮助我们确认服务的发展趋势是好是坏。
图3-3 事故记分卡区域中的事故和调整
自动化测试最佳实践 连载七
发布时间: 2013-4-26 10:45 作者: 朱少民 等译 来源: 51Testing软件测试网采编
区域4是整个记分卡最重要的部分。在每个月评审之前还有一个预评审,是由负责改进该区域服务的工程师进行的。在遇到事故和调整的情况下,测试、开发和运营团队中的成员都会派代表参与预评审。他们分析数据,找出异常值和负面走向线。风险区域和关注区域分别用绿色和红色的圆点标记。在图3-2中,黑色的实心圆点代表红色,或者是PPT幻灯片中应关注的区域。有时候他们知道某一个度量的趋势走向不好的具体原因,但是更多的时候,他们只能进行猜测。此时就要依靠虚拟小组的成员来找出负面走向度量和异常值的根本原因。上述调查的结果就是图3-3中记分卡区域4的内容。通常,如果造成负面走向的根本原因是已知的,那么区域4中的内容就是一些总结性的建议补救方法。
【真知灼见】
对报表进行裁剪,使它仅提供你所需要的有用信息。
3.4.2 对事故和调整报表的处理
根据事故和调整记分卡,可以分析各个方面引起的事故。引起事故的原因包括SCOM服务器级别的监控器、TiP服务级别的监控器,以及与第三方监控一起运行的一些监控器,旨在保证我们与全球市场都有联系。影响我们减少用户方面bug的能力的两个主要因素是:一是监控过程中遗漏的真正问题的数量和严重性,另一个是等待时间(Time To Engage, TTE)。在整个行业和微软公司内部都有很多计算TTE的公式。对于Exchange来说,TTE是指从产品事故开始到找到合适的工程师(开发人员或测试人员)着手修复该故障所花费的时间(以分钟计算)。一般来说,不管是在业务时间还是之外,导致TTE很慢的最典型的原因是监控器遗漏。这两个度量紧密相关,并且是每个月关注的重点之一。它们中只要有一个出现问题,我们就要考虑需要更新哪个监控方案(SCOM、TiP,或第三方监控),有时候会给这3种监控方案都增加监控器。
TiP功能可用性记分卡用来提供粒子级别上服务可用性指标。可用性是通过以下公式来计算的:
通过为每个特性运行TiP,我们可以发现非客户影响的小的服务中断的发生,如ActiveSync中断。子服务中这种短暂的中断可能并不会对客户产生影响,但是却代表了服务的风险和退化。间歇失效或者(挂起)队列,与服务提供一样,通常都是可以在这个记分卡上显示出来的,但是并不是在关注调整的那张记分卡上(见图3-4)。
图3-4 TiP 功能可用性记分卡
【真知灼见】
经常利用自动化测试生成的信息来监控服务的发展、寻求进一步提高、保持自动化优势的前景,这是非常重要的。
(未完待续...)