自动测试具有以下优点[4]:
(1) 能执行更多更频繁的测试,使某些测试任务的执行比手动方式更高效,可以更快地将软件推向市场;
(2) 能执行一些手动测试困难或不可能做的测试;
(3) 更好地利用资源,利用整夜或周末空闲的设备执行自动化测试;
(4) 将烦琐的任务自动化,让测试人员投入更多的精力设计出更多更好的测试用例,提高测试准确性和测试人员的积极性;
(5) 自动测试具有一致性和可重复性的特点,而且测试更客观,提高了软件的信任度。
但自动化测试仍然存在着一定的局限性[15]:
(1) 不能取代手工测试,不可能自动化所有的测试。如测试只是偶尔执行,或待测系统经常变动、不稳定,测试需要大量的人工参与时,就不适宜采用自动测试。
(2) 自动测试工具本身不具有想象力,只是按命令执行。而手工测试时测试执行者可以在测试中判断测试输出是否正确,以及改进测试,还可以处理意外事件。
(3) 自动测试对测试质量的依赖性较大,在确保测试质量的前提下,实施自动化测试才有意义。
(4) 自动测试在刚开始执行时,工作效率并不一定高于手动测试,只有当整个自动测试系统成熟,且测试工程师熟练掌握测试工具后,工作效率才会随着测试执行次数的增加而提高。
(5) 自动测试的成本可能高于手工测试。自动测试的成本大致有以下几个部分组成:自动测试开发成本、自动测试运行成本、自动测试维护成本和其他相关任务带来的成本。软件的修改带来测试脚本部分或全部修改,就会增加测试维护的开销。
1.1.3 测试与自动化测试概念的区别
测试[5]是通过执行测试用例实现,描述测试用例质量有四个特征:有效性、修改性、可仿效性和经济性。有效性指是否能发现缺陷、或至少可能发现缺陷;可仿效性指测试用例是否能测试多项内容,以减少测试用例的数量;经济性指测试用例的执行、分析和调试是否经济;修改性指每次软件修改后对测试用例的维护成本。通常要平衡这四个方面。
自动测试技术,与测试技术存在着很大区别。自动化的程度与测试的质量是独立的。无论自动执行还是手动执行测试都不影响测试的有效性和仿效性。测试本身的有效性直接导致测试的成败,而自动测试只对测试的经济性和修改性有影响,自动测试通常要比手动测试经济得多,自动测试的方法越好,长期使用获得的收益就越大。测试质量取决于测试执行者实现测试质量的技术;而自动化质量取决于测试自动化者的自动化技术。
图2-1说明了测试与自动化测试在测试用例的四个质量特征上的区别。
图2-1 测试用例质量Keviat图
1.2 自动化测试生命周期的概述
1.2.1 自动化测试过程
提到测试,一般都认为是使用测试用例进行测试,而事实上,这只是完整测试过程中的一个步骤,测试活动其实是一个过程,如图2-2所示,是一系列的步骤,通过这些步骤实现测试活动,导致测试的执行和测试产物的产生。测试过程有开发者、测试设计工程师和测试工程师的共同参与。包括了测试计划、设计、开发、执行和评估这几个步骤[1]。各个步骤分别又有不同的自动化工具提供支持。