2)提高测试效率,缩短测试工作时间

  软件系统的规模越来越大,功能也越来越多,达到几千个甚至上万个,因此人工测试非常耗时和烦琐,这样必然会导致测试效率低下,而使用自动化测试工具可以较好地执行这些频繁的测试任务。在充分并合理使用了测试工具以后,可以减轻测试工程师的手工测试工作,同时,测试工具还可以把控制和管理引入整个测试过程,从而保证测试的进度。

  3)提高测试覆盖率

  通过自动化测试工具的录制回放及数据驱动来测试功能,可以提高测试覆盖率。通过测试工具的辅助分析功能,可以提高测试的深度。

  4)执行手工测试不能完成的测试任务

  有些非功能性方面的测试(如压力测试、负载测试、大数据量测试、崩溃性测试等)是人工测试不可能实现的。例如,找若干台电脑和同样数目的操作人员在同一时刻进行操作,然后用秒表记录下反应的时间。这样的手工作坊式的测试方法不切实际,且无法捕捉程序内部变化的情况。

  5)更好地重现软件缺陷的能力

  自动化测试具有更好的一致性和可重复性。由于每次自动化测试运行的脚本是相同的,所以每次执行的测试具有一致性,这是人工很难做到的。由于自动化测试具有一致性,因此很容易发现被测软件的任何改变。

  6)更好地利用资源

  理想的自动化测试能够按计划完全自动地运行,在开发人员和测试人员不可能实行三班倒的情况下,自动化测试可以胜任这个任务。例如,完全可以在或者晚上的时间执行测试。这样可以充分利用资源,也避免了开发和测试之间的冲突。

  7)增进测试人员与开发人员之间合作伙伴的关系

  测试工程师为了更好地使用自动化测试工具,需要对开发技术有深入的理解和实践,因此测试工程师也有了与开发工程师更多、更平等的交流机会,自动化测试为测试工程师与程序开发人员协同工作提供了一个便利的手段,双方将有更多的合作。

  3.自动化测试的局限性

  我们应根据外包项目情况来确定是否采用自动化测试,如下几种情况不适合进行自动化测试:

  定制外包项目。由于这种外包项目周期一般比较短,采用自动化测试需要的投入会超过手工测试的投入。

  不稳定的软件由于其不稳定因素会导致自动化执行失败,因此不适合进行自动化测试。

  周期很短的外包项目。外包项目周期很短,相应的测试周期也很短,因此花大量精力准备的测试脚本不能得到重复的利用。当然,为了某种特定的测试目的专门执行的测试任务除外,比如针对特定应用的性能测试等。

  业务规则复杂的对象。业务规则复杂的对象有复杂的逻辑关系和运算关系,工具很难实现,或者要实现这些测试过程,需要投入的测试准备时间比直接进行手工测试所需时间更长。

  人体感观与易用性测试。界面的美观、声音的体验、易用性的测试,无法用测试工具来实现。

  期望通过自动测试发现大量缺陷替代人员投入。

  涉及物理交互的系统或业务规则非常复杂的系统。