我们在制定测试计划的时候,会考虑是否要运行自动化测试,如何运用等问题。要解决这些问题,我觉得应该首先搞清楚自动化测试的目的是什么,才能继续讨论自动化测试在整个测试阶段中的作用。

  在质量年会上测试时代网站负责人贺?讲到软件测试的目标是“高效的提高软件测试用例的覆盖度”,假设具备了这个目标是符合我们工作目标的前提,那么其中的高效二字正是自动化测试所需要做的。

  我认为高效体现在我们工作中是以下两点:一是提高速度,无论做什么事情速度快了,自然效率高;二是解放生产力,把需要重复做的和不需要思考的体力劳动交给机器来做,我们测试人员能够用更多的精力来做更重要的事情,比如思考新的测试用例来增加覆盖度等。

  我开始也曾认为自动化测试终会取代手工测试,也许还有别的人有这样的想法,但应该不是的,软件的自动化测试只是辅助性的测试,所谓辅,不能代替了主。谁敢保证,一个软件出来,用自动化脚本跑一跑ok,可以发布了?不可以。大家知道测试用例是无法穷尽的,那么自动化测试脚本本身是有局限性的,更何况我们现在的脚本多是针对纯功能的,覆盖到的也只是单个功能。因此过分的夸大自动化测试是错误的。

  那么也有的人认为自动化测试是没有用的,我们做过自动化的人可以问下自己,自动化测试发现了多少bug?在质量年会上,测试时间网站负责人贺?讲了一个事情:“他一次去一个公司做培训,然后公司的测试负责人拿了一个用QTP做的功能的脚本,非常详细,整个软件的流程都能够运行下来,那个测试负责人非常自豪得给贺?演示脚本的运行。后来贺?问他这个脚本用过吗?那个负责人说没有。那他们为什么要做这个脚本呢?他说是测试人员对这个感兴趣,觉得这个比较有技术含量,而且做出来给老板演示,老板会看得很高兴。”这个故事中没有说为什么这个脚本没有运行起来,我们这里不深究。现在思考一下自动化测试是否有用。答案是肯定的。如果拿bug来衡量自动化测试成果的话,那是错误的。纯粹为了发现bug的话,还是手工测试来的更快些。可以说自动化脚本中覆盖的测试用例大多是已经手工执行过的用例,它起到的作用也是回归测试和验证软件功能的作用,但是它所作的这些工作也是必不可少的。我们只有正确认识到自动化测试所充当的角色,才能够肯定它的作用。

  因此,我认为自动化测试的目的是,用快速运行的工具替代测试人员的一部分工作,并且随着工具不断改进和脚本的不断完善,使我们的测试工作越来越高效。