Watij - 面向 Web 的自动化测试工具

4
Java .NET 测试工具 C/C++ Go 28359 次浏览

简介: 随着应用程序渐渐脱离独立的宿主模型并进入到云中,可靠性和可预测性的测试变得更加重要。在云环境 中,有许多 因素是我们无法控制的,因此编写健壮的、经过测试的代码比以往更加迫切。本文所要介绍的 Watij(Web Application Testing in Java)是一个优秀的开源工具,用于开发基于 Web 应用的自动化测试程序。它使用 Java 语言,提供了轻量级的自动化测试程序框架和丰富的程序开发库,有效地加速了自动化测试程序的开发。本文主要介绍了 Watij 的安装和配置、Watij 的实例应用以及 Watij 的特点及优势等三个方面的内容。

随着软件产业的不断成熟,软件质量保证越来越受软件企业重视,被视为软件企业的生命。软件测试作为软件质量保证中的一个重要手段,它直接关系到软件 的质量、开发周期和开发成本,受到越来越大的重视,被贯穿在软件的整个开发和维护的生命周期。作为软件测试的一个重要分支,软件自动化测试正以其自动化程 度高、实用性强、测试效率高等不可取代的优点,引起了测试技术人员的广泛关注,成为软件测试的方向。层出不穷的软件自动化测试技术及软件自动化测试框架正 在被人们广泛的开发和利用,在软件测试自动化中发挥着突出的作用。而选取何种自动化测试的方案也随之产生,测试人员更加需要一个功能强大且简单易用的自动 化测试工具,辅助测试人员搭建测试框架,设计自动测试程序,而又尽可能减少自动化测试程序的开发和维护成本。本文所要介绍的 Watij(Web Application Testing in Java)是一个优秀的开源工具,用于开发基于 Web 应用的自动化测试程序。它使用 Java 语言,提供了轻量级的自动化测试程序框架和丰富的程序开发库,有效地加速了自动化测试程序开发。

Watij 的简介

本节首先简要地介绍了 Watij 的一些主要功能及特点,其次介绍了 Watij 的安装及配置流程。

Watij 的简介

随着 Web 产品的广泛应用,新的模式解决方案中以 Web 为核心的应用也越来越多,很多公司的架构都采取 B/S 模式,以及对于 Web 的应用,所以对 Web 产品的测试就显得越来越重要,如何对 Web 产品进行自动化测试成为当今社会研究的热点问题之一。

Web 的测试方法应尽量涵盖 Web 程序的各个方面,测试技术方面也应在继承传统测试的基础上结合 Web 产品的应用特点。本文介绍了一种新的基于 Web 的自动化测试工具 - Watij。Watij 是 Web Application Testing in Java 的缩写。Watij 是一个使用 Java 编程语言实现的开源自动化测试框架,它相比于其他的自动化测试框架,具有小巧,灵活等特点。Watij 也提供了强大的功能,可以满足自动化测试人员的各个方面的需要。

运用 Watij 的自动化测试框架可以使自动化开发人员利用 Java 编程语言对产品进行自动化测试脚本的开发。Watij 拥有较为便捷的开发模式,Watij 提供了丰富的开发库,封装了包括浏览器窗口 windows,button,link,,dialog,image,table,div 等绝大多数 HTML 对象类型,方便测试人员快速构建自动化测试程序。 同时,它提供了大量的应用方法以及应用接口,这些应用接口函数几乎包括了所有对于网页操作的方法。开发人员可以调用这些方法方便地对其进行使用。另 外,Watij 具有高效、快速等特点,开发人员只需要运用提供的方法编写测试脚本并执行改脚本,在测试运行过程中就如同真实的用户在操作一样,使自动化测试工作几乎模拟 人的手工测试一样。应用基于 Watij 的自动化测试框架能够使自动化脚本的开发变得更为简单而且更具有实用性。

Watij 的安装及配置

为了能够更为详实的说明 Watij 自动化测试框架,下面将要介绍 Watij 的安装及配置过程,使开发人员能够更为快捷便利地使用 Watij 这套自动化测试框架进行自动化的测试工作。

  1. 下载软件安装包,并进行解压。

    Watij_release_3.2.1 的下载地址:http://sourceforge.net/projects/Watij/files/

  2. 将文件中的 jniwrap.dll 拷到 C:\windows\system32\ 目录下。
  3. 打开一个 Java IDE(如 Eclipse), 并创建一个新的工程。
  4. 将 Watij.jar 以及 lib 目录下的所有 jar 包都加载到工程的 classpath 中,如图 1 所示。

添加 jar 包的具体操作步骤如下:

依次打开 New->Project,选择“Java Project”,点击“Next”;

“Project Name”中输入“Watij”,点击“Next”;

在“Java Settings”中选择“Libraries”的选项,点击“Add External JARs”;

添加“Watij.jar”和 lib 目录下的所有 jar,点击“Finish”。

创建 JUnit TestCase,并确保包含这句话“import static Watij.finders.SymbolFactory.\*;”


图 1. 导入 jar 包示意图
图 1. 导入 jar 包示意图

Watij 的使用及相关讨论

首先本节介绍了 Watij 的应用方法,然后通过一个具体的应用实例来介绍 Watij 的使用。由于 Watij 目前只对 IE 浏览器有较好的支持,故以下涉及的内容都是以 Windows 平台为例,此外,RFT(Rational Functional Tester)是一款先进的、自动化的功能和回归测试工具,它适用于测试人员和 GUI 开发人员,故本文采用 RFT 作为 Watij 的 Java IDE 进行描述的;而后文章简单地介绍 Watij BeanShell 的使用方法;最后本节对 Watij 和 Selenium 这两个目前较为流行地自动化测试框架进行简要的比较与说明,说明了两者的区别与联系,以及这两者的各自的应用范围及应用领域,说明了在何种情况下应用那款 自动化测试框架才会使其发挥更大的作用。

Watij 的应用方法

首先简要介绍 Watij 的功用。Watij 可以驱动 HTML 在浏览器上的 Web 应用,它不需要像 Active X、JavaApplets、Macromedia Flash 等类似的插件服务一样。

在基于 Web 的自动化测试中,如何获取网页对象属性是开发 GUI 自动化测试程序的关键步骤。由于 Watij 本身没有提供类似于 RFT 中 Object Capture 的对象捕捉器,但在 Watij 程序的开发中,我们可以使用一些第三方提供的运行在浏览器端的 HTML 查看器,进行网页对象的获取,以便查看网页的结构和对象的属性,这样将使我们的开发工作变得更为方便。对于 IE 浏览器,可安装 Microsoft IE Explorer Develop Toolbar,如果用户使用的 IE 浏览器的版本在 8.0 以上,也可以通过点击 F12,选择开发人员工具,也可以达到查看某个对象属性的目的。

在使用 Watij 进行编写自动化脚本的时候,开发人员需要使用类似于 XPath 这样的编程语言去查看或者定位要使用的对象属性。XPath 是一门在 XML 文档中查找信息的语言。它用于在 XML 文档中通过元素和属性进行导航。这样开发人员才可以有效地进行自动化脚本的开发与应用。

Watij 的应用实例

1. 将工程建立完成后,需要新建一个“Jnit Test Case”(如图 2 所示),例如输入“Name”为“TestWatijIBM”(图 3),点击“Finish”。就可以建立一个新的脚本,就可以进行编写程序,进行自动化测试的工作了。


图 2. 新建“Junit Test Case”
d2.gif

图 3. New Junit Test Case 界面
图 3. New Junit Test Case 界面

2. 下面我们以“IBM”为关键字进行百度搜索的操作做为实例进行介绍。


清单 1. 以“IBM”为关键字进行百度搜索
import static watij.finders.SymbolFactory.name; 
import junit.framework.TestCase; 
import watij.runtime.ie.IE; 

public class TestWatijIBM extends TestCase { 
public void testgooglesearch() throws Exception{ 
IE ie = new IE(); 
// 打开 IE 浏览器
ie.start(); 
// 转到百度主页
ie.goTo("www.baidu.com"); 
// 在输入框内输入“IBM”
ie.textField(name,"wd").set("IBM"); 
// 点击“百度一下”进行查找
ie.button("百度一下").click(); 
// 等待 3 秒
ie.wait(3); 
} 
} 
3. 运行:输入以上代码并保存后,选择“Run as”->“JUnit Test”,如图 4 所示。
图 4. 运行代码
图 3. New Junit Test Case 界面

4. 执行结果:如果执行过程没有报错时,JUnit 执行状态显示为绿色(如图 5 所示),并且能够打开百度的主搜索界面,对“IBM”为关键字的网页进行检索(如图 6 所示)。


图 5. 运行结果图
d5.gif

图 6. 运行 Baidu 界面检索图
图 6. 运行 Baidu 界面检索图

5. 具体代码解释

IE ie = new IE(); IE 对象实例化

ie.start(); 启动 IE 浏览器

ie.goTo("www.ibm.com"); 转到 www.baidu.com 主页

ie.textField(name,"wd").set("IBM"); 在输入框中输入查找内容:“IBM”

ie.button("百度一下").click(); 利用 click 函数点击“百度一下”这个 Button

此外,Watij 提供了多种常见的 Web 对象的识别与操作的支持,例如:窗口的控制(最大化及最小化操作),超链接的点击,多选框的选择,CheckBox 的选中与清除,RadioBox 的选中与清除,下拉框和列表框的选择,文本框的输入,图片及各种表格的插入与删除,各种按钮的点击,Frame 的访问以及弹出窗口的控制等。

Watij BeanShell 的介绍

Watij 提供了 BeanShell 的开发工具,方便了开发人员编写脚本进行自动化的测试或对脚本进行各种调试的工作。

操作步骤如下所以:

  1. 双击 launchWatijBeanShell.bat 或用命令行执行,进入 BeanShell 的操作界面;

    图 7 为用命令行执行 launchWatijBeanShell.bat 命令。

    图 8 为 BeanShell 的操作界面,BeanShell 提供的操作界面具有操作方便、简单等优点。

    图 7. 命令行执行 launchWatijBeanShell.bat
    图 7. 命令行执行 launchWatijBeanShell.bat

    图 8. BeanShell 操作界面
    图 8. BeanShell 操作界面

  2. 在 bsh Workspace 中输入脚本脚本语言进行相关的测试工作。

    图 9. 利用 BeanShell 执行 Baidu 搜索操作
    图 9. 利用 BeanShell 执行 Baidu 搜索操作

    需要说明的是 BeanShell 的是逐步执行的,即每一步 bsh 都需要去执行,方便开发人员对代码进行相关的 debug 操作,使开发人员能够方便地调试程序。BeanShell 也提供了相应的字体设置功能,开发人员可以根据自己的需要进行相应的字体设置。

Watij 与 Selenium 的比较

下面本文将介绍 Watij 和 Selenium 的异同。Watij 和 Selenium 都是可用于网页自动化测试的开源工具,两者都具有各自的特点及优势,它们之间有何异同,到底要如何取舍?首先,Watij 和 Selenium 都是直接在浏览器中运行脚本,并允许在脚本运行时将浏览器最小化,这意味着不需要因为自动化测试而占用一台机器的资源。其次,两者都需要运用 XPath 去编写脚本,所以要求使用者必备 XPath 的基本知识。但是,它们在编写脚本是有一些地方是有区别的,下面本文将执行相同功能的代码比较进行简单说明。

清单 2 是用 Watij 执行网页登陆操作的代码:


清单 2. 执行登陆网页操作的代码清单
import junit.framework.TestCase; 
import static watij.finders.SymbolFactory.name; 
import watij.runtime.ie.IE; 

public class TestConcord extends TestCase { 
public void testconcordfunction() throws Exception{ 
IE ie = new IE(); 
// 打开 IE 浏览器
ie.start(); 
// 转到 concord77 
ie.goTo("http://concord77.cn.ibm.com/files/app?lang=en_US#/pinnedfiles"); 
// 窗口最大化
ie.maximize(); 
// 安全认证
ie.link(name, "overridelink").click(); 
// 在输入框内输入用户名和密码
ie.textField(name,"j_username").set("Abdul_000_006"); 
ie.textField(name, "j_password").set("passw0rd"); 
// 点击登陆
ie.button("登录").click(); 
// 保存结果图
ie.screenCapture(“D:\\Savelogin.png”); 
} 
} 

例如:

Watij 脚本语言执行点击某个 link: ie.link(name, "overridelink").click();

Selenium 脚本语言执行点击某个 link: Selenium.click("//a[@name='overridelink']");

相比这下 Watij 的代码会显得更为清晰、灵活,易于理解。

此外相比于 Selenium,Watij 具有更快的执行速度。因为 Watij 是直接调用 .dll 的文件,不用多加一个容器去加载,而需要启动一个 jetty 容器。故 Watij 比 Selenium 调用过程更为直接,所以运行速度要超过 Selenium。此外,Selenium 对弹出窗口、上传、下载等功能支持的并不好,常常需要借助第三方工具包,如 AutoIt3,Watij 在这方面的处理上要好于 Selenium;另外,Watij 提供了截图的方法,这是 Selenium 目前所不具备的。但是,Watij 目前只对 IE 浏览器有较好的支持,这正是 Selenium 的优势所在,Selenium 可以支持多浏览器,如 IE,Firefox, Safari 等等,另外,Selenium 提供了录制和回放脚本的功能,并可以将录制好的脚本转换成各种主流编程语言,Watij 则未提供此功能。

所以,当测试人员测试的产品是基于 IE 浏览器的,Watij 显然更具优势,但当测试人员测试的产品是基于多浏览器的,或者需要测试浏览器之间的兼容性,显然 Selenium 会成为更好的选择。

Watij 的特点及优势

Watij 提供了一套基于 Watir 的纯 Java API 用于 Web 应用程序自动测试。Watij 通过一个真实的浏览器来实现自动化测试。

Web 自动化测试大致采用两种方法实现:第一种方法是协议测试,这种方法是建立在 HTTP 协议上的测试,通过 get 或 post 等方式向服务器发送请求,然后对从服务器返回的结果数据进行解析、验证等操作;第二种方法是基于浏览器端的测试,这种测试是通过启动真实浏览器环境并自动 执行浏览器端的相关操作(如点击按钮、文本框的输入及选择列表框等 )进行测试。Watij 作为 sourceforge 上一个纯 Java API 的 Web 自动化测试工具,它以第二种测试方法为原理进行工作,它是完全开源免费的软件包,并且在网页元素定位和跨平台部署等方面有着出色的表现。

Watij 自动化测试框架还有如下优势:

  1. 它像是模仿真实的用户对网页进行操作的,而且具有较快的运行速度。
  2. Watij 对网页进行操作时是得到网页的原始数据,这样就可以更为准确地,客观地进行自动化脚本的开发及验证工作。
  3. Watij 可结合任何的 Java IDE 进行使用,它们的配置过程非常简单,免去了开发人员由于配置环境的问题而浪费大量的时间和精力。
  4. Watij 相比于其他的基于 Web 的自动化测试工具有很好的执行结果,提高了开发人员的工作效率。
  5. Watij 提供了很好的 Debug 工具,为开发人员进行调试工作提供了方便。
  6. Watij 程序在运行时,允许测试人员在该测试机器上访问其他网页或者进行其他操作而不会影响到对象识别的结果。

总结

本文向读者介绍了 Web 应用的自动化测试工具 Watij,文章介绍了 Watij 的主要特点和优势,如何安装配置 Watij 的开发运行环境,以及通过一个实例来重点介绍 Watij 的开发流程。相信采用 Watij 自动化测试工具,会提高自动化测试的效率,可以有效地加速自动化测试的程序开发。

请尽量让自己的答案能够对别人有帮助

11个答案

默认排序 按投票排序