翻书《接口自动化测试持续集成》

部门里来了一个会白盒测试的大哥,我看最近在搞接口自动化测试,我也翻翻书看能不能一起搞点事情做。不能搞就当学着玩了。

这本书似乎很适合入门:《接口自动化测试持续集成:Postman+Newman+Git+Jenkins+钉钉》

书目信息

信息
书名 接口自动化测试持续集成:Postman+Newman+Git+Jenkins+钉钉
作者 Storm
出版社 人民邮电出版社
出版时间 2019-02-01
ISBN 9787115503411

如何利用 postman 完成接口自动化测试。后续接入持续集成。

技术人员进行http接口测试时,经常采用Postman、JMeter、SoapUI、Insomnia等工具

1 接口测试基础知识

接口测试的必要性不多说了,

接口测试自动化维护成本比UI自动化维护成本更低,接口测试相对更容易实现自动化测试持续集成,且可以减少回归测试的人力与时间成本,缩短测试周期,满足后端快速发布版本的需求。持续集成是接口测试低成本、高收益的根源,是接口测试的灵魂。

http 的请求和相应略过。

接口测试的流程

一般遵循下列流程:

  • 编写接口测试计划。确定需求,测试环境,测试方法。为测试用例编写做准备。结构可能包括:概述、测试资源、测试功能和重点、测试策略、测试风险、测试标准
  • 编写和评审接口测试用例。思路如下:

  • 执行接口测试。
  • 持续集成

接口文档系统

书中使用的是showDoc,可以执行安装。

1
2
3
4
5
6
7
8
9
# docker 操作
# 克隆
git clone -o gitbug https://github.com/star7th/showdoc
# 编译
cd showdoc/
docker build -t showdoc ./
docker run -d --name showdoc -p 4999:80 showdoc
# 访问
# http://localhost:4999/install/

访问 Demo

https://www.showdoc.cc/demo?page_id=9

一个完整的API文档应该包含以下几部分。

  • 接口名称。
  • 简要描述。
  • 请求的URL。
  • 请求方式(GET / POST等)
  • 请求参数(参数名、是否必选、参数类型、说明)。
  • 返回示例。
  • 返回参数说明(参数名、类型、说明)。
  • 备注及责任人。

2 Postman

安装本地版。设置一般不需要修改。

自己发送一个请求,保存请求。

3 基本操作

略过。postman 也可以抓包,算了还是 Charles 方便。

4 集合

变量

比如区分测试环境和正式环境,路径一样,域名不同。使用绝对路径很麻烦,使用变量就很舒服了:

1
2
https://{{domain}}/api # 这里使用了变量
https://{{domain}}/api

这里也有作用域的概念,倒是不复杂:

Global > Environment > Local > Data,越靠后权重越高

怎么用?创建 Environment 创建环境。

变量除了在 url 里使用,也可以在 body 参数里使用,比如我们把 cookie 放进去

runner

可以对一个集合进行测试。

我们在 test 里可以这么干`

1
2
const data = JSON.parse(responseBody)
test['返回的值匹配'] = data.form.foo === data.value

默认从上到下,可以在 test 里使用postman.setNextRequest(Name)` 来自由切换

针对错误选项也可以跳转

1
2
3
if (responseCode.code === 401) {
postman.setNextRequest(‘Request 4’);
}

5 脚本

  • 在发送请求之前,可以添加 Pre-request Script与请求脚本。里面是 js,可以判断获取请求参数啥的。

  • 请求拿到结果,Tests 是测试脚本。

不会使用JavaScript,不知道pm、Environment等关键字的意思,没关系,Postman准备了常用脚本示例,这些脚本能够满足大多数接口测试的需求

1
2
3
4
5
6
7
8
9
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});

pm.test("response should be okay to process", function () {
pm.response.to.not.be.error;
pm.response.to.have.jsonBody('');
pm.response.to.not.have.jsonBody('error');
});

艾玛,expect 都出来了,用的是 chai expect 有点语焉不详呢。

Newman

Newman是Postman的命令行集合运行器。它允许用户直接从命令行运行和测试Postman集合。它是基于可扩展性而构建的,因此用户可以轻松地将其与持续集成服务器和构建系统集成。

Newman与Postman保持了功能对等,用户可以使用Newman执行所有针对集合的操作。

是一个 npm 包,可以在 node 里用。

1
2
3
4
npm i newman
npx newman run a.json # 似乎可以从 Postman 里导出

npm install newman-reporter-teamcity

戛然而止。。。

6 Jenkins Git 钉钉

登录Jenkins,选择“系统管理”→“管理插件”→“可选插件”选项卡,搜索“dingding”,安装。

7 接口持续集成测试

8 实战

实战挺好。回来再看吧。

全书完。

请我喝杯咖啡吧~