杜龙少(sdvdxl)

自动测试工具Gauge

Word count: 2,256 / Reading time: 9 min
2017/07/31 Share

Gauge 是一款轻量级跨平台自动化测试工具集规则文件语法可以使用markdown语法编写另外还可以使用你喜欢的语言来编写业务规则代码比如gojavaruby等语言Gauge还提供了输出插件可以将执行结果导出为html或者xml甚至flash方便查看

Quick Start

有小伙伴不喜欢翻译官方文档的内容让我开门见山直接实战那我们直接按照步骤来创建一个 JAVA 版的测试项目前提是已经安装好了 gaugehtml-report 和 JAVA 插件如果需要安装帮助请参考下面的安装步骤或者直接参考官网的安装文档

创建项目

命令行执行gauge init java执行成功后悔看到下面的日志输出:

1
2
3
4
Downloading java.zip
...
Copying Gauge template java to current directory ...
Successfully initialized the project. Run specifications with "gauge specs/".

这样就创建了一个基于 JAVA 语言的测试项目并且提供了demo 示例切换到项目目录下直接执行 gauge run specs 进行测试会有以下输出:

1
2
3
4
5
6
7
8
9
# Specification Heading
## Vowel counts in single word ✔ ✔
## Vowel counts in multiple word ✔ ✔

Successfully generated html-report to => /Users/du/Desktop/test/reports/html-report
Specifications: 1 executed 1 passed 0 failed 0 skipped
Scenarios: 2 executed 2 passed 0 failed 0 skipped

Total time taken: 93ms

测试已经完成并且会在项目目录下 reports/html-report 生成测试报告直接用浏览器打开 index 即可查看测试报告:

这是报告的首页上面标注了总共多少个 spec 文件失败个数成功个数跳过多少个并且可以通过左下角的搜索或者直接点标题来查看对应的测试文件或者用例

每个spce 的测试报告都会将测试的用例结果打印出来并且用不同颜色表示出来绿色则是成功红色则是失败其中一个大的圆点表示的是一个测试场景圆点下每个绿色线条代表一个具体的测试用例

下面我们来尝试修改一下 The word "gauge" has "3" vowels 这个用例打开 specs/example.spec 这个文件在第18行我们就会找到上面提到的这个测试用例然后打开 src/test/java/StepImplementation.java 这个文件21行就是这个测试用例的实现代码 可以看到这个测试用例有两个参数wordexpectedCount现在我们将 specs/example.spec 中的这个测试用例的参数 expectedCount 改为 1然后重新运行gauge run specs执行过程中控制台抛出了异常信息接收后打开 生成的 html 文件查看有没有通过的测试用例:

尝试增加一个场景和一个用例:
specs/example.spec 中最后追加以下代码:

1
2
3
4
测试场景
---------------

* 新增的一个测试"成功"

然后在 StepImplementation.java 中增加下面的方法:

1
2
3
4
@Step("新增的一个测试<param>")
public void testParam(String param) {
assertEquals("成功",param);
}

运行gauge run specs执行结束后打开报告我们新定义的场景和用例豆子行成功了现在再修改一下 sample.spce文件在最后再追加以下代码:

1
新增的一个测试"失败"

运行gauge run specs执行结束后打开报告我们新定义的场景和用例豆子行失败了因为参数值和预期不一致我们的代码抛出了异常则代表该测试用例是失败的

细心的同学可能发现每个场景开头都有 Vowels in English language are "aeiou". 这个测试用例这是因为这个测试用例是在 spec 层级下会在执行过程中追加到每个场景的开始另外会发现有切换窗口的动作并且在失败的用例中有图片生成这个则是默认配置失败则截取屏幕图片的配置造成的如果不想截图则可以修改 env/default/default.properties 文件第13行的 screenshot_on_failure 属性为 false 即可

至此我们学会了如何运行测试用例如何编写测试用例如果需要其他知识点比如数据到不同范围如何在用例失败的情况下继续执行该场景的其他用例请参考下面的介绍和官网知识

主要特点

  • A rich markup based on markdown
  • Simple, Flexible and Rich Syntax
  • Business Language Tests : Supports the concept of executable documentation.
  • Consistent Cross Platform/Language Support for writing test code. Currently supported languages.
  • Open Source, so it could be shared freely and improved by others as well.
  • A modular architecture with Plugins support.
  • Extensible through Plugins and Hackable.
  • Supports External Data Sources.
  • Helps you create Maintainable and Understandable test suites.
    IDE Support.

概念(术语)

Specifications (spec)

一个spec就是一个spec文件用来定义规则
使用markdown的一级标题来定义该文件的说明比如:

1
2
Specification name
==================

或者

1
# Specification name

Scenarios

一个 scenarios 可以认为是一个组定义在spec文件中使用markdown的二级标题定义

1
2
Scenarios
----------------

或者

1
## Scenarios

Tags

可以给 Spec 文件和 Scenarios 打标签

1
2
3
4
5
6
7
8
9
10
Specification name
================

tags: s1,test1


Scenarios
----------------

tags: s1, s2

Steps

这个就是具体的测试用例使用markdown* 声明一个用例

1
* Step Name

step 还支持参数包括静态参数动态参数表格参数特殊参数

静态参数

静态参数用双引号包裹:

1
* Check "product" exists

动态参数

动态参数使用尖括号包裹跟下面的特殊参数结合使用

1
* Check <product> exists

表格参数

表格参数就是一个二维表格所构成的数据

1
2
3
4
5
* Step that takes a table
| id | name |
|-----|---------|
| 123 | John |
| 456 | Mcclain |

注意定义和表格之间没有空行表格是直接跟在定义的语句下面

特殊参数

1
<prefix:value>

prefix 支持 filetable

1
2
3
4
5
// file 
* Check if <file:/work/content.txt> is visible

// table
* Check if the users exist <table:/Users/john/work/users.csv>

注释

没有特殊的语法任何一般的文本都可以作为注释

其他

支持图片连接

安装

首先要安装Gauge程序可以从这里https://getgauge.io/get-started.html下载对应平台的安装程序Windows平台没有测试

Mac

mac用户可以使用brew安装brew update && brew install gauge也可以从上面的地址下载安装包然后执行安装即可

Linux

linux用户需要下载linux程序下载下来是个安装包假设我们放到 /opt/gauge/gauge-0.9.0-linux.x86_64.zip (最好创建一个目录因为解压后不会生成单独的目录)切换到 /opt/gauge 执行unzip gauge-0.9.0-linux.x86_64.zip得到以下文件

1
2
3
4
5

├── bin
│ ├── gauge
│ └── gauge_screenshot
└── install.sh

执行./install.sh一直按回车使用默认配置即可安装完成

其他环境

如果要使用java则需要安装jdk如果要使用C#则需要安装.net环境总之需要什么语言就需要安装什么环境

安装完成后命令行输入gauge如果出现 gauge 的帮助信息则说明安装成功否则请按照官方文档进行安装

插件

Gauge 支持一些插件比如生成java和执行代码的插件生成html报告的插件等等插件支持:

  • java
  • ruby
  • flash
  • go
  • js
  • html-report
  • xml-report
  • python
  • spectacle
    (可能还有其他的暂时没有去搜索)

插件安装方式:gauge install <plugin-name>如果下载太慢可以手动下载然后使用本地安装方式安装 gauge install --file <path-plugin>

实战

这里我们使用的是JAVA方式所以这里需要安装JAVA插件gauge install java并且我们要以html方式展示报告需要安装 html report 插件 gauge install html-report

执行 gauge init java 会生成一个javagauge项目:

1
2
3
4
5
6
7
8
9
10
11
12
├── env
│ └── default
│ ├── default.properties
│ └── java.properties
├── libs
├── manifest.json
├── specs
│ └── example.spec
└── src
└── test
└── java
└── StepImplementation.java

想要执行测试执行命令 gauge run specs 即可 最后会输出执行结果同时会在项目下生成reports/html-report html报告用浏览器打开即可查看结果

结构说明

目录 说明
env 环境变量可以配置不通参数适用于不通环境比如测试环境还是线上环境
libs 其他要依赖的java类库要放到这里
manifest.json 项目配置文件
spces 测试用例描述文件存放的地方
src java 代码放置地方

命令说明

上面我们使用了命令 gauge run spces 来运行测试用例run 后面跟的 spces就是项目中的 specs 目录代表执行这个目录下的所有文件也可以单独执行一个文件执行比如gauge run specs/example.spec

文件编写

用例定义在spec文件中具体实现的代码则是在java代码中实现的

进阶

CATALOG
  1. 1. Quick Start
    1. 1.1. 创建项目
  2. 2. 主要特点
  3. 3. 概念 (术语)
    1. 3.1. Specifications (spec)
    2. 3.2. Scenarios
    3. 3.3. Tags
    4. 3.4. Steps
    5. 3.5. 静态参数
    6. 3.6. 动态参数
    7. 3.7. 表格参数
    8. 3.8. 特殊参数
    9. 3.9. 注释
    10. 3.10. 其他
  4. 4. 安装
    1. 4.1. Mac
    2. 4.2. Linux
    3. 4.3. 其他环境
    4. 4.4. 插件
  5. 5. 实战
    1. 5.1. 结构说明
    2. 5.2. 命令说明
    3. 5.3. 文件编写
  6. 6. 进阶