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

在路上 for 乐视商城 · 2017年09月18日 · 最后由 在路上 回复于 2019年07月26日 · 5515 次阅读

百度网盘地址更新: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  ·  2017年10月13日

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

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

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

共收到 14 条回复 时间 点赞

乐视还活着啊

恒温 回复

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

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

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

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

Mr_Peace 回复

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

Mr_Peace 回复

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

在路上 关闭了讨论 09月21日 11:33
在路上 重新开启了讨论 10月26日 17:38

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

杀手carry 回复

文章末尾有下载地址

执行之后没反应

testhe 回复

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

testhe 回复

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

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

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册