快捷搜索:

基于Selenium2和TestNG的自动化测试

  【IT168 技术】Selenium是时下很流行的面向web的自动化测试工具,它以执行效率高,覆盖的浏览器广泛等优点得到了很多人的亲睐。TestNG是一款测试框架,它派生自JUnit和NUnit,除了继承了两者的优势之外,又额外的发展出了一些新的功能,让其更加强大和易用。文章会重点介绍Selenium2结合TestNG如何做自动化测试,另外也会介绍ReportNG,它是对TestNG report的一个扩展,它相较于TestNG自身的report而言,更加美观和易读。

  利用Selenium实现web自动化测试的优势

  相比QTP,RFT昂贵的成本,作为开源工具的Selenium WebDriver自然不用多说。而且selenium是一款基于浏览器的测试工具,因此在响应UI请求时运行速度比较可观,能很好的节省运行时间,提高执行效率。在与大多数测试平台的整合以及可扩展的脚本语言种类上(Java、dotNET、Perl、Python、Ruby、C#等)较之其他工具也有很大优势,最后,Selenium 支持多浏览器操作(IE,Firefox,Safari ),这也是其他测试工具所不具备的,当然,没有什么万能的测试工具,在全面评估被测系统和测试需求后,合适的就是最好的;而且在做自动化测试过程中,往往不能只单独使用一种自动化工具,结合不同自动化工具的优势来达到我们的目的是最佳的实践。

  Selenium的进化

  Selenium已经从之前的1.0(RC)进化到了现在的Selenium2(Selenium1+WebDriver)。

  在运行Selenium1.0程序之前,我们必须启动Selenium server端,也就是Selenium Remote control,我们简称RC,RC主要包括三个部分,launcher,http proxy,selenium core, 其中selenium core是由一堆javascript函数构成,通过调用这些函数,来实现对浏览器的各种操作。既然已经可以实现对浏览器的操作,那为什么还需要Selenium2(Selenium1+Webdriver)呢? Selenium1主要存在以下几个缺点1.没有原生的鼠标和键盘事件;2.XSS/HTTP同源数据问题;3.popup dialog问题。Webdriver对不同浏览器的处理和Selenium1.0有着明显的不同,Selenium1.0不管是什么浏览器,都是由javascript来处理,而webdriver是选择浏览器最容易识别的语言来处理,比如在Firefox中javascript最容易,在IE中C++最容易识别,通过灵活选择最容易识别的语言来处理多浏览器,我们就可以很好的回避某些浏览器对javascript的安全限制,Webdriver不仅可以处理这方面的问题,而且可以调用操作系统API,尤其是当用户需要模拟鼠标或键盘操作时,这项能力的作用表现的尤其明显。通过对比, 看来从Selenium1.0进化到Selenium2.0还是很有必要的。

  利用Selenium web driver实现自动化测试

  为了让整个文章更加充实,作者以一个简单的Scenario为例,来一步一步告诉读者如何利用Selenium WebDriver+TestNG+ReportNG来实现web自动化。注:该Scenario会贯穿整个文章。

  Sample Scenario:

  简要描述: 在Jazz.net上提问

  步骤:1.打开Jazz.net: https://jazz.net/

  2.点击Log in连接

  3.以某用户名登录

  4.输入密码

  5.点击Log In button

  6.验证Profile Image是否出现

  7.点击Forum连接

  8.点击Ask a question按钮

  9.在提问页面填写所有必填域,提交问题

  10. 验证问题是否提交成功

  11. Log out

  1. 为了快速产生一个自动化脚本,我们可以利用Selenium IDE来录制原始的脚本,然后根据需要把脚本Refine成为易于维护的版本(当然,如果你对Selenium的web driver的API很熟悉,并且有一个很好的测试框架可以采纳,也可以直接写脚本)。Selenium IDE是一个Firefox add-on,易于安装和使用,这里不做介绍,只附一张通过Selenium IDE录制上面的sample scenario的截图,图1:

基于Selenium2和TestNG的自动化测试


▲图1 Selenium IDE

  录制完成之后,将其导出成Java/JUnit4/WebDriver格式(图2),并且命名为PostAQuestionInJazzDotNet。

基于Selenium2和TestNG的自动化测试


▲图2 可以导出的Case的格式

  2. 在Eclipse IDE中建立一个Java project,建立如下的文件夹结构,图3

基于Selenium2和TestNG的自动化测试


▲图3 初始的文件夹结构

  将刚导出的PostAQuestionInJazzDotNet.java放入cases文件夹,data文件夹用来存储脚本中需要用到的数据,map文件夹中用来存储脚本中用到的对象的属性信息,lib文件夹中用来放置所需要的依赖jar包。目前需要将selenium web driver相关的jar包放入到lib中,并且加入到build path中。

  打开PostAQuestionInJazzDotNet.java,修复编译错误,例如将包名修改为cases,如图4:

您可能还会对下面的文章感兴趣: