基于TestNG 与Selenium 的自动化测试设计与实施-1

上一篇 / 下一篇  2012-08-06 10:55:43 / 个人分类:自动化测试

51Testing软件测试网D v,n-c'_

  1、引言51Testing软件测试网:]*LI[5x!s

G9C L%_-r$}"k0  软件测试是关系到软件开发和维护成本的重要环节。任何软件产品在正式发布之前都必须经过严格的测试。随着计算机技术的迅速发展,软件的结构越来越复杂,同业竞争越来越激烈。为了保证软件产品的高度可靠性和竞争力,很多软件开发机构都将其主要的研制力量投入到软件测试之中。51Testing软件测试网E,|{dC;W8_)H7I Yi-J

51Testing软件测试网 B,um$dc3KAP

   回归测试是软件测试中的重要组成部分,占有很大的比重。每次例行包发布前都需要对软件现有功能进行回归验证,确保无误以后才能发给各地现场,大家都知道 电信业是个发展较快的行业,需求变更快、迭代周期短,从而导致回归测试十分频繁,这个时候如果单靠手工进行测试,会消耗大量的时间和精力,测试人员也随着 耐心的减退而力不从心。为了避免这种情况,对于原有功能的自动化测试显得尤为重要。

3}Y1Q)q}c051Testing软件测试网8e[OBx"WcKYKf

  2、工具介绍51Testing软件测试网9|;_/`4gz#h'a&]pf

7^MW+cA{!d H6j0  说到开源自动化测试工具,网上众说风云,但别人说好的东西不一定适合你,我们在组合自动化测试工具时,根据自己的实际情况选择了Selenium+ TestNG + DBUnit组合,我先介绍一下这几种工具。

vJ ^wF |!]051Testing软件测试网,w#]o"|/H U

   Selenium,它所采用的原理是通过录制应用程序产生的线性脚本进行回放从而达到自动化测试的目的。其优点是简单,通过录制就可以得到所需脚本。类 似于录制/回放测试工具有很多,我之所以选择它的原因是它是开源的,而且它测试直接在浏览器中运行,就像真实用户所做的一样。Selenium测试可以在WindowsLinux上的 Internet Explorer、Mozilla和 Firefox 中运行。其他测试工具都不能覆盖如此多的平台,更重要的是Selenium支持多种语言、JAVA、Ruby、Python等(如图1)

7yn u i7k#e&v,BI0

51Testing软件测试网@,?4m0U ?7x

图1

^&p3~ qE#T0

  支持这么多语言说明我们通过Selenium开发的测试脚本可以任意移植到多个平台,可以继承Selenium API来扩展一些我们自己的测试类,甚至可以在此基础上开发出一套属于我们自己的自动化测试平台,而其它工具,包括大名鼎鼎的QTP,SilkTest是有所不及的,虽然这些收费的软件后面有强大的技术支持,学习文档和参考资料也相当丰富,但这些工具的局限性太大,一旦使用这些工具,你就会越来越依赖人家的东西,从而无法沉淀出自己的技术,这是我选择Selenium的根本原因。51Testing软件测试网J7D+@9w+M c9F G*B d+a

  Selenium 系列一共有4款工具

dy2kiL+hg y0

  Selenium Core:支持DHTML的测试案例(效果类似数据驱动测试),它是Selenium IDE和Selenium RC的引擎。

5R"] G#@0@Fu"V6MG0

  Selenium IDE:FireFox的一个插件,支持脚本录制。51Testing软件测试网7M@"r~!d v$D/yL;O

  Selenium RC:Selenium Remote Control。51Testing软件测试网Gv6y q+^L

  Selenium Grid:允许同时并行地、在不同的环境上运行多个测试任务,极大地加快Web应用的功能测试

[T` jk:e0

   通过selenium编写测试case的理想化是先通过Selenium IDE录制脚本,通过Firebug辅助定位页面元素,然后通过Selenium RC来完善测试脚本。Selenium IDE是Firefox的一个插件,是可以进行脚本录制以及案例转换,所以Selenium IDE+Firebug会成为你日后写测试案例的两大助手,但遗憾的是上述两个工具都依赖Firefox浏览器,如果你的程序不支持Firefox浏览 器,就只能通过手工编码来完成自动化测试脚本,对于初学者来讲,如果没有这两个工具的辅助,在编写测试脚本时还是比较困难的,但熟悉了Selenium API和掌握了页面元素查找的方法以后,这两个工具就显得没那么重要了。51Testing软件测试网v$o@m*O:L C,q;qQ

51Testing软件测试网`5{@ C2L]

  TestNG,单元测试工具典型代表,可能大部分开发人员只对JUnit比较熟悉,JUnit是 Java 语言单元测试当前的一站式解决方案。这个框架值得称赞,因为它把测试驱动的开发思想介绍给 Java开发人员并教给他们如何有效地编写单元测试。但是,在过去的几年中,JUnit的改进不大;所以,为当今复杂的环境编写测试已经变成一个越来越困 难的任务,即 JUnit必须与其他一些补充性测试框架集成起来。而 TestNG是一个测试 Java应用程序的新框架。我选择TestNG是因为它是一种基于注释的测试框架,通过添加诸如灵活的装置、测试分类、参数测试和依赖方法等特性来克服 JUnit的一些不足之处。此外,TestNG运行于Java 5.0(通过注释)和Java 1.4(通过JavaDoc样式的注释)之上。我来列举一下NG的优势:

A_z5o}YFh0

51Testing软件测试网%}d [OG E!L],G;WR

  关键字:参数化。TestNG将数据驱动的自动化测试的概念诠释的淋漓尽致,我举个例子,一个被测试方法根据不同的 入参组合出20个CASE,根据数据驱动测试的思想,我们只需要写一个测试方法,然后准备20种参数组合的数据。如果使用JUnit你可能需要写20个测 试方法,而TestNG通过注释就可以实现参数化。将20种不同的入参组合整理到一个Excel文件中管理,文件里可以增加用例描述甚至测试方案等相关信 息,如果增加新CASE,只需要增加一行测试数据即可,如图:

'vs%rT(}0Qi0

R${1I ?X~:Wjx Z M0

  测试方法只需要写一个,如图所示:

{!R j}8V3w0

51Testing软件测试网fA@5hehJ$H

  关键字:失败和重运行,在大型测试套件中,这种重新运行失败测试的能力显得尤为方便。这是 TestNG独有的一个特性。在 JUnit 4中,如果测试套件包括 1000项测试,其中 3项失败,很可能就会迫使您重新运行整个测试套件(修改错误以后)。不用说,这样的工作可能会耗费几个小时。一旦 TestNG中出现失败,它就会创建一个 XML配置文件(如图4),对失败的测试加以说明。如果利用这个文件执行 TestNG运行程序,TestNG就只运行失败的测试。所以,1000项测试有3项 Failed,这种场景你只需重新运行三个失败的测试脚本,而不是整个测试套件。51Testing软件测试网mg)VM5Tr)@ L)zsi

  这里只列举了TestNG比较明显的优势,除了上述优势以外还有很多,这里就不详细阐述。

dA4} t Jnb S4e0

51Testing软件测试网6u,TJf4}

图451Testing软件测试网lF}Iz#uq c,L1~


TAG:

 

评分:0

我来说两句

Open Toolbar