本文共 3686 字,大约阅读时间需要 12 分钟。
优与劣
为何要开展自动化测试?手工测试与自动化测试相比孰优孰劣呢?本节针对该问题展开论述与讲解。
测试工作中,往往需要面对很多问题。经常可以听到测试工程师的抱怨,其抱怨内容大体如下:
v 重复、频繁的工作太多;
v 测试工作任务重,测试周期短,工作压力大;
v 创新性的工作太少,无法体现自己的能力与自己的人生价值;
v 测试结果有时需要精确到秒,手工测试来做太难了。
那如何将测试工程师从繁杂的测试工作中解脱出来?如何体现测试工程师的价值,发挥测试工程师的特长?又如何将测试结果精确到秒呢?
上述问题均可以通过自动化测试来解决,一方面提高了测试的工作效率,另一方面可以通过自动化测试体现测试工程师的能力,改变众人对测试工作的观点。
1.1 自动化测试定义
既然自动化测试可以弥补手工测试的一些不足,并能体现测试工程师的价值,那何为自动化测试?它又具备哪些特性?
自动化测试即借助于测试工具、依照测试规范,从局部或全部代替人工进行测试以及提高测试效率的过程。其具备如下主要特征:
v 自动测试过程是通过模拟人工操作,完成对被测试系统的输入,并且对输出进行检验的过程。
v 自动测试是由软件代替人工操作,对被测试系统的GUI发出指令,模拟操作,完成自动测试过程。
相对于手工测试,自动化测试可概括为如下几点:
v 优化成本:降低劳动量,降低测试成本;
v 可靠:提高测试的全面性,提高测试精确度;
v 快速:加快测试速度;
v 规范化:提供规范化的测试流程;
v 可重用:提高测试的重用性;。
1.2自动化测试与手动测试的关系
自动化测试既然有如此大的优势,那手工测试是否可以退出测试舞台呢?首先,,让我们思考几个问题。通过对如下问题的讨论,来解答读者的疑问。
1. 手工测试与自动化测试相比谁发现的缺陷多?
测试的主要目的是通过发现缺陷、解决缺陷来提高软件质量。通常,测试的执行需要依赖测试用例。而测试工作中执行测试用例的通用方法往往是手工运行测试用例。假想一下,如果某个测试用例被自动化,则首先应对自动化后脚本的正确性进行测试。
据统计数据显示:手动测试可以发现80%以上的缺陷,而自动测试只能发现20%左右的缺陷。这恰恰反映出自动化测试源于手工测试,且只是替代人工的重复性劳动。
2. 测试质量孰高孰低?
自动化测试(工具)只能判断实际结果与期望结果之间的差异。因此,在自动化测试过程中,测试任务就演变为验证实际结果与期望结果的一致性。而测试的目的是提高测试的质量。因此通过手动测试,测试质量更高一些。
3. 自动化测试与软件开发的关系?
自动化测试比手动测试更“脆弱”。软件开发过程中,部分功能的改变,也有可能使自动化测试崩溃。而由于自动化测试比手工测试开销大,并且需要不断的维护,这也限制了自动化测试的开展。
4. 自动化测试工具是否存在局限性?
自动化测试工具毕竟是软件,工具只可按预订指令执行。而自动化测试工具和测试者都可以按指令执行一组测试,但人拥有思想,可以按不同的方式、不同的思维完成相同的任务。
例如:测试工程师运行测试用例(或测试场景),执行测试执行过程中,经常需检查实际输出是否正确。此时,即使软件实际输出与期望输出一致,软件也有可能存在缺陷,测试者可以判断,而测试工具则不可。测试者可以发挥其想象力和创造力改进测试用例(或测试场景),而测试工具只有呆板的执行。
通过以上四个问题的讨论,可以得出结论:手动测试不会退出历史舞台,其有存在的价值。同时,手动测试比测试工具的优越性还有很多,手动测试可以灵活的处理意外事件。例如,网络连接中断时,手动测试就可以尽可能快地解决问题,然而这样的意外事件却可以让自动测试的执行终止。
以上,1.2和1.3小节分别阐述了自动化测试与手动测试存在的必要性,那么在测试工作中,何时引入自动化测试呢?自动化测试又有哪些优势呢?下面通过以下几节,逐一揭示。
什么时候适合开展自动化测试呢?
测试工作中,被测软件(或系统)需要多个版本的迭代。根据公司(或项目)的不同,版本发布的时间也存在差异。
开展自动化测试之前,首先需依照测试用例,对被测功能模块展开手动测试。当手动测试执行通过后,使用自动化测试工具,将手动测试的操作过程录制下来,并将正确的结果进行保存(被称为期望结果)。由于自动化测试工具记录的为关键性功能模块,被测软件(系统)的下一版本发布后,该模块仍应进行测试。
在软件新版本的测试中,启动自动化测试工具,运行前面录制好的自动化测试脚本。对比实际运行后的结果与预期结果,如不一致,则确定为缺陷;如一致,则认为该功能模块在新的版本中测试通过。
到此,可以得出一条结论:自动化测试,适合在被测软件(或系统)版本相对稳定后开展。如软件版本相对不太稳定,则会造成使用自动化测试工具录制的脚本在新的版本中回放失败,这样既浪费人力,又浪费时间。
1.4 自动化测试的优势
自动化测试的开展究竟能给测试工作带来哪些改进,带来哪些突破与欣喜呢?其实,自动化测试的特点即能够很好的概括自动化测试的优势。其主要特点如下:
1. 可重复
不可否认,软件测试有时确实是繁杂且重复性较高的工作。关键性功能模块要在不断迭代的测试版本中重复的测试,而这些工作,随着软件测试版本的迭代将一直持续下去。当开展自动化测试后,即可通过自动化工具来替代这些重复性工作。大大缩减回归测试的工作量与压力,有效提高工作效率,缩短回归测试的时间。
2. 可程序化
自动化测试深入开展后,将不再是简简单单的录制与回放,自动化测试将优化录制的测试脚本,大大提高脚本的灵活性与交互性。自动化测试录制后生成脚本,脚本中包含录制过程中生成的操作与数据。测试工作中,需用不同的测试数据覆盖不同的测试路径来满足不同的测试场景。
因此,数据维护将是一个繁杂的工作。可以将数据与录制的自动化脚本剥离,用外部数据源管理测试数据,而测试脚本只负责测试流程的组织。这样,就可以大大提高自动化测试的灵活性与可持续性。
后续自动化测试工作中,还可开发UI界面,使用UI驱动自动化测试脚本。增加自动化测试交互性。
3. 可靠,提高测试精确度
自动化测试可以执行一些手工测试难以达到或不可能实施的测试。例如,测试工作的执行要精确到秒;模拟大量用户同时对某一个功能点展开测试。这些工作都是手动测试无法实现或很难达到的。而开展自动化测试后,很容易实现这些测试需求。
4. 资源的有效利用
将繁杂重复的测试任务实现自动化,可以提高准确性和工作效率,提高测试工程师的工作积极性。将测试工程师从繁杂重复的工作中解脱出来,投入更多精力到其他的测试工作中(如测试质量),这更有利于测试质量的提高。在实际工作中,有些测试场景是仅适合于手动测试的,测试工程师可以专注于手动测试部分,提高手动测试的效率。
1.5 自动化测试实施的场景
1.4小节中提到,并非任何手动测试都适合用自动化测试来替代。究竟哪些场合适合开展自动化测试呢?
v 回归测试;
v 更多更频繁的测试 ;
v 手工测试无法实现的工作 ;
v 跨平台产品的测试;
v 重复性较强的操作 。
哪些场合又不适合开展自动化测试呢?
v 软件版本不稳定;
v 涉及与物理设备交互的测试;
v 测试结果较容易通过人工判断的测试。
当前,很多企业或管理者期望借助软件测试自动化作为催化剂,提高效率、提高质量,同时,节省开支。甚至有些企业希望实施自动化测试后,就能够给企业带来效益。
在此,可以肯定的是自动化测试已经在很多领域成功实施,也有很多成功案例给了企业希望,并且这些企业成功实施自动化测试后,确实节省了相当可观的费用。而不幸的是,也有很多失败的案例,即使在看到光鲜的成功案例背后,也有失望与失败的过程。身边也有很多企业不止一次尝到了自动化测试失败的滋味。花巨资购买自动化软件,被搁置,努力化为了泡影。失败的结果不仅仅造成了人力、物力的损失,更是直接给公司带来了经济上的损失。
测试自动化实施前期需要考虑很多因素,人力、物力、财力都是需要认真考虑与规划的。自动化测试在整个测试周期中何时开展,哪些测试工作可以由自动化测试替代,这些都需要在开始部署自动化测试前,认真的思考。影响自动化测试效率的因素,不单单是大家看到可量化的测试工作,还有许多无形的因素影响着自动化测试,如测试组织的部署等。因此,在真正实施前一定要认真规划和考虑自动化测试实施方案。
自动化测试的实施过程,完全不同于手动测试。自动化测试用例与手工测试用例也大不相同。自动化测试实施过程中,需要不断的开发与维护脚本,因此对测试人员能力有很高的要求。
自动化测试实施前,需要认真分析与规划测试方案,计算自动化测试的成本。自动化测试成本包括以下几方面:
v 软件成本:自动化软件产品购买的费用;
v 培训成本:自动化测试工程师培训费用;
v 人力成本:自动化测试用例和测试脚本的编写的人力成本。
只有合理的规划自动化成本,站在全局角度考虑自动化的成本与收益,方可增加自动化方案成功实施的可能性。
转载地址:http://gqiox.baihongyu.com/