自动化测试:真是银弹?[1] 自动化测试工具
测试自动化可能是每一名测试工程师的终极梦想,也有可能是终极噩梦。
在我们梦想的中的测试自动化是这样的:只要启动测试程序就会自动输出测试结果,报告哪里有错误和错误的原因。
自动化测试的定义
首先,我们来谈谈什么是自动化测试,它的实现方法是用机器代替人的手工操作,完成一系列的测试过程。从原理上看测试自动化也是一个标准的操作流程。
测试自动化实际上是在模拟人的手工操作,在现阶段手工测试在很多公司是一种艺术行为,同样一个模块不同的测试员会发现不同的问题,这与测试员的直接能力成正比,同时还与测试员的心情有直接关系,这实际上是一种无序的操作行为,这种现象的最大问题是随着人员的变动产品质量也在进行相就应的波动。
用一个比较形象的比喻,每次我们对产品实施测试就好象是织一张网,然后用网去捕虫,但是我们每次织网的方法都不一样,网也就会不一样,有时密有时疏,这就导致了有时我们会抓到好多的虫,有时又抓不到虫。如果我们每次织的网是一样的,那么抓到虫的数量也是基本不变,同时我们对网进行不断的改进,将疏的地方加密,这样就能抓到更多的虫。
测试自动化是代替人的手工操作,自动的发现产品中的问题,这就好比自动织网自动捕虫,我们所要做只是不断的补网,但如果没有标准操作,我们就不能补网,不知道要在哪里进行修补。这会出现两种情况:网抓不到虫,这样这张网就没有任何意义;每次都要做一张新网,可以捕到虫了,但成本太高。
让测试自动化真正发挥出强大的威力,就要对这张进行不断的修补。如果我们每次的操作都是相同的,再通过对结果的验证和补充,不断的完善,这样才能将发挥自动化的强大的力量。
通常,软件测试的工作量很大(据统计,测试会占用到40%的开发时间;一些可靠性要求非常高的软件,测试时间甚至占到开发时间的60%)。而测试中的许多操作是重复性的、非智力性的和非创造性的,并要求做准确细致的工作,计算机就最适合于代替人工去完成这样的任务。
计算机大师布鲁克斯曾在1986的一篇题为《没有银弹》的文章中列举了人们对于软件工程技术发展的一些期望,并与现实进行了对比。他的论点归纳如下:没有一种单纯的技术或管理上的进步,能够独立地承诺在10年内大幅度地提高软件的生*产率、可靠性和简洁性
布鲁克斯鼓励我们将技术和方法视作一种演进手段,而并非革命。将自动化技术引入测试工作时,我倾向于支持相同的观点。
在与自动化测试产品和解决方案的客户打交道的过程中,其间碰到了许多“银弹”思维方式。它们总以类似这样的设想出现:
1、所有的测试都能够实现自动化。
2、既然自动化测试能如此显著地提高生产率,我们就能以更少的人员完成所有的测试。
3、自动化测试如此简单,我们无需任何培训。
4、自动化方法将缩减整体测试工作量。
5、我们无需制订任何测试方案。
6、有了自动化测试,测试人员不就成了“过时的”或“多余的”的人。