postman自动化测试+jenkins持续集成环境部署

简介

本文档记录接口测试工具postman的基本接口测试使用,以及通过集合的功能批量执行接口测试用例,实现接口自动化测试。然后通过Newman工具直接从命令行运行和测试postman集合,也可以通过Newman工具生成html格式的测试报告。最后介绍通过jenkins以及git配置来实现持续集成测试,将测试结果报告直接通过邮箱发送给指定人。本文所有内容参考书籍接口自动化测试持续集成postman+Newman+git+jenkins,首先下载测试环境代码,然后通过执行python storm.py 运行环境,进行接口测试。

Postman使用

集合

单个接口测试通过postman工具很简单的就可以跑起来,那当多个接口用例如何批量执行则需要集合的功能。集合能够将不同环境下,有组织的api接口用例管理起来,通过批量执行来实现自动化测试。

首先咱们创建集合,本例集合名字为storm-test,然后点击右键创建请求,或者将其他地方的api接口测试请求移动到此。

本例中,创建了35个接口测试用例,来实现对所需要测试的接口进行测试。包含各种正常满足条件的返回,以及异常测试。通过在每个请求build界面中的tests下面,写入JavaScript代码对结果进行判断,满足条件则通过,不满足条件则接口测试失败。这里用一个请求简单介绍下脚本的使用。

下图对postman大致工作区域做了简单介绍。

下图选择第一条用例进行简单讲解

最上面的红框表示请求的url地址,这里为http://{{domain}}/getuser 这里的{{}}2个大括号表示的是一个变量,这里一般是请求地址。通过变量可以解决很多麻烦事,比方说当url地址改变后,只需要替换变量值就可以了,所有的其他请求地址会自动更新。若没有使用变量的话则需要每个请求地址进行手动修改。变量如下图设置,这里不对变量进行详细介绍。

中间的红框表示请求参数,下面的红框表示请求的返回结果。通过返回结果可以看到该请求结果是否符合预期。然后这里介绍发送请求界面中的tests功能。

这里的tests里面的代码表示预期返回结果状态为200,若实际测试结果返回状态是200则表示该用例测试通过,否则表示测试不通过。

执行测试

在本例测试环境下,集合中包含35条接口测试用例,有测试通过的也有测试不通过的。下面批量执行,看下效果。点击集合名字旁边的三角形按钮,然后点击run按钮

弹出集合运行对话框

分别设置环境,所有请求迭代运行次数,每次发送请求测试之间的延时,选择测试文件等等。点击下方run 按钮。测试结果如下图

28条成功,7条失败。

Newman工具

Centos7环境下安装Newman工具。本例Newman工具安装服务器与jenkins服务器共用。

安装node.js

newman的安装依赖nodejs,首先安装node/npm

进入到 /usr/local目录

[root@yumlocal local]# cd /usr/local

# 下载安装包

[root@yumlocal local]# wget https://nodejs.org/dist/v10.16.2/node-v10.16.2-linux-x64.tar.xz

# 解压

[root@yumlocal local]# tar -xvf node-v10.16.2-linux-x64.tar.xz

# 重命名为node

[root@yumlocal local]# mv node-v10.16.2-linux-x64 node

# 配置环境变量

[root@yumlocal local]# vi /etc/profile

在文件末尾添加:

export NODE_HOME=/usr/local/node

export PATH=$NODE_HOME/bin:$PATH

# 使环境变量生效

[root@yumlocal local]# source /etc/profile

# 检测node和npm是否安装成功

[root@yumlocal local]# node -v

v10.16.2

[root@yumlocal local]# npm -v

6.9.0

安装newman

[root@yumlocal local]# npm install -g newman

/usr/local/node/bin/newman -> /usr/local/node/lib/node_modules/newman/bin/newman.js

+ newman@4.5.3

added 154 packages from 195 contributors in 108.393s

# 检测Newman是否安装成功

[root@yumlocal local]# newman -v

4.5.3

#安装 newman-reporter-html用于生成html reporrt

npm install -g  newman-reporter-html

newman使用

下载postman集合代码,在集合右边点击。。。按钮,然后选择export

导出json文件选项中默认选择推荐格式v2.1。然后选择保存地址。

然后导出环境变量json文件,和之前postman 集合json文件放在一起。

运行Newman,进行测试

[root@yumlocal postmen-test]# ll

total 36

-rw-r–r– 1 root root 318 Jun 2 18:11 environment-storm.postman_environment.json

-rw-r–r– 1 root root 31334 Jun 2 18:11 storm-test.postman_collection.json

[root@yumlocal postmen-test]# newman run storm-test.postman_collection.json -e environment-storm.postman_environment.json

-e指定环境变量文件

可以看到详细的执行结果:

现在通过Newman工具将结果写入到html文件中,形成测试报告。

[root@yumlocal postmen-test]# newman run storm-test.postman_collection.json -e environment-storm.postman_environment.json –reporters html –reporter-html-export test_result.html

将测试结果写入到文件test_result.html文件中。

[root@yumlocal postmen-test]# ll

total 384

-rw-r–r– 1 root root 318 Jun 2 18:11 environment-storm.postman_environment.json

-rw-r–r– 1 root root 31334 Jun 2 18:11 storm-test.postman_collection.json

-rw-r–r– 1 root root 355103 Jun 3 16:01 test_result.html

浏览器打开结果文件,查看

可以看到测试结果汇总以及每个请求详细信息。

持续集成

Jenkins环境部署

Jenkins环境部署需要java环境。

java 安装

[root@yumlocal ~]# tar -zxvf jdk-8u144-linux-x64.tar.gz

[root@yumlocal ~]# mv jdk1.8.0_144/ /usr/java/

[root@yumlocal ~]# vim /etc/profile

增加如下

export JAVA_HOME=/usr/java/jdk1.8.0_144

export PATH=$JAVA_HOME/bin:$PATHexportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

生效

[root@yumlocal ~]# source /etc/profile

[root@yumlocal ~]# java -version

java version “1.8.0_144″Java(TM) SE Runtime Environment (build 1.8.0_144-b01)Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

jenkins安装

[root@yumlocal~]#wget https://pkg.jenkins.io/redhat-stable/jenkins-2.222.4-1.1.noarch.rpm

rpm安装

[root@yumlocal ~]# rpm -ivh jenkins-2.222.4-1.1.noarch.rpm

启动服务

systemctl start jenkins

Starting Jenkins bash: /usr/bin/java: No such file or directory

[root@yumlocal ~]# ln -s /usr/java/jdk1.8.0_144/bin/java /usr/bin/java

[root@yumlocal ~]# systemctl start jenkins

访问登录:

http://192.168.5.56:8080/ 正确设置用户名密码后登陆jenkins环境。

管理插件中 搜索Chinese 进行中文切换。插件名字为
Localization: Chinese (Simplified)
进行安装后

然后重启jenkins

管理插件中,搜索Email extension 并安装邮箱插件。

Jenkins配置

对jenkins进行全局配置

设置全局url地址以及系统管理员邮箱地址,发件人地址。

下同一个页面下,继续往下翻,对邮箱进行设置。使用smtp等,输入user name 跟上面的发件人地址必须是一样的,这里的密码不是邮箱的登录密码而是授权码。根据自身使用邮箱服务提供商,自行输入。本例使用QQ邮箱

继续往下

输入默认收件人地址

继续往下,在默认触发条件那里新增always,即不管任务构建成功与否都会发送邮件

继续。勾选发送测试邮件,进行测试。最后点击保存

项目设置

新建一个名称是postman-test的自由风格的软件项目。

对项目进行配置

构建触发器,即定时任务,此例每小时触发一次。H/60 * * * *

创建构建代码,即触发器触发后执行什么操作。

这里就是执行一些shell脚本,进入到git目录,从github上pull代码(代码即是postman的集合json文),然后执行Newman命令自动化测试以及生成HTML报告。

这里遇到了几个问题:

1、修改后台默认执行命令用户为root,否则会提示权限不够的,默认jenkins用户。

[root@yumlocal postmen-test]# cat /etc/sysconfig/jenkins | grep USER

JENKINS_USER=”root”

[root@yumlocal postmen-test]# chown -R root:root /var/lib/jenkins/

[root@yumlocal postmen-test]# chown -R root:root /var/cache/jenkins/

[root@yumlocal postmen-test]# chown -R root:root /var/log/jenkins/

2、shell代码最后,增加了一行

/usr/bin/echo test ok

因为Newman自动化测试以及生成报告是成功的,但是shell下命令返回结果为1,不为0 echo $? 查看导致jenkins判定任务执行失败。

3、在shell代码最前面,增加了#!/bin/bash

Git相关配置

在当前目录/postman-test下执行命令,将远端仓库代码下载到本地

git clone git@github.com:******/postmen-test.git

当测试人员对测试脚本进行修改之后,pull到远端仓库中如下图。

这样,每次触发器触发构建任务的时候,则会执行git pull命令拉取修改过后的文件合并到本地目录中,这样每次Newman运行的集合文件json都是最新的。

构建后操作里面对邮箱进行相关设置。

往下翻,高级选项中

新增always触发器,只要构建任务执行则发送邮件,点击高级按钮设置收件人邮箱

最后点击保存按钮。

结果确认

查看构建历史记录,都是构建成功的,且间隔时间为1小时。这里可根据实际情况设置时间

查看邮箱

每次收到邮件后,直接到目录中查看测试报告即可。

整个自动化测试以及持续集成环境大概就是如此,关键还是在测试用例上面,测试用例是否全覆盖功能场景,各类异常场景,边界值场景等等。