建立成功的自动化测试项目
发布时间:2016-08-19

     自动化测试可以为几乎所有开发或部署软件的团队带来上市时间、质量、生产力和可审核性上的巨大效益。例如,TestPlant 曾与全球领先的新闻出版商合作,将他们的应用更周期从3 个星期缩短至2 天,也曾帮助英国的一家主要银行将应用发布版本的缺陷减少了65%,还曾帮助全球五大零售商之一将他们所提供的应用数量增加了1 倍,却无需扩大原有测试团队。这些案例并不罕见——自动化测试确实已经为许多公司带来了极大的益处。但是,也有许多团队多年来付出了巨大的努力,想要推出自动化测试,却没能从中取得实在的利益。这是为什么呢?
    TestPlant 曾成功地与数百家公司合作部署了自动化测试,也分析过许多失败的自动化测试的尝试。我们从经验中总结出了成功案例必备的两大关键因素:
        1、项目管理恰当。

        2、时时有具备自动化测试部署成功经验的人士坐镇。而许多案例的失败正因为缺少了这两个因素。当你读到这两大成功的关键因素时,觉得是显而易见的。但事实却是世界上许多(可能几乎所有)自动化测试的新尝试都不具备这两大因素,因此最终都难以实现目标。


    本指南旨在帮助你建立成功的自动化测试项目。你可以将其作为为自动化测试部署而定义高质量项目规划的指导、模板和核查清单。
    提示:本指南假定项目高层已决定部署自动化测试,也就是说,已无需为项目创建商业案例;同时假定自动化测试工具也已选定。如有需求,未来可能发布包含以上内容的新版本,敬请提供反馈。

自动化测试部署项目主要分为以下三大步骤:

一、项目管理
    自动化测试部署必须有恰当的项目管理。任何合理的项目管理方式均可使用(如Agile、PRINCE2、CCPM等),但必须积极落实应用。
(一)指派项目经理。
(二)定义目标(包括商业和技术目标)。
下面来介绍定义项目目标的方法
    1. 项目自动化可以带来巨大的效益,但是任何能力的习得都并非一蹴而就,因此你的第一个项目不应有过大的野心。强烈建议你在投身大型项目前,先运行一个时间短、目标有价值且现实的试验项目。根据实际情况设定相应目标。
    2. 许多新的自动化测试部署项目完全专注于对已有人工测试过程进行自动化处理。人工测试过程通常会遗漏有效测试活动(如回归测试或兼容性测试),因为这些测试活动无法用人工测试的手段实现,但通过测试自动化,它们可以带来巨大的效益。反之,有些测试活动则无法通过自动化提供效益。所以,当你在定义输出目标时,需要考虑清楚哪些测试活动对成果目标有贡献,而自动化又对哪些活动更有利。
(三)制定基本项目规划;
(四)定义定期项目评审机制并制准备工作:

 
二、准备工作


 
 
(一)、已建立测试环境,并经过测试。
    不适当的测试环境最有可能导致时间浪费和测试结果的不可靠。因此,在开始创建和执行重要的测试脚本前,设计和建立一个可靠的测试环境十分重要。请注意,通过合理规划和资源配置,建立可靠的测试环境并不困难,但如果临时马虎处理,则往往会导致问题的发生。而且你必须保证在测试环境中做到充分的变更控制。这可能是最重要的潜在因素,因为如果没有变更控制,再完美的测试环境都有可能在项目发展过程中出现问题。没有变更控制,测试系统中可能会意外安装上被测应用程序的其他版本,配置可能被篡改,测试系统可能被卸载,浏览器和操作系统版本可能会自动升级,网络电缆可能会断开。
(二)、已与其他团队建立合作关系。
(三)、已定义测试结构、规则和框架。


    开始为你的测试用例创建自动化测试脚本前,你需要定义测试结构、规则和框架(以下简称“框架”) 此时,你可能会忍不住想试着定义将来需要的常见功能集合,在测试员开始为测试用例执行脚本前预先实现这些功能。但我们建议你不要这么做。因为我们的经验显示,许多预先实现的功能最终都从未被使用,而许多使用的功能则需要大幅重构,才能从实施在测试用例上的脚本上有效使用。此外,下了巨大的功夫撰写脚本却没有任何自动化测试用例能够证明,对积极性的打击将会很大。所以,我们建议,提前定义模块化的明确方法,再根据需要构建储存库,例如,第一个为测试用例执行需要“登录”的测试脚本的人应当意识到“登录”会成为一个常见功能,并将此脚本执行添加至储存库中。
(四)、建立和配置测试管理工具。
(五)、建立自动化测试执行框架。

    你当然非常希望一夜之间就自动完成测试运行,开始手动测试。而这其实可以通过使用测试管理工具来实现,例如像egg- Plant 一样专注于测试执行的工具,或类似Jira 的持续集成工具。别忘了还是要在开始测试前将工具安装配置完成。


(六)已定义配置管理,已建立基础设施。
      要安装一个类似Git 或Subversion 的配置管理工具(SCM,即软件配置管理)来储存测试脚本,而自动化测试执行应始终使用SCM内的一组固定脚本。使用SCM能够促进共享,保证所有的脚本变化都能得到记录,以及所有脚本都能经常得到备份。
(七)团队已经过培训。保证所有测试员都接受过关于所使用的测试工具、测试环境、配置管理和测试结构等内容的适当培训。

三、   持续性活动
    以上两个环节介绍了项目规划中应包含的一系列关键的准备工作。而本节则介绍了自动化测试项目的主要实施阶段中关键的持续性活动。
自动化测试项目不仅仅是撰写新脚本的问题,还有其他的重要活动需要恰当的资源支持和管理。项目失败的一常见原因就是只为前期的测试脚本创建工作安排了足够的人员,这就意味着其他活动的完成质量将很低(或根本无法完成),整个项目可能因此被迅速破坏。所以,你的项目规划必须将以下罗列的所有持续性活动都考虑在内:
测试用例定义、框架开发、测试脚本开发(平台)、测试脚本开发(其他平台)、测试执行、结果审阅和缺陷提交、测试脚本管理和环境管理。
 
温馨提示:TestPlant 的成就客户经理在阅读本文时纷纷表示“结果审阅”(和处理应对)是大多数项目最容易犯错的持续性活动。如果你没有仔细审阅测试结果并作出处理,你就无法从自动化测试中获得价值,你的测试也不可能具备鲁棒性。
以下是一个项目团队的典型资源配置范例:
? 测试用例定义:2 人(假设测试用例尚不存在)。
? 测试脚本开发和维护:4-5 人。
- 55% 测试脚本开发(平台)。
- 15% 测试脚本开发(其他平台)。
- 20% 测试脚本维护。
- 5% 框架开发。
? 测试执行和环境管理:1 人。
? 项目管理:0.5 人。


关于TestPlant
    EggPlant是全球知名的跨平台黑盒自动化测试软件。TestPlant 是一家国际软件企业,其总部位于英国伦敦市,以其高端的技术、飞速的发展和以出口为导向的活动而著称。该公司创建了EggPlant 这款领先的软件测试工具,帮助用户自动化传统意义上需要手动完成的软件测试和验证流程。EggPlant 被全球500 多家涉及各行各业的企业使用,包括国防部和安全机构、航空与航天工业、医疗保健和生命科学行业、金融和零售业、IT、电信和媒体行业等。已于2011年1月获得美国专利和商标局(US Patent andTrademarks Office)的批准和认可。
 
EggPlant技术
    EggPlant 是一款智能的自动化测试工具,能够查看处于测试中的系统上的显示屏。用户可以设置我们的图像识别算法,使其发现与预期结果相比存在哪些差异。他们还能调整EggPlant 来检测颜色——甚至是色调;EggPlant 可以在使用Silverlight,Flex 和Flash 的动态环境中运行;经过微调后能够适应定制的屏幕,而且EggPlant 每次识别一个前后不一致的问题后,就会保存一份含有错误屏幕截图的故障报告,便于开发人员日后参考。
    当测试工程师在一个测试环节(或手动测试)中使用 EggPlant,就会编译简单的“script(脚本)”命令。在 EggPlant 内集成的这种命令语言是“SenseTalk”,该语言已被证实极其简单易用,因为它是面向非开发人员的用户,他们不必进行计算机语言的培训即可使用。
    EggPlant 的另一项独特功能是双计算机方式。EggPlant 被加载到测试控制器上,并使用虚拟网络通信(VNC)与处于测试中的系统(SUT)建立一个链接。通过这种方式,用户利用一份EggPlant 许可证,便能测试分布在一个测试实验室或全球网络中各种操作环境下任何硬件上的大量系统。用计算机术语描述的话,EggPlant 是一款跨浏览器、跨平台的技术不可知程序,不但十分友好【它不“干预”处于测试中的系统】,还能与使用任何IP 地址的任何设备建立链接。已于2011年1月获得美国专利和商标局(US Patent andTrademarks Office)的批准和认可。