目录
前言
JMeter接口自动化发包与示例
1简介
2结构
3代码:
4运行结果
5 小结
结语
前言 JMeter接口自动化发包与示例近期需要完成对于接口的测试,于是了解并简单做了个测试示例,看了看这款江湖上声名远播的强大的软件-Jmeter靠不靠谱。 官网:Apache JMeter - Apache JMeter™
1简介- Apache-Jmeter是一个使用java语言编写且开源,可拓展性较强的测试框架,设计初期用于web应用的压力性能测试较多,但现在功能已经非常丰富,不仅是压力,而目前的接口自动化都可以使用该工具完成
- 本次需求只依据业务,简单设置定时任务,往指定的接口发送接口数据,对接口返回数据做assert断言判断结果,体验一下该软件与postman有何差异。
Jmeter左上角点击文件-新建,即生成一个测试计划,相当于一个project,并创建以下层级结构
-
聚合报告
查看该测试计划的执行结果报告,每个执行的接口都统计在这,如果是做压力测试的话,就可以得出很多次执行的一个接口的性能情况。
-
查看结果树
查看每个测试接口的执行情况,包括该接口实际发送的包以及接口的响应都可以在这看到。
-
Http信息头管理器
消息头信息可以在这里定义,没定义就是按照默认的头发包。
-
setUp线程组
该线程组在整个项目的自动化时,可以将部分鉴权接口、参数生成与配置等放入该模块,以便确保该模块优先执行。
-
线程组
-
前置预处理程序
这里我选择beanshell预处理程序,构造后面接口发的数据,可以看到脚本上边有个tips(scripts variable:ctx vars props prev sampler log),即Jmeter提示在编写脚本的时候可以使用ctx、vars等类去调用相应的API,这些值比如ctx的具体用法可到官网:http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterContext.html,常见的API:
- ctx - ( [JMeterContext ](http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterContext.html)) - gives access to the context - vars - ( [JMeterVariables ](http://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html)) - gives read/write access to variables: vars.get(key); vars.put(key,val); vars.putObject("OBJ1",new Object()); vars.getObject("OBJ2"); - props - (JMeterProperties - class java.util.Properties) - e.g. props.get("START.HMS"); props.put("PROP1","1234"); - prev - ( [SampleResult ](http://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html)) - gives access to the previous SampleResult (if any) - sampler - (Sampler)- gives access to the current sampler
-
业务请求代码{单个/多个http请求/循环压测等}
-
后置预处理程序
//一般来说提取响应内容等打印出来 String statusCode = prev.getResponseCode(); log.info(statusCode);
-
-
tearDown线程组
该线程组将是最后处理的线程组,可以将清除测试数据等放在该模块内部执行。
-
测试计划:增加用户定义变量如下:
host192.168.3.10port50553longConPort60443devNum1projectId1Token1 -
beanshell预处理程序中处理需要往接口中带入的一些随机变量,这里需求是要依据主设备的MAC地址等信息,携带子设备的相关信息通过接口上报给服务器,于是需要在预处理脚本中新增易于维护的MAC地址信息,也便于后续压力测试的时候生成百千万个设备数据时候做改写。以下定义一台主设备,31台子设备的MAC地址代码如下:
/** * 生成的device_mac为00-00-0X-00-00-00,其中X这里定义为了进程号。整个生成规则可自己依据需求定义 * 对应的25个连接中断的MAC地址也可自定义,client_mac为00-00-0X-00-00-01、00-00-0X-00-00-02……00-00-0X-00-00-25 */ pre_mac = ""; //getThreadNum获取当前进程编号,进程号从0开始的,这里结果是1 thread_index = ctx.getThreadNum(); str_index = thread_index + ""; log.info("当前线程编号: " + str_index ); //最后生成六位字符串000001 n = 6 - str_index.length(); for (int i=0; i
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?