基于Sahi和Twist搭建的Web自动化测试框架

Twist是一个基于Eclipse开发的自动化测试平台,它是ThoughtWorks公司的一款商业软件。Sahi是一个Web自动化工具,有Tyto公司创建,具有免费版和专业版两个版本。作者将在本文中简单介绍一下这两个工具,以及基于它们搭建的轻量级Web自动化测试框架,最后重点跟读者分享一些个人使用的经验和技巧。

  在介绍Sahi之前,首先简单描述一下作者参与的项目。这个项目是为一家公司做商业应用的实施。由于时间紧迫,测试人员较少,大部分时间都是在针对主要功能做手工测试。为了减少一些重复的手工劳动,我们决定搭建一套Web自动化框架。这个框架需要符合以下条件:1、搭建迅速,易于维护;2、使用简单,易学易用,降低测试人员的学习成本。3、由于业务流程比较复杂,希望在测试用例失败的时候能够方便测试人员快速准确的定位并重现问题。考虑到以上几点,再加上这个项目只需要对一些常用重复的流程进行自动化,我们放弃了以前搭建过的一套比较成熟的测试框架,转而决定使用Sahi和Twist来搭建一个轻量级的Web自动化框架。

  Sahi是一个比较成熟的Web自动化工具,使用它可以轻松的对Web页面操作进行录制和回放。作者曾经使用过一段时间的Selenium,就个人经验而言,Sahi在元素定位,页面等待上更有优势一些。Twist是一个可协作的功能测试平台,之所以称为平台,是因为它提供了很多有用的功能来帮助测试人员编写和管理测试用例。Twist有个很好的特性是同时支持用户手工和自动化运行测试用例。这点可以让我们在得到功能需求后,先在Twist里建好测试场景,并根据业务逻辑写下测试步骤,等到被测功能比较稳定后,再决定自动化哪些测试用例,而那些业务逻辑和自动化脚本可以很好的在Twist中被关联起来,如图1所示。

图1 Twist中的测试场景

  在结合Twist的一些特性和Sahi的录制回放功能后,我们将测试框架设计如下图所示:

图2 基于Sahi和Twist的Web自动化测试框架

 这个框架并没有什么特别复杂的地方,基本就是将Sahi中的Java API进行封装,然后使用Twist中的已有功能来对系统进行自动化测试。下载两个工具后,就可以进行测试场景的编写和自动化。下面是作者在这个项目中总结的一些经验和技巧:

  1、把握好测试场景描述的粒度。在Twist的场景中,应尽量使用业务语言来描述测试步骤,而避免使用操作性的语言。在Twist帮助文档中有一章高级指导(Advanced Tutorial),其中专门提到在不牺牲可读性的前提下,应最大限度的用抽象概念来描述步骤。这里的抽象概念就是指的具体业务逻辑。但就个人经验而言,抽象还是有度的,太抽象的描述复用性就不够好了。读者可通过多尝试多思考来把握这个描述的粒度。

  2、为测试场景加标签并按顺序为其命名。可能大家比较习惯于为一个待测功能单独建立一个文件夹,并将测试场景都放在里边,但由于在Twist视图下,只对Scenario目录下的场景可见,如果在其目录下建立子目录,将无法使用Filter的功能。所以建议为每一个场景加上标签,可以是功能的编号或名称,这样就可以分类查看和运行了。另外,在Twist视图中,所有的场景是按名称的字母序来排列的,故建议在场景名称前加01,02,......。(eg.01Login,02SearchBook.加0是因为根据字母序11是在1和2之间的)这样便于查找以及管理场景执行的先后顺序。

  3、当用Sahi定位动态生成的页面元素时,应使用in,near等方法配合别的页面元素来进行定位。比如测试步骤为点击一个数据列表中某一行里的图片链接,如果使用Sahi录制,生成出来的元素ID可能跟HTML里的元素ID一样,也可能是一串很长的数字,可读性较差,测试代码也较难维护,这时可以先根据序列号或者标题字符串等定位到该行的某一个位置,再结合Sahi中in和near方法,定位到这行上的图片链接。

  4、需要用多组数据来测试同一场景时,尽量使用Twist中提供的Data Table功能。在Twist里,可以将来自不同数据源的数据导入到测试中,并且支持选择每次需执行的几组数据。

  5、完善错误处理机制。在场景运行失败的时候,可加入一段代码,截屏保存当时的出错页面,同时,将被测系统的日志文件截取部分放到指定文件夹,这样就能更加方便地分析定位问题。(在Sahi专业版中可直接使用takeSnapShot()方法进行截屏,如果使用免费版,可使用其它方法实现,例如类java.aw.Robot中的createCapture()方法)

  6、导出build.xml文件,整合其它工具。在Twist中,我们可以导出ant文件,并且编写我们需要的task,例如在不同浏览器上运行,或者是运行某一标签的测试场景等,这样就可以在不打开Twist的情况下,通过运行命令行的方式来执行测试。这些命令还可以放到其它工具中进行整合,例如持续集成工具Hudson,可在build完成后自动运行一些基础测试。

  总的来说,Twist和Sahi是比较适合一个小型测试团队进行自动化测试的。Twist能够有效地减少搭建自动化测试框架的时间,让测试人员更多的关注在业务逻辑上面,有兴趣的读者可以下载Twist的试用版进行尝试。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-02 02:55:21

基于Sahi和Twist搭建的Web自动化测试框架的相关文章

Windows环境搭建Web自动化测试框架Watir(基于Ruby)

web自动化测试一直是一个比较迫切的问题 图1-1 需要安装的工具 http://railsinstaller.org/ 因为安装Ruby还需要用到其他的一些开发工具集,所以建议从网站http://railsinstaller.org/ 下载,而且使用该安装包的话,它会帮你把环境变量也设置完毕,我使用的版本是:railsinstaller-2.2.4.exe,建议下载最新版本. 开始安装RailsInstaller工具包,安装到默认位置即可. 这个对勾建议打上,它会帮你配置git和ssh,安装过

CentOS6.5_64下 nginx+uwsgi+Python +多站点环境搭建 python web django 框架

nginx+uwsgi+Python环境介绍: 系统:CentOS6.5_64_mini nginx版本:nginx-1.6.0 python版本:Python2.7.8   第一部分系统设置 1:查看系统内核 #  uname -r 2.6.32-431.el6.x86_64 2:更新内核 #  yum -y install kernel 3:重启系统 #  reboot 4:重启后查看是否启用新内核 #  uname -r 2.6.32-431.20.5.el6.x86_64 5:可以删除老

自动化测试框架PhoenixAutotest入门

介绍 这里介绍一个基于Selenium实现的一个web自动化测试框架,本框架主要是通过对Selenium的封装实现降低学习自动化测试框架的难度.  如果,您还对Selenium不了解的话,可以先参考<Selenium学习建议>. 入门知识 Java基础 环境 jdk1.8.Eclipse.Maven 入门 可以根据您的习惯来新建Java工程或者Maven工程.如果是Maven工程的话,请添加如下依赖: <dependencies> <dependency> <gr

基于业务的Web自动化测试工具—Sahi

谈及开源Web 自动化测试工具,相信很多人立刻会想到Selenium.本文给大家介绍的是另一款开源Web 自动化测试工具Sahi.Sahi的网站上有关于与Selenium的对比,不过这不是我们今天探讨的主题.这篇文章的主要目的是向读者简单的介绍一下Sahi并分享一下个人使用Sahi测试Dojo应用的经验,希望对大家能有所帮助. 1. Web2.0应用测试的困境 在开始介绍Sahi之前,我们一起来看看在开发Web 自动化测试(特指Web 2.0应用)时常面临的两大技术问题. 页面元素的识别 根据个

搭建 WPF 上的 UI 自动化测试框架

   OEA 1.0-2.0 框架中,界面都是以 WPF 技术作为基础平台开发的.我们需要对开发出来的系统进行自动化测试,而 .NET 平台的自动化测试平台在公司内部还没有其它部门完成,所以我们在 2010 年的时候使用 Ruby + VS UIUnitTest 开发了一个 UI 自动化(UI Automation,以下简称为UIA)框架,估且称其为 UIA 1.0.UIA 1.0 完全由周金根搭建,相关的内容,大家可以参考他写的这几篇文章: <使用VS2010的CodedUI来做自己的自动化测

Docker与Web自动化测试:一键创建Selenium Grid集群

Docker的容器技术的优秀特性,例如秒级启动.应用隔离.良好的可移植性等,可以在DevOps中大显身手,并推动持续集成,持续交付等理念落地.今天我们就将结合Selenium Grid来介绍Docker在自动化测试中的使用场景. Selenium Grid 简介 Selenium 是针对Web应用的自动化测试框架和工具集合,支持多种浏览器和编程语言.Selenium的测试用例直接运行在浏览器中,并模拟用户的操作. Selenium Grid是一个分布式Web测试工具,可以将测试透明地分发到多个主

《精通Spring MVC 4》——第1章 快速搭建Spring Web应用 1.1Spring Tool Suite简介

第1章 快速搭建Spring Web应用 在本章中,我们将会直接接触代码并搭建一个Web应用,本书的其他章节将会基于该应用进行讲解. 在这里,我们将会使用Spring Boot的自动配置功能来构建应用,这样的话,就能完全避免使用样板式的配置文件. 本书中将会使用Gradle和Java 8,但是也不必为此感到担心.如果你还在使用Maven和更早版本的Java的话,相信你会发现这些技术也是很易于使用的. 很多官方的Spring教程同时提供了Gradle构建和Maven构建,因此,如果你决定继续使用M

开发基于XML的Selenium自动化测试框架

为解决该群体的困扰,本文将介绍如何让不熟悉编程的业务http://www.aliyun.com/zixun/aggregation/9621.html">测试人员也能编写出类似传统功能测试用例的自动化测试用例,从而扫除自动化测试的技术障碍. 本文适用于需要为测试团队开发自动化回归测试框架的测试设计开发人员.目前业内主流的商业自动化测试工具和开放源代码测试工具,都需要测试人员熟悉开发编程语言.但是过高的编程门槛让很多测试人员只能对自动化测试驻足遥望.为解决该群体的困扰,本文将介绍一种基于 X

通过双向证书认证访问由tomcat7和Axis2搭建的web服务(下)

以下内容为通过双向证书认证访问由tomcat7和Axis2搭建的web服务的下篇,主要分三个部分进行说明:搭建基于 https 的 web 服务.编写支持 https 方式的客户端.基于证书认证的 web 服务,下面让我们看一下详细的内容. 搭建基于 https 的 web 服务 修改 tomcat7 的配置 打开 <tomcat_home>\conf\server.xml 文件,找到如 图 3 所示的片段: 图 3. 修改前的 tomcat7 https 端口配置 将这一段注释符去掉,使得