原文来自09年我所编写出版的《软件测试精要》一书
在软件开发周期中,bug发现得越晚其修改的代价就越高。我们除了在手动测试领域多花精力和资源,提高手工测试发现bug的效率外,还有没有新的方法,可帮助我们较早、较快地发现bug呢?
(|'X3Rg]0实施自动化测试就可以帮助我们达到这个效果。因为自动化测试可以提高软件测试的速度及精确度和灵活度,使公司能更早发现和改正bug。而当有限的IT资源和紧张的交付时间使得手工测试对于满足业务目标来说过于耗时的时候,如果继续采用手工测试,将会过多地消耗有价值的时间和资源。根据Aberdeen Group一个独立行业分析公司的报告,90%的IT项目交付出现延迟,手工测试是其中一个因素。当手工测试需要进行测试操作系统、客户端设备、业务过程和数据集等多种因素的组合时,需要验证功能的测试用例数量会很大,工作量会非常大,测试时间也会过长。这时与手工回归测试花费的时间过长相比,使用自动化测试将会节省大量的时间。
Rx^
uQ&c Z0为了改变手工测试的这些短板,人们开始使用自动化测试。不过,正如上一节所谈到的,自动化测试不是完美的,自动化测试同样需要和手工测试互相配合,优势互补,才能发挥出它的优势。我们也不可能在每个部分都采用自动化测试,而是应该寻找能够带来最大回报的部分,把自动化测试集中在关键的业务过程、复杂应用,以及由这些组成的用例方面。51Testing软件测试网dqFF)@h
下面看看自动化测试与手工测试相比所具有的优势:51Testing软件测试网gA/LG7H2ps
大大缩短回归测试项目的时间,在减少了人力投入的同时,更能保证研发项目能按时发布,甚至能缩短研发周期,提前发布产品。51Testing软件测试网5j'?$aI*F1v
E
在同样的产品研发时间内,能对产品进行更全面的多次测试,将新引入的问题尽可能多地在产品发布前挖掘出来。51Testing软件测试网%q/u7_?/x.u
能保障回归测试的质量。因为每次自动化回归测试都是保持同一个标准的步骤、环境和测试方法,所以测试结果具有一致性。
dr(d(B dK0^0让更有经验的测试工程师从回归测试中解放出来,专注于新测试方法的研究,来发现更多深层次的产品问题。
e5Oo
_ADM0减少测试工程师人数,降低研发成本。因为实施自动化回归测试后,厂商就不用像以前一样保留非常多的人力来专职进行回归测试了。
#CR0{]BK%@FL1K0能避免因测试人力和时间的紧张,而降低了回归测试的质量要求,导致引入了新问题而未被发现。51Testing软件测试网:z[y
sz
没有手工回归测试中因为测试工作的重复性,导致测试工程师对已测过的功能过于自信,从而测试覆盖面不全,新引入问题没被发现的人为隐患。
rtZ|"^0避免了部分工程师因非主观的疏忽大意而引入了新的问题。
Q9Z
PA,tK2NF0除了以上笔者想到的自动化测试的优势外,在网络上还有其他测试同行总结出的一些自动化测试可以带来的好处。包括:
eK%o+J+d
fPJks0(1)快速执行
0gJkL+V6T|0计算机在执行功能测试脚本的时候比人快得多,因此在有限的时间里能测试得更多,在给定的时间里更多的应用可以被测试,可以按时完成更多的工程。和人不同,计算机一天工作24小时,还包括晚上、周末和假期,它们不会感到无聊或者疲倦,而且它们从不对该做的事情和不该做的事情自作主张。
,x$K|y!Xf0(2)提高测试覆盖51Testing软件测试网$T?1aGS/u
q_:w
用自动化测试的工具对不断变化的应用和环境做回归测试,要比手工测试容易得多。通过整合的数据驱动表单的功能,自动化测试允许开发和测试团队执行计算、操作数据集,以及快速创建多种反复的测试,使得扩大测试覆盖范围。51Testing软件测试网Hp8rm pM(R#F!Xi
(3)提高测试精确度并提早发现更多错误51Testing软件测试网`'Lq6fZ/r:zhw
自动化测试给开发人员提供了一种再现和记录软件缺陷非常容易的方法。这将在所有环境、数据集和业务过程等之间确保功能的正确性,同时对开发过程起到加速作用。51Testing软件测试网;DTL _bd$B
(4)提供规范化的过程51Testing软件测试网P]"_? pXP~5wJX
自动化测试鼓励测试团队规范化他们的过程,以得到更高的一致性和更好的文档记录。51Testing软件测试网[QA0`7Ex2rK
(5)提高测试的重用性51Testing软件测试网:H-\{pS&_'c
测试一旦脚本化,开发人员就可以使用和重用这些脚本,可以将脚本添加到测试套件中,以适应应用的变化。没有必要为每个应用的相同功能重新创建脚本。
"oi4gE
w.N7ba*U0综上所述,可见自动化测试为整体测试目标带来很多益处,它能够帮助我们改善手工测试过程中的缺陷和不足。
? N-W#{zEX$R[0与自动化测试相比,手工测试则有如下一些优势,这是自动化测试无法替代的。51Testing软件测试网3^hj6OF|
大大发挥人的创造力和主动性,能设计出更多的测试方法来发现bug。51Testing软件测试网\LTx"M]X
更敏锐的洞察力,能从一个稍纵即逝的小异常挖掘出大问题。51Testing软件测试网$|g1?V I\;dM
测试的领域不仅仅局限于回归测试和性能测试。51Testing软件测试网6M}UBW6eUi
能构建非常复杂的测试场景。51Testing软件测试网d)|N"T;h)d
能做一些因实施难度很大,而无法转成自动化的测试。51Testing软件测试网S6oeF*c"[r
一些需要人眼感官判断的测试。51Testing软件测试网9\/wE?,t
手工测试是思想之源,是测试的大脑。手工测试设计的水平高低直接影响着自动化测试的价值。51Testing软件测试网$]x'H|9^|(_x!xt
正因为自动化测试和手工测试的特点不同,所以对于自动化测试工程师和手工测试工程师的技能特长要求也应该不一样。
0A(i},J(H bfW6XE0手工测试工程师需要很强的产品相关业务知识,思维发散且具有创新精神。执行手工测试时,通常需要一个有头脑、善于思考、具有观察力的测试工程师,他能比自动化测试更灵活、机动地创造出新的测试方法,更敏锐地发现稍纵即逝的异常情况。
qde1zp|5\
I
b0而自动化测试工程师则需要具有较强的编程能力、严谨的逻辑能力和分析定位能力。同时自动化测试工程师又可细分为两类:一类是自动化测试脚本开发工程师,另一类是自动化测试脚本执行工程师。两类自动化测试工程师要求的素质也有所不同,自动化脚本开发工程师专注于编程规范;自动化测试脚本执行工程师则需要具有非常强的快速分析定位能力和严谨的逻辑能力。
`r+gH"S2w0 通过上面对自动化测试和手工测试特点的描述,大家对自动化测试和手工测试之间不同定位、优势互补的特点有了一定正确的认识。笔者认为,手工测试是整个测试的核心和基础,而自动化测试则具有锦上添花的作用,它无法完全替代手工测试,却可以解决手工测试无法解决的一些问题,间接地帮助手工测试提高效率和质量。二者应该是互相依赖、优势互补、无法完全替代的关系。唯有二者在各自合理的领域进行高效的配合,才能帮助测试团队取得更好的测试绩效