自动化测试的特点:
● 可以运行更多更频繁的测试用例。
● 可以执行一些手工测试困难或者不可能做的测试。如对不可视对象的测试,利用面向对象的自动化测试脚本就很容易实现。
● 可以更好的利用资源。在夜间执行自动测试用例。
● 测试具有移植性和可重复性。好的测试脚本往往具有较好的平台移植性。
● 可以更快地将软件推向市场。因为自动测试节省了大量的时间。
但是自动化测试要求的先期投入比较大,而且要求人员必须经过严格的培训。
所以手工测试和自动化测试各自适用的场合如下:
● 测试很少执行的项目中。当测试用例执行频度太小时(一年一次),我们可以直接使用手工测试就可以了。
● 软件运行仍然不稳定时,适合使用手工测试。
● 测试结果很容易通过人验证的测试项目适合手工测试。
● 测试项目中涉及物理交互比较多的时候适合手工测试。如需要经常查看打印机,绘图仪的输出时。
● 软件维护时使用的回归测试适合自动化测试。
● 执行压力测试时适合自动化测试。例如测试服务器的最大访问上限等。
● 配置和兼容性测试等项目适合自动化测试。
5、案例演示和文章总结
案例演示:
在一个实时的项目监控的系统中,客户通过手机或固定电话拨号完成数据的输入,当接受到的号码一旦与已知设定不符合的时候,触发报警系统,在打印该输入号码同时还要将它转存到磁带上。
测试分析:在该项目中,我们需要对客户号码;报警器,还有输出设备(打印机和磁带机)这三个方面进行测试。再进一步分析我们知道,对于电话号码而言可能有好多的形式,但是无论如何,它们的值一定是数字组成的,对接收方来说,只有两种情况,收到了合法的数据和收到和非法的数据。所以它适合使用程序来模拟输入数据和根据输入判断预期的输出结果。可以使用自动化的方式来实现。对报警器而言,它只有两种状态报警或不报警。所以同样可以用合法的数据来触发报警和使用非法数据来测试来判断其是不是不报警。所以同样可以实现自动化。再看第三个测试对象,输出设备的测试,如前面所述,对于这种物理设备的测试只能使用手工测试。
从上面的这个简单的例子中,我们可以看到,在任何一个项目中,完全的手工测试和自动化测试都是不可取的,我们可以将那些重复频度大,测试输入容易使用程序来模拟和测试结果可以预期的测试可以使用自动化的方式来实现。对于那些涉及物理交互的测试用例还是使用手工方式为好。总体而言,手工测试和自动化测试是相互补充的。在一个具体的项目中,到底谁占重要的部分,这个要根据实际的项目来确定,而不能人为主观限定。同时需要我们注意的是,在我们目前的实际应用中大多数的自动化测试所使用的测试用例大多是从手工测试提取而来的,所以一定要注意对那些手工测试用例的抽象化,否则会导致自动测试脚本中输入数据会有遗漏。造成测试输入不完全,这样就会导致测试项目的失败。
总而言之,在现代的软件开发项目的测试中,不存在一个项目完全是使用哪一种方法来独立完成整个项目的测试,这是不可能的。只可能是两种方法同时并重或者一个为主,一个为辅。