一般自动化测试比率不太高的情况下,通过自动化测试发现的多数属于“低级错误”,类似变量名写错、拷贝粘贴的代码没有改全、忘记提交修改代码等。如果应用自动化测试之后,这类问题有减少,可以认为自动化发挥了一定的作用。
同理,如果自动化实施后相关的特性、模块缺陷密度有下降趋势,也可以认为自动化发挥了作用。
当然仅仅靠数据是不能完全说明问题的,对这些数据进行分析才能准确反映真实情况。
那么,自动化测试对测试人员、测试团队有没有价值呢?
当然也有。除了在第一节提到的节省人力的价值外,自动化测试对测试人员和团队至少还有两个帮助:提升测试深度,及弥补手工测试不足。
尽管在第一节我们分析了自动化测试对于“解放人力”的作用没有预想的那么夸张,但不可否认的是,当它发挥作用时还是能够起到释放手工执行人力的作用。被“释放”的这些人力,并不会被“删除”,而是可以对产品进行更深入彻底的研究与测试。
当测试人员投入在反复执行同样用例的时间减少后,他们就可以对原本只是浅层次了解的特性与模块进一步地学习和研究,发掘更多的细节,从而设计出更加有针对性的用例,同时在测试执行时也能够更敏感地发现问题。
另外,还有一些手工测试执行难以覆盖的“死角”,通过自动化测试却能够很好地补充。
不如进行大规模数据测试,需要创建上千乃至上万条数据,通过手工执行,不仅仅是工作量大,而且对测试人员来说也是个枯燥乏味的过程,没人会愿意这样投入。此外,机械重复的工作会导致人员注意力分散,过程中会产生各种错误导致测试结果无效。
自动化测试就可以很好解决此问题。
再比如,我们常需要安排一些需要精确控制时间的测试,例如并发测试或延时操作。手工执行这些测试,可以看到很多滑稽而无奈的场面:3、4名测试人员嘴里喊着“1,2,3”同时点击鼠标;测试人员左手拿码表,右手操鼠标,点一下鼠标立即揿码表,等待码表技术达到30秒后立即又点一下鼠标......
别笑,没有自动化测试的帮助,你还必须得这样做。
手工执行这些用例,不仅仅是看起来滑稽,协调困难,而且更大的问题是没法做到精确控制。就算喊着号子协调动作,测试人员点击鼠标还是有快有慢,而且差距颇大。就算拿着码表读数,由于反应速度问题,时间误差还是很大。
自动化测试在很多情况下能够很好地解决以上的问题。因为同步、计时等操作都是通过机器来控制的。虽然仍然无法做到绝对同步,计时仍然有误差,但可控性已经远高于人手,而计时的误差精度也能够控制到不影响测试结果的程度。
除了以上所说对于开发、测试的价值之外,自动化测试当然还有更多的价值,比如降低产品风险、提升项目相关人信心等。业界对这些价值的认可度比较高,而且相对前面几点来说比较“虚”,不太容易度量,因此在这里就不深入讨论了。
四、结语
自动化测试可能是测试领域关注度最高的话题之一,可能也是存在误解最多的话题之一。
在本文中,我们首先分析了一下对自动化测试“解放人力”不切实际的期望,并通过举例计算,说明了自动化测试规模越大,成本越高,收益周期也越长的“残酷现实”。
我们还观察了一下再业界普遍存在的“自动化测试由测试人员做”的实践。除了指出自动化测试实际上是一个开发项目而不是测试项目外,我们还针对“自动化测试落实到开发团队”遭遇的障碍,给出了各种解决“药方”。
最后我们对自动化测试价值的一种误解进行了辨析,提出了自动化测试帮助项目团队预防缺陷、建立流程规范的价值,以及帮助测试团队提升测试深度和弥补手工测试不足的价值。
自然,对自动化测试的误解远不止于这三条,受作者本身经验以及文章篇幅限制,我们也无法一一进行辨析。
但是笔者期望通过这篇短文管中窥豹,提醒大家在自动化测试领域仍然存在众多误区。也期望我们在实施自动化测试之余,能够时时思考自动化测试的本质,还自动化测试这项活动以本来面目。
而诸位同仁在自动化测试实施过程中的经验总结,将是消除种种误解、打破各类“神话”最有效的武器!
本文出自《测试人》第3期