能够测试软件的所有功能的代表性测试用例。
专门针对可能会被修改影响的软件功能的附加测试。
针对修改过的软件成分的测试。
回归测试可以有选择地重复执行集成和系统测试的测试用例,回归测试变动比较小,同时测试所基于的实际硬件环境相对比较稳定。但回归测试要频繁地重复运行,需要的工作量很大,所以,回归测试最值得自动化。自动测试便于回归测试以非常高效的方式进行。
(3) 按测试内容分,接口测试、路径测试、功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、压力测试、可靠性测试、安装/反安装测试。
本文的测试系统主要针对集成测试和系统测试阶段,在这些阶段测试的内容主要是功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、压力测试、可靠性测试、安装/反安装测试。
1.1.2 自动测试的概述
自动化测试是借助于测试工具、测试规范,从而局部或全部代替人工进行测试及提高测试效率的过程。
自动测试相对于手工测试而言,其主要进步在于自动测试工具的引入。自动测试的一般定义[1]为:各种测试活动的管理与实施,包括测试脚本的开发与执行,以便使用某种自动测试工具来验证测试需求。测试活动的自动化在许多情况下可以获得最大的实用价值,尤其在自动测试的测试用例开发和组装阶段,测试脚本被重复调用,可重用脚本可能运行很多次。因此,采用自动测试可以获得很高的回报。
系统测试级上的回归测试是有效应用自动测试的情况。回归测试设法验证改进后的系统提供的功能是否按照规定执行,系统在运行中没有出现非预期变化。自动测试几乎可以不加改动地重用先前的测试用例和测试脚本,以非常有效的方式执行回归测试。
自动测试具有以下优点[4]:
(1) 能执行更多更频繁的测试,使某些测试任务的执行比手动方式更高效,可以更快地将软件推向市场;
(2) 能执行一些手动测试困难或不可能做的测试;
(3) 更好地利用资源,利用整夜或周末空闲的设备执行自动化测试;
(4) 将烦琐的任务自动化,让测试人员投入更多的精力设计出更多更好的测试用例,提高测试准确性和测试人员的积极性;
(5) 自动测试具有一致性和可重复性的特点,而且测试更客观,提高了软件的信任度。
但自动化测试仍然存在着一定的局限性[15]:
(1) 不能取代手工测试,不可能自动化所有的测试。如测试只是偶尔执行,或待测系统经常变动、不稳定,测试需要大量的人工参与时,就不适宜采用自动测试。
(2) 自动测试工具本身不具有想象力,只是按命令执行。而手工测试时测试执行者可以在测试中判断测试输出是否正确,以及改进测试,还可以处理意外事件。
(3) 自动测试对测试质量的依赖性较大,在确保测试质量的前提下,实施自动化测试才有意义。
(4) 自动测试在刚开始执行时,工作效率并不一定高于手动测试,只有当整个自动测试系统成熟,且测试工程师熟练掌握测试工具后,工作效率才会随着测试执行次数的增加而提高。
(5) 自动测试的成本可能高于手工测试。自动测试的成本大致有以下几个部分组成:自动测试开发成本、自动测试运行成本、自动测试维护成本和其他相关任务带来的成本。软件的修改带来测试脚本部分或全部修改,就会增加测试维护的开销。
1.1.3 测试与自动化测试概念的区别
测试[5]是通过执行测试用例实现,描述测试用例质量有四个特征:有效性、修改性、可仿效性和经济性。有效性指是否能发现缺陷、或至少可能发现缺陷;可仿效性指测试用例是否能测试多项内容,以减少测试用例的数量;经济性指测试用例的执行、分析和调试是否经济;修改性指每次软件修改后对测试用例的维护成本。通常要平衡这四个方面。
自动测试技术,与测试技术存在着很大区别。自动化的程度与测试的质量是独立的。无论自动执行还是手动执行测试都不影响测试的有效性和仿效性。测试本身的有效性直接导致测试的成败,而自动测试只对测试的经济性和修改性有影响,自动测试通常要比手动测试经济得多,自动测试的方法越好,长期使用获得的收益就越大。测试质量取决于测试执行者实现测试质量的技术;而自动化质量取决于测试自动化者的自动化技术。
原文转自:http://www.uml.org.cn/Test/200804098.asp