2.3 自动化测试方案

自动化测试是一项需要计划和设计的活动,在开始测试脚本的开发之前,应该考虑清楚采用怎样的自动化测试方案,采用怎样的自动化测试脚本开发方法。

2.3.1 选择自动化测试方案

采用什么样的自动化测试方案,需要考虑以下几个方面的因素:

(1)项目的影响:自动化测试能否对项目进度、覆盖率、风险有积极的作用,或者让开发更敏捷?

(2)复杂度:自动化是否容易实现,包括数据和其他环境的影响。

(3)时间:自动化测试的实现需要多少时间?

(4)早期需求和代码的稳定性:需求或早期的代码是否能证明是在一定范围内变化的?

(5)维护工作量:代码是否能长期保持相对稳定?功能特性是否会进化?

(6)覆盖率:自动化测试能否覆盖程序的关键特性和功能?

(7)资源:测试组是否拥有足够的人力资源、硬件资源和数据资源来运行自动化测试。

(8)自动化测试的执行:负责执行自动化测试的小组是否拥有足够的技能和时间去运行自动化测试?

以上方面的各因素对于选择什么样的自动化测试方案,达到怎样的目标,投入多少测试资源,自动化测试项目的进度安排,自动化测试用例的设计等都会造成一定的影响。

2.3.2 自动化测试脚本的编写方法

自动化测试项目也像普通的软件开发项目一样,有编码阶段,自动化测试的编码阶段主要是通过编写测试脚本实现所设计的自动化测试用例。自动化功能测试脚本的开发方式主要有以下几种:

· 线性的

· 结构化的

· 共享的

· 数据驱动的

· 关键字驱动的

2.3.3 线性脚本的编写方法

线性脚本编写方法是使用简单的录制回放的方法,测试工程师使用这种方法来自动化地测试系统的流程或某些系统测试用例。它可能包含某些多余的、有时候并不需要的函数脚本。线性脚本编写方法的特点是:

· 一种非结构化的编程方式

· 测试用例由脚本定义

· 非常低的开发成本

· 测试人员所需要的编程方面的技巧几乎可以忽略

· 不需要计划、设计

· 测试数据在脚本中是硬编码的

· 脚本会很脆弱,因此维护成本会很高

· 没有公用的脚本,因此可能造成重复劳动

2.3.4 结构化脚本的编写方法

结构化脚本编写方法在脚本中使用结构控制。结构控制让测试人员可以控制测试脚本,或测试用例的流程。在脚本中,典型的结构控制是使用“if-else”,“switch”,“for”,“while”等条件状态语句来帮助实现判定、实现某些循环任务、调用其他覆盖普遍功能的函数。结构化脚本编写方法的特点是:

· 结构化的脚本编写方法

· 测试用例在脚本中定义

· 编程的成本要比线性脚本编写方法略为高一点

· 需要测试员的调整编码技巧

· 需要某种程度上的计划、设计

· 测试数据也是在脚本中被硬编码

· 因为相对稳定一点,所以需要相对少的脚本维护,维护成本比线性脚本编写方法的要相对低

· 除了编程知识外,还需要一些脚本语言的知识

2.3.5 共享脚本的编写方法

共享脚本编写方法是把代表应用程序行为的脚本在其他脚本之间共享。这意味着把被测应用程序的公共的、普遍的功能的测试脚本独立出来,其他脚本对其进行调用。这使得某些脚本按照普遍功能划分来标准化、组件化。这种脚本甚至也可以使用在被测系统之外的其他软件应用系统。共享脚本编写方法的特点是:

· 脚本是结构化的

· 测试用例在脚本中定义

· 开发成本相对于结构化脚本编写方法来说,要降低一些,因为减少了很多复制的劳动

· 需要测试员的调整代码的编程技巧

· 由于脚本需要模块化,所以需要更多的计划和设计

· 测试数据也是硬编码的

· 脚本维护和维护成本要比线性脚本编写方法的相对低

2.3.6 数据驱动脚本的编写方法

数据驱动脚本编写方法把数据从脚本中分离出去,存储在外部的文件中。这样,脚本就只是包含编程代码了。这在测试运行时要改变数据的情况下是需要的。这样,脚本在测试数据改变时也不需要修改代码。有时候,测试的期待结果值也可以跟测试输入数据一起存储在数据文件中。数据驱动脚本编写方法的特点如下:

· 脚本是以结构化的方式编程的。

· 测试用例由测试数据或脚本定义。

· 由于脚本参数化和编程成本,这种方法的开发成本跟共享脚本编写方法比较要相对高。

· 需要测试员较高的代码调整方面的编程技巧。

· 需要更多的计划和设计。

· 数据独立存储在数据表或外部文件。

· 脚本维护成本较低。

· 推荐在需要测试正反数据的时候使用。

2.3.7 关键字驱动脚本的编写方法

关键字驱动脚本编写方法把检查点和执行操作的控制都维护在外部数据文件。因此,测试数据和测试的操作序列控制都是在外部文件中设计好的,除了常规的脚本外,还需要额外的库来翻译数据。关键字驱动脚本编写方法是数据驱动测试方法的扩展,其特点如下:

· 综合了数据驱动脚本编写方法、共享脚本编写方法、结构化脚本编写方法。

· 测试用例由数据定义。

· 开发成本高,因为需要更多的测试计划和设计、开发方面的投入。

· 要求测试人员有很强的编程能力。

· 最初的计划和设计、管理成本会比较高。

· 数据在外部文件存储。

· 维护成本比较低。

· 需要额外的框架或库,因此,测试员需要更多的编程技巧。

2.3.8 合理选择自动化测试脚本开发方法

总结起来看,对于开发的成本来说,随着脚本编写方法从线性到关键字驱动的改变而不断地增加;对于维护的成本来说,随着脚本编写方法从线性到关键字驱动的改变而在降低。对于编程技能要求来说,随着脚本编写方法从线性到关键字驱动的改变,对一个测试员的编程熟练程度的要求在增加。对于设计和管理的需要来说,随着脚本编写方法从线性到关键字驱动的改变,设计和管理自动化测试项目的要求在增加。

因此,应该合理地选择自动化测试脚本开发方法,在适当的时候、适当的地方使用适当的脚本开发方法。