自动化测试是通过人工操作使用软件来实现测试过程,通过软件来控制测试执行过程。但实际上仅仅使用软件来模拟手工测试的过程是不够的。一个完整的自动化,还需要能自动判断测试结果,即比较实际结果和预期结果是否一致,设置测试的前置条件和其他测试控制条件,并输出测试报告。通常,自动化测试需要在适当的时间将已经形式化的手工测试过程自动化。
本章主要包括以下内容:
·自动化测试目的和范围
· 自动化测试需要达到的程度
· 适合自动化测试的对象
1、 自动化测试目的和范围
从自动化测试小组的角度来讲,自动化测试的目的是开发一套能够支持自动化测试的工具。自动化测试小组负责设计并实现数据驱动自动化测试框架,不仅如此,还需要设计和构建用于回归测试的自动化测试套件。从企业的角度来讲,自动化测试的目的是提高测试效率,减少手工测试的工作量,进而达到节约测试成本的目的。
在自动化测试过程中,为了支持自动化测试脚本的开发和与测试有关的维护活动,必须对自动化测试框架进行专门的部署。自动化测试框架必须支持单元测试、集成测试、系统测试以及回归测试。自动化工作重心应放在某个特定领域的部署上。
所选择的部署方法应该能够覆盖自动化测试的所有工作。手工测试活动可以作为自动化测试的先导,其目的是使用手工测试的方法测试应用程序的所有特征。同时,在测试过程中需要开发一些测试条件和测试数据,这些测试条件和测试数据可以通过回归测试的自动化测试框架来实现。
2、 自动化测试需要达到的程度
自动化测试需要达到什么程度?这个问题在自动化测试工具发展的最初阶段就有人提出过。
▲ 首先,必须了解自动化测试工具的测试过程和被测试系统的测试过程(指手工测试时的测试过程)。测试工具与测试过程是不同的,工具是用于促进测试过程的,能被用于实现一个过程并执行测试过程的各种规范。在很多情况下,工具自带的内建程序可以被理解为过程,然而它们往往是不完整的,不能正确反映过程,最好的自动化测试工具是能够将工具与测试需求达成一致,并且提供高度可自定义的工作流程和跟踪报告能力。
▲ 其次,必须了解测试过程中涉及到的几个环节:测试计划、测试设计、测试构建、测试执行、测试结果的捕获和分析、测试结果验证和测试报告。在整个测试过程中这些活动都是密不可分的,只有将这些测试环节与自动化测试过程结合起来,才能更好地确定自动化测试需要达到的程度。
▲ 最后,所有领域的自动化测试都应该保证时间和成本在一定的控制范围内。实现的自动化程度越高,测试过程就越好、越有效,但所需的时间和成本就越高,项目的进度与成本影响自动化测试程度的高低。
自动化测试成本包括两部分:固定成本和可变成本。
固定成本通常包括以下几个方面:
·硬件;
· 自动化测试工具;
· 自动化测试培训;
· 自动化测试环境设计和搭建;
· 自动化测试环境维护。
可变成本通常包括以下几个方面:
· 自动化测试计划;
· 自动化测试用例设计;
· 自动化测试脚本开发;
· 自动化测试脚本维护;
· 自动化测试脚本运行;
· 自动化测试结果分析;
· 缺陷报告;
· 自动化测试执行数据保存。
3、适合自动化测试的对象
在实际工作中,什么样的系统或项目适合自动化测试呢?一般情况下可以从两个方面来考虑:
一是重复性和机械性程度;二是判断结果的智力程度。重复性和机械性越高的项目越适合进行自动化测试,而智力程度越高的项目越不适合进行自动化测试。
适合自动化测试的对象可以归纳为以下几类:
v重复性和机械性高的功能:
重复性和机械性越高的项目越适合进行自动化测试,因为重复性和机械性越高,说明回归测试的次数越多,并且给测试工程师带来疲倦程度可能会越高,这种情况很适合进行自动化测试。
产品生命周期:
一般产品生命周期越长的项目越适合进行自动化测试,因为产品生命周期长,说明脚本在后期软件升级后还可以使用,当然如果每个升级版本之间功能和界变换很大也不适合,但一般不会出现这种情况,而是新增一些功能,这样以前版本的脚本就可以直接使用,就可以更专注于新功能的测试。
多次执行 Build 版本:
如果在一个发布的版本过程中(如即将发行 V2.0),有多个 Build测试的版本,并且每个 Build 版本之间同一个功能修改的界面比较少,这种情况适合自动化测试。
多平台测试:
如果软件要支持多平台的运行(如软件需要在 Windows XP、Windows Vista、 Windows 7 和 Windows 8 系统运行),每个平台执行的测试用例都是一致的,这样可以采用自动化测试,只要将脚本在不同的平台运行即可,这样可以提高效率。
其实研究某个软件是否适合自动化测试,主要研究收益比(Return On Investment,ROI),即项目进行自动化测试需要的成本与进行手工测试需要的成本关系,很显然当自动化测试的成本比手工测试的成本低时,就可以实施自动化测试。
下面介绍一个简单的自动化测试投入回报率的计算方法:
(1)自动化测试成本=软硬件成本+脚本开发成本+(脚本执行一次的成本×脚本执行次数)+ (每个 Build 版本脚本维护成本×脚本执行次数);
(2)手工测试成本=测试用例设计成本+(手工测试执行一次成本×测试用例执行次数)+(每 个 Build 版本测试用例维护时间×测试用例执行次数);
(3)收益=手工测试成本-自动化测试成本;
(4)ROI(收益比)=收益/自动化测试成本。