一文弄懂使用Jmeter来进行性能测试
该文章是基于上一次文章的 软件测试漫谈(web测试,自动化测试,Jmeter) 的续篇, 主要是详细讲解 Jmeter 的入门教程。
因为上次的文章只是简单地讲解了 Jmeter 的使用和一些概念,所以很多初学者像按照原来的文章操作 Jmeter 进行测试是比较麻烦的,所有才有了这篇后续,以帮助开发者能快速使用 Jmeter 来进行测试。如果还没看过之前那个文章,建议先看一下,学习一下Jmeter的基本概念,以便熟悉该文章操作的一些概念。该文章基于 Jmeter 版本 5.1.1 和 Windows 10。
测试需求
模拟20个 谷歌浏览器类型 用户 同时 访问 http://www.baidu.com/ 和 https://www.csdn.net/api/articles (该链接是获取 csdn 上的文章,如果正确会返回状态 "status": "true",) 在负载达到30 QPS 时的平均响应时间 和 结果准确度。
操作步骤
- 在 Jmeter 官网上下载 Jmeter 安装包,下载地址: https://apache.osuosl.org//jmeter/binaries/apache-jmeter-5.2.1.zip,需要先安装了 Jdk ,解压 打开文件
apache-jmeter-5.1.1\bin\jmeter.bat
简单设置请求
- 在测试计划中选择新建线程组,重命名线程组为20个模拟用户线程组。

在 Number of Threads 栏 填写 20 ,设置 线程数为 20。在 Loop Count 栏填写 10000,设置 循环请求10000 次。

- 在线程组上右键,选择添加 Http 请求的取样器

重命名该取样器为请求百度地址,在Server Name or IP栏填写www.baidu.com,Prot Number栏填写80端口,如果是https 协议,则填写443端口。

3. 再在线程组上填写 HTTP 请求取样器,并按照如下图来进行设置和重命名为 请求 csdn 文章 。

4. 设置结果查看 ,在线程组右键,添加结果树

重命名为 结果查看,然后点击 上方的 绿色的运行按钮,即可,查看到发送的请求 HTTP 请求。点击结果树中的,任意一个请求可以看到请求的请求头,请求时间,响应头,响应时间等具体信息。

然后,我们可以通过添加 总报表 的监听器 来查看 请求的总体发送情况


一些特定参数设置
- 设置吞吐量/QPS
Jmeter 提供了一个很有用的定时器,叫做 Constant Throughput Timer (常数吞吐量定时器),该定时器可以很方便地控制给定的取样器发送请求的吞吐量。
在线程组上右键新建吞吐量定时器

在 Target throughput( in smples per minute )(每分钟的目标吞吐量): 实际填写的数值为:60 * QPS ,所以这里我们填写1200,然后 Calculate Through based on 选择 All active threads 。

注意:这里计算的吞吐量有时候并不准确,一般进行测试的时候,我们会选择提高一些吞吐量的值以达到实际要求的 QPS
- 设置请求头的参数,设置浏览器类型
对于某些请求,有可能我们需要设置请求的请求头的信息,例如:浏览器类型,鉴权信息 token 等,这时候,我们可以通过添加 http 请求头的配置元件来完成。

添加配置元件之后,我们添加上浏览器的请求头信息.

这时候再点击运行,可以看得到发送的请求中,请求头包含了我们设置的信息:

- 判断返回结果的是否成功
默认 Jmeter 是根据响应码来判断结果是否请求请求的,非200 的判断为不成功,如果我们想根据响应内容判断,则需要添加断言器,来自己判断内容包含哪些字符等,一般我们添加响应信息的断言器,即可。

我们加上如果请求响应信息中包含了字符 {"status":"true 我们则判断该请求成功,否则失败,我们可以这样来设置断言。

如果我们想单单针对某个请求来进行断言,我们可以,将断言放到某个请求里面,这样它就会只判断该请求。这里我们只针对 获取 csdn的文章的请求来断言。
最终的结果
我们完成以上配置之后,点击运行,等待结果运行稳定好,查看 总报告情况 可以得到以下 截图

可以看到,再QPS 约为 5 的情况下,两个请求的总体的情况平均响应时间为 2.371 秒,当前总共发送了 733个请求,错误率 为 3.14%(暂定的时候,后面几个请求会断开,也算入了错误率的)。由于这两个请求的响应时间都比较慢和定义的用户数只为20个,所以QPS 比较难达到20 . 读者后面可以自己提高 线程数 或者替换请求地址来测试看看。
注意事项
- 一般而已如果需要进行很高的QPS 的性能测试,不要使用界面来测试,配置完成后,保存jmx 文件之后,再使用命令行来测试会更好,因为界面运行的话,会占用很大资源,实际发送的请求可能得不到自己想要的QPS。界面运行命令,启动 jmeter 的时候就有提示。
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

参考资源

一文弄懂使用Jmeter来进行性能测试的更多相关文章
- 一文弄懂神经网络中的反向传播法——BackPropagation【转】
本文转载自:https://www.cnblogs.com/charlotte77/p/5629865.html 一文弄懂神经网络中的反向传播法——BackPropagation 最近在看深度学习 ...
- 一文弄懂-Netty核心功能及线程模型
目录 一. Netty是什么? 二. Netty 的使用场景 三. Netty通讯示例 1. Netty的maven依赖 2. 服务端代码 3. 客户端代码 四. Netty线程模型 五. Netty ...
- 一文弄懂-《Scalable IO In Java》
目录 一. <Scalable IO In Java> 是什么? 二. IO架构的演变历程 1. Classic Service Designs 经典服务模型 2. Event-drive ...
- 一文弄懂-BIO,NIO,AIO
目录 一文弄懂-BIO,NIO,AIO 1. BIO: 同步阻塞IO模型 2. NIO: 同步非阻塞IO模型(多路复用) 3.Epoll函数详解 4.Redis线程模型 5. AIO: 异步非阻塞IO ...
- 一文弄懂CGAffineTransform和CTM
一文弄懂CGAffineTransform和CTM 一些概念 坐标空间(系):视图(View)坐标空间与绘制(draw)坐标空间 CTM:全称current transformation matrix ...
- 【TensorFlow】一文弄懂CNN中的padding参数
在深度学习的图像识别领域中,我们经常使用卷积神经网络CNN来对图像进行特征提取,当我们使用TensorFlow搭建自己的CNN时,一般会使用TensorFlow中的卷积函数和池化函数来对图像进行卷积和 ...
- 一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
以下内容都是针对Pytorch 1.0-1.1介绍. 很多文章都是从Dataset等对象自下往上进行介绍,但是对于初学者而言,其实这并不好理解,因为有的时候会不自觉地陷入到一些细枝末节中去,而不能把握 ...
- 一文弄懂js的执行上下文与执行上下文栈
目录 执行上下文与执行上下文栈 变量提升与函数提升 变量提升 函数提升 变量提升与函数提升的优先级 变量提升的一道题目引出var关键字与let关键字各自的特性 执行上下文 全局执行上下文 函数(局部) ...
- 一文弄懂pytorch搭建网络流程+多分类评价指标
讲在前面,本来想通过一个简单的多层感知机实验一下不同的优化方法的,结果写着写着就先研究起评价指标来了,之前也写过一篇:https://www.cnblogs.com/xiximayou/p/13700 ...
随机推荐
- DHCP最佳实践(二)
这是Windows DHCP最佳实践和技巧的最终指南. 如果您有任何最佳做法或技巧,请在下面的评论中发布它们. 在本指南(二)中,我将分享以下DHCP最佳实践和技巧. 从DHCP作用域中排除IP 了解 ...
- linux网关服务器
问题 多台服务器在内网网段,其中只有一台有公网ip可以上外网,需要让所有服务器都能连接外网 解决思路 使用路由转发的方式,将拥有公网ip的服务器搭建为网关服务器,即作为统一的公网出口 所谓转发即当主机 ...
- kubernets与API服务器进行交互
一 为何需要与kubernets集群的API服务器进行交互 1.1 kubernets提供了一种downapi的资源可以将pod的元数据渲染成环境变量或者downward卷的形式挂载到容器的文件系 ...
- kubernets之pod的标签拓展
一 标签的拓展使用 1.1 标签的作用范围不仅仅适用于pod对node以及其他类的大部分资源同样适用 k label node node01 gpu=true k是kubectl的别名形式 同样对于n ...
- Kioptix Level 1
1. 简介 Vulnhub是一个提供各种漏洞环境的靶场平台. 个人学习目的:1,方便学习更多类型漏洞.2,为OSCP做打基础. 下载链接 https://www.vulnhub.com/entry/k ...
- Mysql--由prepared sql statement引发的问题
问题回顾 最近生产环境数据库查询接口异常,抛出异常信息表明预处理sql语句声明已经超过mysql系统设置限制max_prepared_stmt_count:通过网上一些资料,分析大概是程序中数据库查询 ...
- 欢迎来到 ZooKeeper 动物世界
本文作者:HelloGitHub-老荀 Hi,这里是 HelloGitHub 推出的 HelloZooKeeper 系列,免费有趣.入门级的 ZooKeeper 开源教程,面向有编程基础的新手. Zo ...
- Kafka分区分配策略(Partition Assignment Strategy)
众所周知,Apache Kafka是基于生产者和消费者模型作为开源的分布式发布订阅消息系统(当然,目前Kafka定位于an open-source distributed event streamin ...
- kvm实战
1. 安装环境 # yum install qemu-kvm libvirt virt-install virt-manager virt-viewer -y # systemctl start li ...
- 解决Ajax同源政策的方法【JSONP + CORS + 服务器端解决方案】
解决Ajax同源政策的方法 使用JSONP解决同源限制问题 jsonp是json with padding的缩写,它不属于Ajax请求,但它可以模以Ajax请求.\ 步骤 1.将不同源的服务器端请求地 ...