使用Jmeter做性能测试
上周刚刚做完项目的性能测试。今天整理和总结一下,随便分享给大家。
首页呢,测试前,我们是有明确的性能指标的,而且测试环境和数据都已准备好,业务分析、场景分析大家根据自己的项目系统进行分析设计,我们选用的都是实际用户操作频繁、重要级别高的。还有一个好说明下,今天分享的是Jmeter做APP端的单接口性能测试。下面开始分享吧。
先贴一张我的脚本:
第一步,环境是运维搭建好,那我们只需要准备脚本和脚本数据。从上面的图中可以看出,我们需要准备:
1、需要开发帮忙去掉系统中的手机验证码、token的校验,因为我们是单接口,因此是绕过登录的,token校验呢去掉,用户ID的校验还是要保留的。
2、脚本数据:我用的是CSV,每个接口的请求数据,比如关键字查询,我们的业务是用户登录成功后,在首页可以进行关键字查询。那么我在我的CSV文件中准备了200个账号的用户ID和对应的关键字,根据你的性能指标去准备需要用多少个账号,当然,你也可以就用一个账号,不过还是没有前者实际。
3、编写接口脚本,除了去掉token校验和验证码校验,我们还需要自己在脚本中处理参数和参数的加密以及时间戳等,我用的是JSR223 中的JS,引用了一个外部js文件做加密处理。当然如果开发愿意,也可以协商去掉密码。脚本编写好了,要在测试环境进行测试,看是否能跑通。
4、添加一个定时器,用来确保按照需求进行正确的并发。
5、添加Jmeter插件,监控压力机与服务器的硬件性能情况。比如CPU、内存、网络、磁盘读写。
以上步骤全部搞定,那么性能测试工作就差不多准备完了。
第二步,开始执行。这个步骤很关键也很深。很多人对Jmeter做性能测试,认为只是简单的设置线程数就OK了。其实不然。
1、保证我们的脚本执行正确、发送正确的参数,得到正确的响应。那我是添加了结果响应断言,来确保结果的正确性,还有一些注意的,比如:
2、确保正确并发。单纯的设置线程数量和Ramp-up是达不到真正的并发的,可以通过结果观察树,查看每个请求的开始时间是否一样。这里呢,我是通过定时器来做的,如下:
线程数设置10,ramp-up设置5,循环1次。定时器中的组合设置10,超时设置10秒。意思就是:
5秒内启动10个线程,等全部启动完,也就是说10个线程准备好了,再一起发送,这样的操作执行1次。
线程数,不多做解释了,大家都明白。
Ramp-up:这个呢,字面意思也是很好理解的,就是在设置的时间内启动设置的线程数,启动完一个发送一个。那么会出现些什么情况呢?
a、设置的时间过短,不能在设置的时间内启动全部线程 (这也会为什么定时器的超时哪里要设置比Ramp-up的值大或等于的原因)
b、压力机不同,在相同的时间内,能启动的线程数量不同。这个就要看配置了。
一般我是先设置3秒或者5秒来测试自己的压力机合适设置多少。
定时器超时时间:如果Ramp-up设置的时间内,没有全部启动线程,就会处于等待状态,等待的时间就是这个超时时间。
所以,在做并发测试的时候,一定要注意,每个请求的开始时间是否一致
3、分布式,大家都知道,单台压力机可能不够,那么需要用到多台压力机,这就是Jmeter分布式的运用。具体用法百度很多,需要注意以下几点:
a、每个压力机上都需要放脚本,而且路径一致
b、使用了CSV文件的,也需要保存每个压力机上的CSV文件一致,脚本修改都要同步更新,保持一致
c、每个压力机上的本地时间要保存一致,最好是同步Intelnet上的时间。不然并发也达不到真正的并发。
4、注意压力机自身的压力瓶颈。测试的过程中,要时刻观察压力机的情况。有时候线程数较多,一起并发,会瞬间对压力机产生很多压力。
5、观察服务器的性能变化。
6、建议在执行的过程中,要逐步加压,找到RT与TPS的交叉点(即TPS由上升到下降的那个点)
7、最后还要建议,测试的时候,最好选用压力机的配置不要太差,还有网络。
好了,测试完成,大家要开始写报告了,把你的测试过程、测试结果、以及你的分析写出来吧。
其实这也是我第二次真正意义上的做性能测试,自己也是一边学习一边摸索,其实我觉得性能测试是分成两个部分的,一个部分是测试执行,一个部分是问题分析,今天给大家分享的是测试执行,至于问题分析,可是很深的一门学问,需要慢慢累积,不过大家只要先保证,测试方案得到评审,测试也是正确的执行,这个过程中,其实你就会发现很多问题和学习到很多东西,最后把这些报告,然后协助开发一起分析问题,弄懂问题的原因,我想我们就会越来越能干了。欢迎大家来讨论。
使用Jmeter做性能测试的更多相关文章
- 【转】使用JMeter做性能测试的心得
企业应用开发过程中,性能测试是很重要的一个环节,在这个环节中Apache的JMeter以它开源.100%纯Java.操作方便等优点发挥着很大的作用. 经过一段时间的使用,多少有些心得和技巧,拿出来共享 ...
- Linux下使用Jmeter做性能测试
一.安装Jmeter 1.上传Jmeter压缩包到Linux服务器,如:/opt目录下 2.解压缩 unzip apache-jmeter-3.1.zip 3.配置环境变量:vi /etc/profi ...
- 用Jmeter做性能测试,之后报表展示
https://octoperf.com/blog/2017/10/19/how-to-analyze-jmeter-results/ 看到性能测试平台的开发,我在想需要什么功能,报表需要什么样子的 ...
- Jmeter工具做性能测试 常见的错误汇总
在Win机器上用Jmeter做性能测试,汇总下我自身遇到的错误和解决方案 java.net.BindException: Address already in use: JVM_Bind 原因分析:压 ...
- jmeter如何玩之badboy + jmeter并发性能测试
今天下班时公司安排了一个同事来对项目做集群性能测试,怀着对性能测试的好奇心,下班后没有着急离开,而是等待 那位同事的到来,然后在旁边学习了下如何使用Badboy和jmeter做性能测试. 1. 软件介 ...
- Jmeter初步使用二--使用jmeter做一个简单的性能测试
经过上一次的初步使用,我们懂得了Jmeter的安装与初步使用的方法.现在,我们使用Jmeter做一个简单的性能测试.该次测试,提交的参数不做参数化处理,Jmeter各元件使用将在介绍在下一博文开始介绍 ...
- 如何使用jmeter做一个功能的性能测试
一.为什么又再次写类似的文章? 在博客园和公号写文章,已经快两年了,所以自然在公号和博客园都能联系到我的. 也就是几天前,有个人加我微信,对于总有人加我好友,我已经觉得不奇怪了,为什么呢? 加我好友的 ...
- 一个使用Jmeter做接口性能测试的实战案例
1 安装并配置Jmeter Jmeter的安装不在这里阐述,安装步骤非常简单. 直接进入主题 1.1 数据库连接配置 由于测试过程需要调用数据库获取响应部署数据,因此需要先建立与数据库的连接. 如果不 ...
- 【Jmeter】Linux(Mac)上使用最新版本Jmeter(5.0)做性能测试
本文我们一起来学习在Linux(Mac)上利用Jmeter进行性能测试并生成测试报告的方法. 环境准备 JDK 访问这个地址 [JDK11.01],根据实际环境下载一个JDK. Jmeter Jmet ...
随机推荐
- nginx学习书籍推荐
最好的书是源码 深入理解NGINX" 陶辉著 <实战Nginx...>张宴 <深入理解Nginx:模块开发与架构解析> nginx开发从入门到精通 Nginx HTT ...
- Elasticsearch-2.3 (OpenLogic CentOS 7.2)
平台: CentOS 类型: 虚拟机镜像 软件包: elasticsearch-2.3 application server basic software big data elasticsearch ...
- git剖析
GIT(分布式版本控制系统) Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 1.特点 分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(g ...
- Codeforces 744A. Hongcow Builds A Nation
A. Hongcow Builds A Nation 题意: 现在有 n 个点 ,m 条边组成了一个无向图 , 其中有 k 个特殊点, 这些特殊点之间不能连通 ,问可以再多加几条边? 因为$x^2+y ...
- 【BZOJ1040】[ZJOI2008] 骑士(基环外向树DP)
点此看题面 大致题意: 给你一片基环外向树森林,如果选定了一个点,就不能选择与其相邻的节点.求选中点的最大权值和. 树形\(DP\) 此题应该是 树形\(DP\) 的一个升级版:基环外向树\(DP\) ...
- 使ListView控件中的选择项高亮显示
实现效果: 知识运用: ListView控件的SelectedItems属性 //获取在ListView控件中被选中数据项的集合 public ListView.SelectedListViewIte ...
- vs code vim
很多初学者启动vim后,不知道怎么输入字符:按了半天字母,结果屏幕还是空的. vim和记事本或WORD不一样,不是一打开后就可以输入文字,此时它处于正常模式. vim一共有4个模式: 正常模式 (No ...
- 题解 CF20A 【BerOS file system】
对于此题,我的心近乎崩溃 这道题,注意点没有什么,相信大佬们是可以自己写出来的 我是蒟蒻,那我是怎么写出来的啊 好了,废话少说,开始进入正题 这道题,首先我想到的是字符串的 erase 函数,一边运行 ...
- js处理的8种跨域方法
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...
- 【思维题 经典模型】cf632F. Magic Matrix
非常妙的经典模型转化啊…… You're given a matrix A of size n × n. Let's call the matrix with nonnegative elements ...