接口测试 从 0 到 1,用 Jmeter 搭建 HTTP 接口自动化引擎 1.0 版本

zailushang for 乐视商城 · September 18, 2017 · Last by zailushang replied at July 26, 2019 · 4719 hits

百度网盘地址更新:https://pan.baidu.com/s/13S0WStZpwlbL15IBp_Q-bg

1、已实现功能描述

1.1 框架包含:Jenkins、Ant、Jmeter

1.2 测试用例来源:.csv文件

如图:

1.3 报警邮件

  • 失败用例内容:详细说明失败用例的所有信息
  • 失败用例组统计及附件:
  • 附件内容包括
  • 测试用例执行摘要:
  • 测试用例详细信息:

1.4 自动化测试执行需要修改内容

  • 编写测试用例

  • 修改用例文件地址

  • 修改报告附件地址

2、接口自动化引擎逻辑详解

2.1 引擎框架

2.2 引擎逻辑描述

2.2.1 全局变量设计

2.2.2 测试用例文件导入

2.2.3 http头信息管理

2.2.4 http cookie信息管理

2.2.5 判断用例文件中用例是否需要测试

2.2.6 判断http请求是post还是get

  • 如果http请求是post

2.2.7 post请求配置逻辑

  • 获取post请求数据
  • BeanShell断言内容 断言内容解析:
int errcount = Integer.parseInt(vars.get("errcount").trim());    //统计失败用例数
int allcount = Integer.parseInt(vars.get("respcount").trim()); //统计用例组的用例数
if(SampleResult.getResponseCode().equals("200") && SampleResult.getResponseDataAsString().contains("${ResponseData}")){ //判断 状态码和断言内容
SampleResult.setSuccessful(true); //如果状态码和断言都匹配成功,标记该用例通过
vars.put("sendemail","no"); //标记不需要发送报警邮件
allcount++; //用例数+1
vars.put("respcount",allcount.toString()); //把当前已执行用例数保存到全局变量中
}else { //如果状态码或断言,有一个不匹配
errcount++; //失败用例数+1
allcount++; //用例数+1
SampleResult.setSuccessful(false); /标记该用例执行失败
String code = SampleResult.getResponseCode(); //获取状态码
String msg = SampleResult.getResponseMessage(); //获取响应信息
String data = SampleResult.getResponseDataAsString(); //获取响应Body
vars.put("Reqstauts","requestNook"); //标记该用例状态为 requestNook
vars.put("respcode",code); //保存状态码到全局变量
vars.put("respmsg",msg); // 保存响应信息到全局变量
vars.put("respdata",data); //保存响应body到全局变量
vars.put("errcount",errcount.toString()); // 保存失败用例数到全局变量
vars.put("respcount",allcount.toString()); //保存统计用例数到全局拜纳凉
vars.put("sendemail","yes"); //修改全局变量sendemail为yes,发送报警邮件
}
  • 判断是否发送邮件
  • 利用SMTP Sampler发送邮件

2.2.8 get请求配置逻辑

2.2.9 所有用例执行完毕,发送报警邮件

  • 邮件内容如下:

  • 至此,Jmeter HTTP接口自动化引擎搭建完毕
    还可以利用jenkins定时执行Jmeter引擎,从而实现对线上接口的监控

资料参考:
(1)Jmeter build.xml文件:http://pan.baidu.com/s/1i46tMlR
(2)Jmeter生成报告格式(参考heman贺满博客http://www.cnblogs.com/puresoul/http://pan.baidu.com/s/1kVssMzl):
(3)jmeter.properties(修改jmeter生成.jtl文件内容配置):http://pan.baidu.com/s/1cyaNlc
(4)测试用例模版:http://pan.baidu.com/s/1hselPlU
(5)Jmeter接口自动化引擎内容:http://pan.baidu.com/s/1geC34pt

本次搭建内容,多为参考前辈博客,如有侵权,请联系我个人(onthewatli@foxmail.com),谢谢

附言 1  ·  October 13, 2017

**本文档仅限于jmeter3.1版本,3.2版本有部分bug,并不支持本文全部功能

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
最佳回复
恒温 回复

。。。今晚开始919大促活动,欢迎光临 乐视商城 https://www.lemall.com/

共收到 14 条回复 时间 点赞

乐视还活着啊

恒温 回复

。。。今晚开始919大促活动,欢迎光临 乐视商城 https://www.lemall.com/

你的圈子设置错了吧,圈子设置为私有的话,外面的人是看不了的

没有,就是标记一下圈子,然后希望大家可以看到

JMeter做接口测试还是有局限性。。一是脚本复用性太差,二是接口返回值断言不够灵活

Mr_Peace 回复

脚本复用性、接口返回值断言不够灵活,可以举例说明吗?我接触的功能测试工作不够多,这方面经验确实很欠缺

Mr_Peace 回复

断言还是比较灵活的吧,用BeanShell可以断言,很灵活的

zailushang 关闭了讨论 21 Sep 11:33
zailushang 重新开启了讨论 26 Oct 17:38

这个发邮件的sample能分享一个不?

杀手carry 回复

文章末尾有下载地址

执行之后没反应

testhe 回复

可以敲代码的话,用https://testerhome.com/opensource_projects/avatar
jmeter的不够灵活

testhe 回复

执行之后没反应?看看jmeter的日志

后面发的 地址都访问不了,楼主能在提供一下 下载案例吗?

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up