手动测试,就是指完全依赖人工测试软件,主要根据测试用例来执行测试,但是测试用例也不可能100%覆盖软件功能还要通过其他方式来发现软件缺陷,这样就要求测试人员的经验要丰富并且具有发散思维的能力,通过错误猜测等方法来弥补测试用例没有覆盖的部分。
其实在软件测试过程中人工测试占很大的比重,任何软件测试都不可能离开人工测试,尤其是逻辑性很强的软件。人是有思维的,在测试过程中可以从不同的角度来思考问题,就如上面提到过的发散思维,所以人工测试也是发现软件缺陷最多的。但是它同样也存在一些问题:
人工测试代价比较昂贵,人员投入较大并且测试者做的是重复的劳动很容易产生精神疲劳从而导致错误的产生和测试盲点,有些问题在其他人看来很容易发现但是测试者却看不到。
自动化测试,就是借助于一些测试工具来执行测试。首先,对于一些基本的、逻辑性不强的操作可以使用自动化测试,比如现在使用自动化测试最频繁的回归测试。其次,有些测试是人工不能实现的或者实现起来成本较高的测试需要使用自动化工具,比如压力,负载测试等。
自动化测试有它的优点:
1、对于程序回归测试更方便,这也是自动化测试的主要用途之一,特别是在程序修改比较频繁的时候效果非常明显。由于测试的脚本和用例都是设计好的,测试期望的结果也可以预料,将回归测试自动化可以极大的提高效率缩短回归时间。
2、可以执行手工测试困难或不可能达到的测试,比如同时并发N个用户,不可能让N个测试人员同时测试,这时使用自动化测试工具模拟多用户并发从而达到目的。
3、更好的利用资源,可以让更多更繁琐的事情执行自动化测试,减少了测试的错误,同时也解脱了测试人员,使有限的人力资源可以充分利用。
4、测试的重复利用,由于自动测试通常使用的是自动化脚本技术,这样就可以只需要做较少的甚至是不修改就可以实现在不同的测试过程中使用相同的用例。
5、减少错误,由于测试的自动执行,所以不存在执行过程中的疏忽和错误,测试的质量完全取决于测试的设计。
同样自动化测试也有缺陷:
1、自动化测试没有思维,设计的好坏决定了测试的质量。
2、自动化测试发现的问题比手工测试要少的多。
3、自动化测试软件本身就是一个产品,它在运行的时候有可能影响被测软件的性能。
4、自动化测试并不是简单的录制和回放,需要修改脚本、设计场景等,所以他对测试设计人员的要求很高。
综上所述,测试工作无论是手工测试还是自动测试都是软件质量的保障途径,两者要有效的结合才能达到很好的效果,在测试过程中要准确的判断何时需要手工测试何时需要自动化测试才能保证测试的质量。