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

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

相信很多做Web自动化测试的读者都用过Selenium作为录制回放的工具,这里笔者将介绍另一个录制回放的工具Sahi, 以及如何使用Sahi和Twist快速搭建一套简单易用的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…….(加0是因为根据字母序11是在1和2之间的)这样便于查找以及管理场景执行的先后顺序。

3.       当Sahi录制生成的元素ID是一长串数字时,应使用in,near等方法配合别的页面元素来进行定位。

 从框架图可以看出,这是一个比较简单的自动化测试框架,但正因为简单,它有以下一些优势:

1.      学习成本低。Sahi只需要会使用就行,具体的API可以在编写代码时再查找。学习Twist只需要查看IDE上的帮助文档即可,简单易懂。对于会一点Java编程的人来说,只需一到两天的时间,便可上手编写测试用例。

2.      自动化效率高。测试人员可以专注于业务逻辑而非代码逻辑,对于大多数Web应用来说,Sahi都能非常好的实现录制回放,这样就能在很大程度上提高测试自动化的效率。

3.      重用性高。同一个步骤可以在不同的测试场景中反复使用。

4.      易于维护。由于录制的脚本都非常简单,当业务发生变化时,可以很快的修改相应的业务逻辑和代码。

5.      定位问题方便,易于重现。由于代码逻辑和业务逻辑是关联的,当测试运行失败后,可以很方便的定位到具体的业务步骤,从而知道该如何手工重现问题。

当然,使用这个框架也有一些不足:

1.      Twist不是开源软件,使用需要支付一定费用。($99 per user/per year)

2.      如果Test Case数量较多的话,执行效率会比较低。

总的来说,这个框架适合一些小型的测试团队进行敏捷测试,Twist支持在任何持续集成的环境中运行,只需编写一些相关的Ant或者Maven的任务即可。以下是在搭建框架中的一些经验供大家参考:

1.      刚开始时多花点时间在阅读帮助文档上,了解Twist具有的所有功能以及使用方法。

2.      编写测试步骤的粒度一定要掌握好,尽量从业务逻辑角度出发,增强可读性和重用性,强烈推荐仔细阅读Twist中相关的Guideline.

3.      在编写测试代码方面,可先尝试多自动化一些场景,再根据需要建立自己的公共库,把一些复用性高的代码封装起来。

 

你可能感兴趣的:(Automation,Test)