测试自动化是把以人为驱动的测试行为转化为机器执行的一种过程。通常,测试用例按照执行对象分为手动测试和自动化测试。手动测试往往面临人力消耗巨大,测试效率很低的问题。而自动化测试便是为了解决这些问题提出的概念。

  自动化测试相对手动测试来说有很多优点:

  1、充分利用时间资源。

  一般无论什么公司,员工的上班时间只有8个小时,那么中除去这8个小时的其他时间,比如夜晚的时间,如果不利用起来,那简直是巨大的浪费,而机器是不需要休息的,即使半夜也可以工作,所以测试自动化可以充分的利用时间资源。

  2、节省人力资源

  即使在以人力资源占优势的中国来说,人力资源的成本也是处于不断的上升过程之中,相应的带来的也是手动测试成本的不断上升。

  3、从某种角度,软件本身是为了让过程自动化,所以软件从业人员在自动化方面有知识优势。

  4、手动测试一般很枯燥,难逃测试效果降低厄运,而自动化测试更加可以严格的执行测试用例脚本。

  人的价值相对于机器来说,优势在于创造性,所以更应该将精力花在能够充分花费这一优势的地方,比如探索新测试(ET),而将那些机械的测试用例脚本交给自动化测试。人的精力可以花在怎么去管理机器和创建维护脚本方面。

  5、持续交付的需要

  在做简单和机械的事情上,计算机的效率和人的效率不是一个数量级的,所以如果要满足持续交付的需要,缩短反馈的时间,需要让机器来帮助提高效率。

  不过,虽然自动化测试有这么多优点,但不是所有情况都适合做做自动化测试,如果不考虑好一下一些因素,轻易的自动化可能会导致陷入维护自动化脚本的泥潭,导致成本效用比很低:

  1)软件需求变动不频繁。测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身是一个代码开发的过程,需要修改、调试,必要的时候还要修改自动化测试的框架,如果所花费的成本不低于利用其节省的测试成本,那么自动化测试便是失败的。项目中的某些模块相对稳定,而某些模块需求变动性很大。我们便可对相对稳定的模块进行自动化测试,而变动较大的仍是用手工测试。举个例子,一般来说,UI是产品中经常变化的部分,因为用户对UI的需求变化太频繁了,而不像一些核心的业务流程一般会比较稳定。所以在UI上投入太多的精力做自动化测试需要谨慎考虑。

  2)项目周期足够长。自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时间来完成,这样的过程本身是一个测试软件的开发过程,需要较长的时间来完成。如果项目的周期比较短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。

  3)自动化测试脚本可重复使用。如果费尽心思开发了一套近乎完美的自动化测试脚本,但是脚本的重复使用率很低,致使其间所耗费的成本大于所创造的经济价值,自动化测试便成为了测试人员的练手之作,而并非是真正可产生效益的测试手段了。另外,在手工测试无法完成,需要投入大量时间与人力时也需要考虑引入自动化测试。比如性能测试、配置测试、大数据量输入测试等。

  有很多自动化测试用具,比如QTP, WinRunner什么的。这篇文章着重介绍一下Web自动化测试方面的Selenium。

  Selenium也是一个用于Web应用程序测试的工具。Selenium 测试直接运行在浏览器中,像真正的用户在操作一样。支持的浏览器包括IE,Mozilla和Firefox等。这个工具的主要功能包括:测试与浏览器的兼容性--测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能--创建衰退测试检验软件功能和用户需求。 支持自动录制动作,和自动生成。Net、Java、Perl等不同语言的测试脚本。Selenium 是 ThoughtWorks 专门为 Web 应用程序编写的一个验收测试工具。

  具体的Selenium脚本的编写方面的知识不详细介绍了,本文着重介绍一下使用Selenium进行Web自动化测试的框架,包括 Selenium IDE, Hudson任务运行脚本, 自动推送热部署至Alpha, Selenium Grid扩展控制等等。