什么是自动化测试?
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。测试自动化可以在已经存在的正式测试过程中自动化一些重复但必要的任务,或者添加额外的难于手工执行的测试。
自动化测试的缺点
永远不可能代替手工测试:自动化脚本无法做到手工测试的覆盖率,不是每个测试用例都适合转换成自动化测试用例。复杂性极强的操作也只能通过手工测试来完成,如果写成代码的话会是件大麻烦事,得不偿失。比如验证当前页面的布局是否正确。
无法完全保证测试的正确性:自动化测试是由脚本组成的,它的核心任然是代码。简单来说,自动化测试就是程序测试程序,是程序就会有缺陷,所以不能保证测试工程师开发的脚本就一定没有缺陷,如果代码有 一个小小的逻辑错误,哪怕是一个条件判断的误写也会导致测试结果完全出错,当然对于自动化测试工程师来说,大多数的错误还是会在脚本调试中避免的。
手工测试发现的缺陷远比自动化测试的多:自动化测试几乎是无法发现新缺陷,大多是用来发现曾经发现过的缺陷在每个新版本下有没有重新出现。自动化测试更适合缺陷预防,而不是发现更多缺陷,自动化测试最大的用途就是回归。
对测试质量的依赖性极大:自动化测试的运行,首先是建立在手工测试质量稳定的大条件下,如果当前版本测试的质量不够稳定,运行自动化测试会非常不顺利,几乎是一种无用功白白浪费时间的行为。
测试自动化可能会制约软件发展:由于自动化测试比手工测试更脆弱,以及脚本维护受到限制,从而制约软件的开发。
自动化工具死板问题:自动化测试无法做到像人类一样随心所欲的创造,自动化测试好坏完全取决于测试负责人和测试开发工程师的思想与技术,和自动化测试工具没有任何关系,所有程序都是依靠输入代码的方式来告诉工具该怎么做。
成本投入高,风险大:自动化测试需要很大的成本投入,并且没有良好的成本分析与控制手段以及自动化测试计划,与执行过程控制,那么往往会导致自动化测试项目失败。白白浪费人力物力,还得不到任何回报。
自动化测试要求相对较高:自动化测试工程师要有一定的开发背景,开发技术越高,脚本质量也就越高,越具有想象力。
自动化测试适用范围
软件需求变动不频繁:测试脚本的稳定性决定了自动化测试脚本的维护性。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发过程,需要修改,调试,必要的时候还要修改自动化框架,如果所花费的成本不低于利用其节省的测试成本,那么自动化测试便是失败的。项目中某些模块相对稳定,而某些模块需求性很大。我们便可以对相对稳定的模块进行自动化测试,而变动较大的用手工测试。
项目周期较长:由于自动化测试需求的确定,自动化框架的设计,测试脚本的编写与调试均需要相当长的时间来完成,这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成,如果项目周期比较短,没有足够的时间支持这样一个过程,那么自动化测试便不可能实现。
自动化测试脚本可重复使用:自动化测试脚本的重复使用要从三方面来考量,一方面所测试的项目之间是否存在很大的差异性(如B/S系统和C/S系统的差异);所选的测试工具是否适应这种差异;最后,测试人员是否有能力开发出适应这种差异的自动化测试框架。