基于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/

目录
相关文章
|
20小时前
|
监控 数据可视化 IDE
python自动化测试实战 —— 单元测试框架
python自动化测试实战 —— 单元测试框架
8 2
|
20小时前
|
Java 测试技术 数据库连接
【如何学习Python自动化测试】—— Python 的 unittest 框架
【如何学习Python自动化测试】—— Python 的 unittest 框架
4 0
|
2天前
|
设计模式 开发框架 数据库
Python Web开发主要常用的框架
【5月更文挑战第12天】Python Web开发框架包括Django、Flask、Tornado和Pyramid。Django适用于复杂应用,提供ORM、模板引擎等全套功能;Flask轻量级,易于扩展,适合小型至中型项目;Tornado擅长处理高并发,支持异步和WebSockets;Pyramid灵活强大,可适配多种数据库和模板引擎,适用于各种规模项目。选择框架需依据项目需求和技术栈。
11 2
|
2天前
|
敏捷开发 开发框架 自然语言处理
深入理解软件测试中的自动化框架选择
【5月更文挑战第12天】 在现代软件开发周期中,自动化测试已成为确保产品质量和加速市场交付的关键组成部分。选择合适的自动化测试框架对于实现有效的测试策略至关重要。本文将探讨在选择自动化测试框架时应考虑的关键因素,包括框架的可扩展性、易用性、社区支持和集成能力。通过分析比较Selenium、Appium和TestNG等流行框架的特点,本文旨在为读者提供一个清晰的指南,帮助他们根据具体的项目需求做出明智的选择。
|
3天前
|
Go
golang学习3,golang 项目中配置gin的web框架
golang学习3,golang 项目中配置gin的web框架
|
3天前
|
Java 中间件 测试技术
深入理解自动化测试框架Selenium的设计与实现
【5月更文挑战第10天】 本文旨在深度剖析自动化测试工具Selenium的核心架构与实现机制,通过对其设计理念、组件结构以及在实际软件测试中的应用进行详细解读,使读者能够全面理解Selenium在现代Web应用测试中的重要性和有效性。文章首先介绍Selenium的发展背景及其解决的问题,然后详细探讨其架构设计,包括各种驱动和API的作用,最后结合实际案例分析Selenium如何提高测试效率和准确性。
|
5天前
|
测试技术
测试基础 Junit单元测试框架
测试基础 Junit单元测试框架
11 2
测试基础 Junit单元测试框架
|
6天前
|
Java 测试技术 持续交付
自动化测试框架选型与实战:深入探索与应用
【5月更文挑战第8天】本文探讨了自动化测试框架的选型与实战应用,强调了其在软件质量保障中的重要性。选型原则包括考虑项目需求、技术栈、可扩展性和可维护性,以及社区支持和文档。介绍了Selenium、Appium、JUnit和Pytest等常用框架,并概述了实战应用的步骤,包括明确需求、搭建环境、编写测试用例、执行测试、分析结果、维护代码和持续集成。合理选型与实践能提升测试效率,保障项目成功。
|
8天前
|
敏捷开发 测试技术 持续交付
深入理解自动化测试:框架与实践
【5月更文挑战第5天】 在现代软件开发周期中,自动化测试已成为确保产品质量和加速交付过程的关键环节。本文将深入探讨自动化测试的核心概念、框架选择以及实际实施过程中的最佳实践。通过分析各种自动化测试工具和技术的优缺点,我们旨在为读者提供一种系统化的方法来构建和维护有效的自动化测试环境。
|
Web App开发 新零售 测试技术
Web性能压力测试工具之WebBench详解
Web性能压力测试工具之WebBench详解
1606 0

热门文章

最新文章