该文章是基于上一次文章的 软件测试漫谈(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 时的平均响应时间 和 结果准确度。

操作步骤

  1. 在 Jmeter 官网上下载 Jmeter 安装包,下载地址: https://apache.osuosl.org//jmeter/binaries/apache-jmeter-5.2.1.zip,需要先安装了 Jdk ,解压 打开文件 apache-jmeter-5.1.1\bin\jmeter.bat

简单设置请求

  1. 在测试计划中选择新建线程组,重命名线程组为20个模拟用户线程组。



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

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



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



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



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



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



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



一些特定参数设置

  1. 设置吞吐量/QPS

    Jmeter 提供了一个很有用的定时器,叫做 Constant Throughput Timer (常数吞吐量定时器),该定时器可以很方便地控制给定的取样器发送请求的吞吐量。

在线程组上右键新建吞吐量定时器

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



注意:这里计算的吞吐量有时候并不准确,一般进行测试的时候,我们会选择提高一些吞吐量的值以达到实际要求的 QPS

  1. 设置请求头的参数,设置浏览器类型

对于某些请求,有可能我们需要设置请求的请求头的信息,例如:浏览器类型,鉴权信息 token 等,这时候,我们可以通过添加 http 请求头的配置元件来完成。



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



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

  1. 判断返回结果的是否成功

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



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



如果我们想单单针对某个请求来进行断言,我们可以,将断言放到某个请求里面,这样它就会只判断该请求。这里我们只针对 获取 csdn的文章的请求来断言。

最终的结果

我们完成以上配置之后,点击运行,等待结果运行稳定好,查看 总报告情况 可以得到以下 截图



可以看到,再QPS 约为 5 的情况下,两个请求的总体的情况平均响应时间为 2.371 秒,当前总共发送了 733个请求,错误率 为 3.14%(暂定的时候,后面几个请求会断开,也算入了错误率的)。由于这两个请求的响应时间都比较慢和定义的用户数只为20个,所以QPS 比较难达到20 . 读者后面可以自己提高 线程数 或者替换请求地址来测试看看。

注意事项

  1. 一般而已如果需要进行很高的QPS 的性能测试,不要使用界面来测试,配置完成后,保存jmx 文件之后,再使用命令行来测试会更好,因为界面运行的话,会占用很大资源,实际发送的请求可能得不到自己想要的QPS。界面运行命令,启动 jmeter 的时候就有提示。jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]

参考资源

  1. Jmeter 中文教程 板书

一文弄懂使用Jmeter来进行性能测试的更多相关文章

  1. 一文弄懂神经网络中的反向传播法——BackPropagation【转】

    本文转载自:https://www.cnblogs.com/charlotte77/p/5629865.html 一文弄懂神经网络中的反向传播法——BackPropagation   最近在看深度学习 ...

  2. 一文弄懂-Netty核心功能及线程模型

    目录 一. Netty是什么? 二. Netty 的使用场景 三. Netty通讯示例 1. Netty的maven依赖 2. 服务端代码 3. 客户端代码 四. Netty线程模型 五. Netty ...

  3. 一文弄懂-《Scalable IO In Java》

    目录 一. <Scalable IO In Java> 是什么? 二. IO架构的演变历程 1. Classic Service Designs 经典服务模型 2. Event-drive ...

  4. 一文弄懂-BIO,NIO,AIO

    目录 一文弄懂-BIO,NIO,AIO 1. BIO: 同步阻塞IO模型 2. NIO: 同步非阻塞IO模型(多路复用) 3.Epoll函数详解 4.Redis线程模型 5. AIO: 异步非阻塞IO ...

  5. 一文弄懂CGAffineTransform和CTM

    一文弄懂CGAffineTransform和CTM 一些概念 坐标空间(系):视图(View)坐标空间与绘制(draw)坐标空间 CTM:全称current transformation matrix ...

  6. 【TensorFlow】一文弄懂CNN中的padding参数

    在深度学习的图像识别领域中,我们经常使用卷积神经网络CNN来对图像进行特征提取,当我们使用TensorFlow搭建自己的CNN时,一般会使用TensorFlow中的卷积函数和池化函数来对图像进行卷积和 ...

  7. 一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系

    以下内容都是针对Pytorch 1.0-1.1介绍. 很多文章都是从Dataset等对象自下往上进行介绍,但是对于初学者而言,其实这并不好理解,因为有的时候会不自觉地陷入到一些细枝末节中去,而不能把握 ...

  8. 一文弄懂js的执行上下文与执行上下文栈

    目录 执行上下文与执行上下文栈 变量提升与函数提升 变量提升 函数提升 变量提升与函数提升的优先级 变量提升的一道题目引出var关键字与let关键字各自的特性 执行上下文 全局执行上下文 函数(局部) ...

  9. 一文弄懂pytorch搭建网络流程+多分类评价指标

    讲在前面,本来想通过一个简单的多层感知机实验一下不同的优化方法的,结果写着写着就先研究起评价指标来了,之前也写过一篇:https://www.cnblogs.com/xiximayou/p/13700 ...

随机推荐

  1. Java基础学习总结笔记

    Java基础 Java常用内存区域 栈内存空间:存储引用堆内存空间的地址 堆内存空间:保存每个对象的具体属性内容 全局数据区:保存static类型的属性 全局代码区:保存所有的方法定义 修饰符 权限修 ...

  2. 一道有趣的golang排错题

    很久没写博客了,不得不说go语言爱好者周刊是个宝贝,本来想随便看看打发时间的,没想到一下子给了我久违的灵感. go语言爱好者周刊78期出了一道非常有意思的题目. 我们来看看题目.先给出如下的代码: p ...

  3. linux系统Vsftpd搭建FTP

    安装vsftp 使用yum命令安装vsftp #yum install vsftpd -y 添加ftp帐号和目录 先检查下nologin的位置,通常在/usr/sbin/nologin下   (*no ...

  4. 摆脱 996——GitHub 热点速览 v.21.03

    作者:HelloGitHub-小鱼干 Twitter 有位程序员总结了本周的 GitHub 中文程序员的看点:国内程序员日常--考公务员.996.抢茅台.刷算法.整健康码.在本期热点速览里,小鱼干收录 ...

  5. 【ORA】ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode

    ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode 这个问题是rman备份的时候,发现有问题 原因: 数据库没有开启归档 ...

  6. Linux系统设置 SSH 通过密钥登录

    我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器.但是,一般的密码方式登录,容易有密码被暴力破解的问题.所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者 ...

  7. 多线程c++11编程题目

    /*题目:子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次. 如此循环50次,试写出代码.子线程与主线程必有一个满足条件(flag ...

  8. [每日电路图] 12、带自动烧写能力的 ESP8266 开发板制作

    目录 前言 1.芯片先关信息 2.原理图介绍 2.1 供电电路 2.2 串口电路 2.3 自动烧写电路 3.PCB 效果展示 附录 前言 ESP8266 是乐鑫公司面向物联网应用的高性价比.高度集成的 ...

  9. 收集整理Idea常用配置及插件

    收集整理Idea常用配置及插件 一.IDEA配置 1.1 代码智能提示,忽略大小写 二.IDEA插件 2.1 Background Image Plus 2.2 Codota-代码智能提示 2.3 S ...

  10. Java8 ,LocalDate,LocalDateTime处理日期和时间工具类,

    Java8 ,LocalDate,LocalDateTime处理日期和时间工具类 1.获取今天的日期 2.在Java 8 中获取年.月.日信息 3.在Java 8 中处理特定日期 4.在Java 8 ...