自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
一、项目测试的自动化
自动化是测试工程师必须掌握的技能,不管是使用自动化测试工具还是开发自动化测试工具,都是软件测试发展的方向,因此测试工程师一定要掌握这方面的技能。
虽然说项目的临时性特征使得项目不太适合做自动化测试,但是客户要求我们做自动化测试,况且自动化测试也是软件测试技术发展的最终目标,所以有必要学习和运用自动化测试技术,以提高测试的效率。
二、自动化测试面面观
自动化测试就是指通过测试工具或其他手段,能够按照预定计划对软件系统进行自动的测试。它是软件测试的一个重要组成部分,它能够完成许多手工测试无法完成或者难以实现的一些测试工作。
自动化测试是相对于手工测试来说的,所以说只要使用了工具执行的测试,都可以称之为自动化测试。软件测试自动化涉及到测试流程、测试体系、自动化编译,以及自动化测试等方面的整合。
现在很多外包项目都要求对系统进行自动化测试,对自动化测试本身的要求也是越来越高。但是在外包项目进行期间,要把自动化测试进行好,需要做好前期的规划和技术准备工作。
1.适用情形
可以采用的自动化测试情况有以下几种:
外包项目周期大于3个月,欲投入资源相对估算的外包项目工作量有余量。
对基本稳定的系统进行测试。功能、技术和界面都要不轻易改变,否则维护脚本的代价会超过自动化测试带来的好处。
系统中有数据量大、重复度高的测试。
对于结果可预测的系统,如果自动化测试中可验证的结果不可以预测,那么进行自动化测试的意义不大。
系统人机交互界面能够被自动化工具所识别,支持自动化脚本录制。
外包项目管理层要考虑进行自动化测试所要投入的资源,包括是否已经具备了自动化测试所需要的流程和方法,自动化测试工具是否具备,是否有测试工程师熟悉自动化技术且具有外包项目经验等。
2.自动化测试优势
自动化测试的优势有如下几点。
1)自动提高测试质量
软件开发的过程就是一个持续集成和改进的过程,而每一次修改都有可能产生错误。因此,当软件产品的一部分或者全部应用环境被修改时都需要对软件产品重新进行测试,其目的是验证修改后的系统或者产品的质量是否符合规格说明。例如,对于产品型的软件来说,每发布一个新的版本,其中大部分功能与界面都和上一个版本相似或完全相同,这部分功能特别适合于自动化测试。
由于自动测试工具提供了简便的回归测试,能以便利的方式验证是否有新的错误进入软件产品,这样既节省了重复手工输入的工作量,又保证了测试案例的一致性,避免了人为因素的干扰,也可以让测试达到每个质量特性的目的,从而提高软件测试的质量。
2)提高测试效率,缩短测试工作时间
软件系统的规模越来越大,功能也越来越多,达到几千个甚至上万个,因此人工测试非常耗时和烦琐,这样必然会导致测试效率低下,而使用自动化测试工具可以较好地执行这些频繁的测试任务。在充分并合理使用了测试工具以后,可以减轻测试工程师的手工测试工作,同时,测试工具还可以把控制和管理引入整个测试过程,从而保证测试的进度。
3)提高测试覆盖率
通过自动化测试工具的录制回放及数据驱动来测试功能,可以提高测试覆盖率。通过测试工具的辅助分析功能,可以提高测试的深度。
4)执行手工测试不能完成的测试任务
有些非功能性方面的测试(如压力测试、负载测试、大数据量测试、崩溃性测试等)是人工测试不可能实现的。例如,找若干台电脑和同样数目的操作人员在同一时刻进行操作,然后用秒表记录下反应的时间。这样的手工作坊式的测试方法不切实际,且无法捕捉程序内部变化的情况。
5)更好地重现软件缺陷的能力
自动化测试具有更好的一致性和可重复性。由于每次自动化测试运行的脚本是相同的,所以每次执行的测试具有一致性,这是人工很难做到的。由于自动化测试具有一致性,因此很容易发现被测软件的任何改变。
6)更好地利用资源
理想的自动化测试能够按计划完全自动地运行,在开发人员和测试人员不可能实行三班倒的情况下,自动化测试可以胜任这个任务。例如,完全可以在周末或者晚上的时间执行测试。这样可以充分利用资源,也避免了开发和测试之间的冲突。
7)增进测试人员与开发人员之间合作伙伴的关系
测试工程师为了更好地使用自动化测试工具,需要对开发技术有深入的理解和实践,因此测试工程师也有了与开发工程师更多、更平等的交流机会,自动化测试为测试工程师与程序开发人员协同工作提供了一个便利的手段,双方将有更多的合作。
3.自动化测试的局限性
我们应根据外包项目情况来确定是否采用自动化测试,如下几种情况不适合进行自动化测试:
定制外包项目。由于这种外包项目周期一般比较短,采用自动化测试需要的投入会超过手工测试的投入。
不稳定的软件由于其不稳定因素会导致自动化执行失败,因此不适合进行自动化测试。
周期很短的外包项目。外包项目周期很短,相应的测试周期也很短,因此花大量精力准备的测试脚本不能得到重复的利用。当然,为了某种特定的测试目的专门执行的测试任务除外,比如针对特定应用的性能测试等。
业务规则复杂的对象。业务规则复杂的对象有复杂的逻辑关系和运算关系,工具很难实现,或者要实现这些测试过程,需要投入的测试准备时间比直接进行手工测试所需时间更长。
人体感观与易用性测试。界面的美观、声音的体验、易用性的测试,无法用测试工具来实现。
期望通过自动测试发现大量缺陷替代人员投入。
涉及物理交互的系统或业务规则非常复杂的系统。
【编辑推荐】