手工测试和自动化测试都是软件质量保障的重要途径,也是很多测试人员争相讨论的两种测试方法。如何正确的看待这两种测试方式,更好的使两者相互结合是我们现在所要讨论的话题。本文总结了自动化测试和手工测试的优点和缺点,列举了各自的适用范围,并分析了自动化测试无法终取代手工测试的原因。
    1、自动化测试是灵丹妙药吗?
    自动化测试有众多的优点,例如:快速、全面、可靠、可编程、可重复使用、可重用。自动化测试产品和解决方案的潜在客户经常会以下面的思考方式设想自动化测试:
    ● 快速:显然测试脚本执行比人工执行要快得多,而且和手工测试相比,计算机可以不知疲惫的执行测试,24小时不休息的工作
    ● 全面:所有的测试都能够实现自动化,你可以构建一个覆盖应用程序每一个功能的测试包
    ● 可靠:每次测试脚本在运行时执行相同的操作,因此减少了人为的错误,排除了人测试的不确定性,使测试结果更加客观。
    ● 可编程:你可以编写复杂的测试脚本来找出应用程序中隐藏的信息
    ● 可重复:对于重复执行相同操作,计算机软件可以轻松完成
    ● 可重用:你可以重复使用测试脚本来测试应用程序的不同版本,即使用户界面发生了变更
    如此看来,完全可以用自动化测试取代手工测试吗?答案是否定的。无庸质疑,自动化测试具有上述优点,但这些优点是在一定的约束条件下存在的。尽管人们对自动化测试有美好的愿望,但自动化测试并非我们梦寐以求的神兵利器。
    Frederick P. Brooks, Jr. 曾在1986年写过一篇题为《没有银弹:软件工程的根本和次要问题》的文章(No Silver Bullet ? Essence and Accidents of Software Engineering)。这篇文章列举了人们对于软件工程技术发展的一些期望,并与现实进行了对比。他的论点归纳如下:没有一种单纯的技术或管理上的进步,能够独立地承诺在10年内大幅度地提高软件的生产率、可靠性和简洁性。Brooks鼓励我们将技术和方法视作一种演进手段,而并非革命。
    我完全同意Brooks的观点,这有助于我们对理解自动化测试的真正含意,自动化测试或者说自动化测试策略及工具的实现,毫无疑问具有强大功能、高效等使我们获益匪浅,但只是测试人员工具箱里的一件利器,它无法取代测试人员的地位。让我们回过头来再分析一下自动化测试特点所需要的前提。