2.2 如何开展自动化测试

自动化测试应该被当成一个项目来开展,自动化测试工程师应该具备额外的素质和技能,并且在开展自动化测试的过程中,要注意合理地管理和计划,从而确保自动化测试成功实施。

2.2.1 选取合适的测试项目来开展自动化测试

自动化测试只有在多次运行后,才能体现出自动化的优势,只有不断地运行自动测试,才能有效预防缺陷、减轻测试人员手工的回归测试的工作量。如果一个项目是短期的,并且是一次性的项目,则不适合开展自动化测试,因为这种项目得不到自动化测试的应有效果和价值体现。

另外,不宜在一个进度非常紧迫的项目中开展自动化测试。有些项目经理期待在一个进度严重拖延的项目中引入自动化测试来解决测试的效率问题,结果适得其反。这是因为,自动化测试需要测试人员投入测试脚本的开发,同时,需要开发人员的配合,提供更好的可测试的程序,有可能需要对被测试的软件进行改造,以适应自动化测试的基本要求,如果在一个已经处于进度Delay状态的项目中开展自动化测试,则很可能带来反效果。

2.2.2 确定自动化测试介入的时机

过早的自动化会带来维护成本的增加,因为早期的程序界面一般不够稳定,处于频繁更改的状态,这时候进行自动化测试往往得不偿失,疲于应付“动荡”的界面。

那么,什么时候开始自动化测试项目呢?自动化测试不应该在界面尚未稳定的时候开始,但是,并不意味着不需要计划和准备工作。在界面雏形时期,可以基于界面原型提供的控件来尝试自动化测试工具的适用性,因为有些控件是自动化测试工具不能识别和测试的。这时候,就要考虑工具的选择问题。

在开发人员着手开发一些核心的代码时,可能会同时开发出一些核心可重用的控件,而且是那种自定义的个性化控件,那么就需要在这个阶段取到这些控件,并且尝试使用自动化工具来测试这些控件,如果发现有不适用的地方,则要考虑让开发人员重新设计控件,或者提供更多的测试接口。

2.2.3 自动化测试工程师的知识体系

自动化测试工程师应该具备一定的自动化测试基础,包括自动化测试工具的基础、自动化测试脚本的开发基础知识等;还需要了解各种测试脚本的编写和设计方法,知道在什么时候选取怎样的测试脚本开发方式,知道如何维护测试脚本;需要具备一定的编程技巧,熟悉某些测试脚本语言的基本语法和使用方法。

另外,自动化测试工程师与手工测试的工程师一样,需要具备设计测试用例的基本方法和能力,具备软件涉及的基本业务的理解能力。而且,应该有把测试用例转换成自动化测试用例的能力。

技巧

熟悉和了解各种编程语言、编程工具,以及各种标准控件、第三方控件,则会对自动化测试脚本的编写大有裨益。

作为一名专业的自动化测试工程师,不应该仅仅局限于对工具的掌握和使用,应该建立测试的自动化知识体系(ABOK,Automation Body of Knowledge),包括:

(1)自动化在软件测试生命周期( STLC )中的角色。例如,软件测试自动化与软件测试之间的区别、测试工具选购与整合、自动化的益处与误解、自动化的 ROI 计算等方面的知识。

(2)测试自动化的类型和接口类型。例如,自动化除了功能测试自动化外,还可以包括单元测试自动化、回归测试自动化、性能测试自动化等。需要知道,除了GUI类型的自动化测试外,还有命令行接口、应用程序编程接口(API)的自动化测试。

(3)自动化测试工具。了解各种类型的自动化测试工具,知道如何进行测试工具选型。

(4)测试自动化框架。包括自动化的范围、角色和职责的定义,了解框架的发展过程。

(5)自动化框架设计。掌握自动化测试框架设计思想和开发流程。

(6)自动化测试脚本思想。包括测试用例的选择、自动化测试的设计和开发、自动化测试的执行、分析和报告。

(7)自动化测试脚本质量优化。考虑自动化测试脚本的可维护性、可移植性、灵活性、健壮性、可扩展性、可靠性、可用性、效率等方面的问题。

(8)编程思想。掌握包括变量、控制流、模块化、面向对象等方面的编程思想。

(9)自动化对象。包括识别应用程序对象、对象映射、对象模型、动态的对象行为等方面的知识。

(10)调试技巧。了解常见的测试脚本编程错误类型,懂得相关的调试技巧的使用。

(11)错误处理。了解错误处理的常用手段,掌握错误处理脚本的开发过程(诊断错误->定义错误捕获机制->建立出错日志->创建错误处理函数)。

(12)自动化测试报告。一般包括高层(测试集/测试脚本)报告和底层(验证点)报告。

2.2.4 考虑自动化测试的成本

IBM 的网站上提供了一个自动化 ROI 计算器(如图2.1所示):http://www-01.ibm.com/software/rational/offerings/testing/roi/tool/ROI_Rational.html

图2.1 自动化ROI计算器

这个ROI计算器可以根据输入的测试项目基本情况计算引入自动化测试后能否为项目节省成本,节省多少成本。

成功开展自动化测试必须考虑自动化测试的成本问题。成本包括测试人员、测试设备、测试工具等。

(1)应该能抽出专职的测试人员进行自动化测试脚本的开发,并且抽调的测试人员不会对已有的手工测试人员造成影响,需要保证自动化测试的开展不会影响到手工测试的正常进行。

(2)自动化测试可能需要额外的测试设备,例如,测试执行的机器、文件服务器、数据库等。应该能为自动化测试准备专门的测试设备。

(3)有引入测试工具或开发测试工具的成本预算。缺乏工具的自动化测试是不可能实现的。在上马一个项目的自动化测试之前应该进行测试工具的引入准备、测试工具的培训工作的开展等。

(4)某些项目选用了很多第三方控件或自定义的控件,而这些控件的可测试性非常差,那么对这个项目进行自动化测试的成本会非常高,不适宜进行自动化测试。

2.2.5 制订自动化测试项目计划

规范化的自动化测试项目都会遵循一定的计划来开展,下面给出一份测试自动化项目计划模板供读者参考:

1 工作阶段分解

1.1 项目启动阶段

1.1.1 评估过去的项目

1.1.2 目标范围

1.1.3 效果衡量

1.1.4 团队成员构成

1.1.5 招聘

1.2 早期项目支持阶段

1.2.1 目标和目的

1.2.2 约束调研

1.2.3 可测试性评审

1.2.4 需求评审

1.2.5 测试流程分析

1.2.6 组织介入

1.3 测试自动化计划阶段

1.3.1 测试需求

1.3.2 自动化测试策略

1.3.3 可交付的成果

1.3.4 测试程序参数

1.3.5 培训计划

1.3.6 技术环境

1.3.7 自动化工具兼容性检查

1.3.8 风险评估

1.3.9 测试计划归档

1.3.10 自动化测试数据

1.3.11 自动化测试环境

1.3.12 角色和责任

1.3.13 自动化测试系统管理

1.4 测试自动化设计阶段

1.4.1 原型自动化测试环境

1.4.2 自动化技术和工具

1.4.3 自动化设计标准

1.4.4 自动化脚本编码计划

1.4.5 测试自动化库

1.5 自动化开发阶段

1.5.1 自动化脚本编码任务分配

1.5.2 脚本同行评审

1.5.3 测试脚本和工具的改进

1.5.4 测似脚本配置管理

1.6 自动化集成阶段

1.6.1 环境建立

1.6.2 测试阶段执行

1.6.3 自动化测试报告

1.6.4 问题处理

1.7 自动化过程改进阶段

1.7.1 测试工具/脚本评估

1.7.2 回顾和评审

1.7.3 维护测试过程库

1.7.4 自动化内部知识网

1.7.5 持续培训

2 时间表

2.1 关键里程碑

2.2 迭代周期目标的实现

2.3 项目进度表

3 项目资源

3.1 组队计划

3.2 资源需求计划

3.3 培训计划

3.4 预算

4 项目监控

4.1 自动化效果评估

4.2 进度控制计划

4.3 预算控制计划

4.4 报告计划

4.5 度量计划

5 配套流程

5.1 配置管理计划

5.2 缺陷跟踪和问题处理

5.3 自动化框架评估

5.4 框架归档计划

5.5 过程改进