一个使用Jmeter做接口性能测试的实战案例
1 安装并配置Jmeter
Jmeter的安装不在这里阐述,安装步骤非常简单。
直接进入主题
1.1 数据库连接配置
由于测试过程需要调用数据库获取响应部署数据,因此需要先建立与数据库的连接。 如果不涉及数据操作,可以跳过此步骤。
步骤1:打开jmeter开源性能测试工具,测试计划->添加线程组
步骤2:添加jdbc request请求 –>添加JCBC connection Configuration 数据库连接配置
步骤3:配置jdbc request请求,添加sql查询语句
举例Sql语句:
select DISTINCT A.XX,A.XX,B.XX,A.XXX
from Table A
left join
(select XX,XX,XX,XXX from TableB) as B
on A.XXX=B.XXX
where XX like 'KKK%';
步骤4:添加后置处理器 JDBC Request->后置处理器-> BeanShell PostProcessor
对选择出来的数据进行参数化处理。
import java.util.ArrayList;
String count_DB = vars.get("var_#");
int count = Integer.parseInt(count_DB);
ArrayList 变量ANoArray = new ArrayList();
ArrayList 变量BNoArray = new ArrayList();
for(int i=0;i<count;i++){
String 变量A= String.valueOf(vars.getObject("result").get(i).get("变量A"));
String 变量B= String.valueOf(vars.getObject("result").get(i).get("变量B"));
变量ANoArray.add(变量A);
变量BNoArray.add(变量B);
} vars.putObject("变量ANoArray",变量ANoArray);
vars.putObject("变量BNoArray",变量BNoArray);
1.2http请求配置
步骤1:增加循环循环控制器 线程组->逻辑控制器->循环控制器
步骤2:添加自增计数器
步骤3:添加Constant Throughput Timer (常数吞吐量定时器)
Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数,因此,对应测试需求中所要求的1000/s,这里的值应该是 60000。
注意:
Constant Throughput Timer只有在线程组中的线程产生足够多的request 的情况下才有意义,因此,即使设置了Constant Throughput Timer的值,也可能由于线程组中的线程数量不够导致没有生效。实测,一个线程可以启动10-20的并发,那么一个可设置300个线程左右。
步骤4:添加http请求
注意json格式的需要增加 http信息头管理器,Content-Type设置为application/json。
http的详细请求中根据业务的接口报文来添加数据,主要添加如下:
请求地址
URL
端口
请求报文
步骤5:添加前置处理器 http请求->前置处理器-> BeanShell PreProcessor
根据jdbc请求出来的数据,参数化,实现批量数据操作
import java.util.ArrayList;
String Counter_DB = vars.get("Counter");
int Counter_1 = Integer.parseInt(Counter_DB);
int Counter = Counter_1-1;
log.info("……………Counter………"+Counter);
ArrayList 变量ANoArray = vars.getObject("变量ANoArray");
ArrayList 变量BNoArray = vars.getObject("变量BNoArray");
String 变量A= 变量ANoArray.get(Counter);
String 变量B= 变量BNoArray.get(Counter);
vars.put("变量A",变量A);
vars.put("变量B",变量B);
log.info("……………变量A………"+变量A);
log.info("……………变量B………"+变量B);
步骤6:添加BeanShell Sampler实现请求数据的MD5加密
如果请求中的数据涉及md5加密,Jmeter自身没有实现MD5加密的函数,可以自定义一个jar包
参考:http://blog.csdn.net/yuanwq2012/article/details/51252649
注: MD5加密包放到此目录下,重启Jmeter即可生效。
apache-jmeter-3.2\apache-jmeter-3.2\lib
3.3添加监控数据
在服务器上启动agent,作为服务端:
cd JmeterAgent/
./startAgent.sh –sysinfo
Jmeter 作为客户端连接服务器:
首先,需要获取JMeterPlugins-Standard-1.4.0插件包,并解压到本地任一目录下如D:\software\apache-jmeter-3.2\apache-jmeter-3.2\lib\ext目录下,重启Jmeter生效。
3.4 性能测试执行&数据收集
点击Jmeter的启动按钮,启动测试,测试过程注意观察请求结果是否有报错。测试结果如果不达标,则需要进行性能调优。
一个使用Jmeter做接口性能测试的实战案例的更多相关文章
- Jmeter Http接口性能测试
Jmeter Http接口性能测试 1. 启动Jmeter Jmeter下载解压即可使用,Jmeter启动,点击D:\ProgramFiles\jmeter\apache-jmeter-2. ...
- 【技术博客】 利用Postman和Jmeter进行接口性能测试
利用Postman和Jmeter进行接口性能测试 作者:ZBW 版本:v1.1 在Phylab的开发过程中,对于生成报告接口的性能考量十分重要.原有的Latex接口虽然生成的报告美观,但编译Latex ...
- Jmeter+jenkins接口性能测试平台实践整理(二)
本篇为Jmeter+jenkins+Ant方式执行性能测试 1.设置JDK,ANT环境变量: 2.build.xml文件: <?xml version="1.0" encod ...
- Jmeter+jenkins接口性能测试平台实践整理(一)
最近两周在研究jmeter+Jenkin的性能测试平台测试dubbo接口,分别尝试使用maven,ant和Shell进行构建,jmeter相关设置略. 一.Jmeter+jenkins+Shell+t ...
- Apache JMeter 做接口并发测试
获知来源:查找如何使用Postman进行接口并发测试时,在StackOverflow上看到,说postman只能做串行测试,而且postman并不是被设计做这种测试的:而jmeter就是为了测试而开发 ...
- JMeter之Http协议接口性能测试
一.不同角色眼中的接口 1.1,开发人员眼中的接口 1.2,测试人员眼中的接口 二.Http协议基本介绍 2.1,常见的接口协议 1.:2. :3. :4.:5.: 6. 2.2,Http协议栈 ...
- JMeter之Http协议接口性能测试--基础
一.不同角色眼中的接口 1.1,开发人员眼中的接口 1.2,测试人员眼中的接口 二.Http协议基本介绍 2.1,常见的接口协议 1.:2. :3. :4.:5.: 6. 2.2,Http协议栈 ...
- jmeter简单的接口性能测试
原文转自:https://blog.csdn.net/lovesoo/article/details/78579547 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件 ...
- JMeter做http接口压力测试
测前准备 用JMeter做接口的压测非常方便,在压测之前我们需要考虑这几个方面: 场景设定 场景分单场景和混合场景.针对一个接口做压力测试就是单场景,针对一个流程做压力测试的时候就是混合场景,需要多个 ...
随机推荐
- Java常用API基础
1:打开帮助文档2:点击显示,找到索引,看到输入框3:你要学习什么内容,你就在框框里面输入什么内容 举例:Random4:看包 java.lang包下的类在使用的时候是不需要导包的5:看类的描述 Ra ...
- struts2 action中字符串转json对象出错 java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
commons-lang包有错,要么是引入错误,要么是没引入. 报不同错误,引入不同包. commons-beanutils-1.8.0.jar不加这个包 java.lang.NoClassDefFo ...
- undefined reference to `vtable for MyColor'
MyColor是新建的类,原因是使用了QObject,但是系统没有反应过来 解决:从工程删除,再添加进去[QtCreator]
- ODAC(V9.5.15) 学习笔记(十)TVirtualTable
名称 类型 说明 Options TVirtualTableOptions 选择项,包括: voPersistentData:在数据集关闭时不处理其相关数据内容 voStored:设计期对数据集的处理 ...
- 【做题】sgu189 Perl-like Substr——dark模拟
注:这篇博客纯属为凑篇数而生. 题面较长,幸运的是,网上给出了相当不错的翻译. 需要支持的操作很简单,即对子串提取.赋值和输出,且对时间复杂度没有要求.换言之此题有成为块链毒瘤题的潜质.难点在于输入的 ...
- oracle 之 统计函数、子查询、操作符
统计函数 COUNT():查询表中的数据记录 AVG():求出平均值 SUM():求和 MAX():求出最大值 MIN():Q求出最小值 子查询 [单行多列] select * from a wh ...
- C# winform程序防止前台卡死
https://blog.csdn.net/Emiedon/article/details/51069193 在实际开发中,如果需要实时的显示后台处理的情况,我们可能要在前台用一些控件去显示 所以我们 ...
- 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T1(找规律)
就是找一下规律 但是奈何昨天晚上脑子抽 推错了一项QwQ 然后重新一想 A掉了QwQ #include <cstdio> #include <algorithm> #inclu ...
- Tutorial: Generate BBox or Rectangle to locate the target obejct
Tutorial: Generate BBox or Rectangle to locate the target obejct clc;close all;clear all; Img=imread ...
- Tutorial: Implementation of Siamese Network on Caffe, Torch, Tensorflow
Tutorial: Implementation of Siamese Network with Caffe, Theano, PyTorch, Tensorflow Updated on 2018 ...