如何使用jmeter做一个功能的性能测试
一、为什么又再次写类似的文章?
在博客园和公号写文章,已经快两年了,所以自然在公号和博客园都能联系到我的。
也就是几天前,有个人加我微信,对于总有人加我好友,我已经觉得不奇怪了,为什么呢?
加我好友的一般为几类:
- 微商,你一看朋友圈,各种商品广告,哇,好头疼
- “大佬,有学习视频资料吗?”,有,200,需要吗?
- “进群”,我知道你谁呀,干啥的,上来就进群呀。
但这个同学,挺有意思的,是一个关注我公号很久的一个粉丝,总会看我的文章。和我说了下他的情况,也是个自学党,问我有老师讲jmeter课程吗?想系统学一下。

毕竟我不是搞培训,虽然工作多年,不敢称为人师,怕误人子弟呀,只能所作工作稍微久一些吧,作为一个自学党,我自知自学是个多么困难的事,所以想了想就写了这篇文章。
那么就我限有的知识,来诠释怎么做一个功能的性能测试。
二、性能测试的分类
做性能测试,有些名词自然也是需要了解懂得的,后面如果我提到有些名词,不是很熟悉,请自行度娘,对于概念性的东西,我觉得百度说的比我好多了。
简单来说分为以下几类:
1、压力测试
2、负载测试
目的:找出能承受的最大负载量。
3、稳定性测试
目的:验证系统是否有内存泄露等问题。
4、容量测试
5、配置测试
目的:为系统调优提供参考
三、性能测试流程
- 分析性能测试需求
- 设计性能测试方案
- 开发性能测试脚本
- 搭建性能测试环境-
- 执行测试-
- 分析结果后多轮测试进行验证优化
- 编写性能测试报告
- 编写性能测试总结报告
1、性能需求分析
这里以我们常用的禅道中添加用例功能为例,进行分享。
调研期望指标(即性能需求)
| 场景名称 | 响应时间 | cpu使用率 | 内存使用率 | 磁盘使用率 | 事务成功率 |
| 登录禅道 | 小于5秒 | 小于85% | 小于90% | 小于90% | 100% |
| 添加用例 |
- 参考前辈的历史数据
- 参考同行竞品
2、性能测试方案设计
2.1、测试目的、目标与范围
目的:找出系统潜在的性能缺陷
目标:从安全,可靠,稳定的角度出发,找出性能缺陷,并且找出系统最佳承受并发用户数,以及并发用户数下长时间运行的负载情况,如要并发100用户,如何对系统进行调优
测试功能范围:本次测试计划主要收集分析禅道添加用例并发请求相关数据,做出分析和调优

2.2、测试指标范围
测试范围:禅道中添加用例并发时,服务器各项性能指标的性能测试
Jmeter指标:(由于Apache旗下性能测试工具Jmeter收集的性能指标偏少,下面的数据选取代表性指标)
1.Average/ms:服务器处理事物平均响应时间(表示客户端请求到服务器处理信息且反馈客户端的时间)
2.Throughput/s:服务器每秒处理请求数(表示服务器每秒处理客户端请求数(单位:个/秒))
3.KB/s:服务器每秒接受到的数据流量(表示服务器每秒接受到客户端请求的数据量KB表示)
硬件指标:
1.%Processor time : CUP使用率(平均低于75%,低于50%更佳)
2.System:Processor Queue Length :CUP队列中的线程数(每个处理器平均低于2)
3.Memory:Pages/sec :内存错误页数(平均低于20,低于15更佳)
4.Physical Disk-%Disk Time: 磁盘使用率(平均低于50%)
5.SQL Server:Buffer Manager-Buffer Cache Hit Ratio: (在缓冲区告诉缓存中找到而不需要从磁盘中读取的页的百分比,正常情况次比率超过90%,理想状态接近99%)
- 业务流程/路径覆盖率。
- 业务数据的完整、正确性。
- 其他诸如系统易用性、可管理性等属于专项测试的内容。
2.3、测试资源
条件有限,我就一个测试环境,虚拟机套出来的,所有服务都部署在一块了,正常是分开部署的。

2.4、测试准备
测试环境安装:我这里部署的是一个禅道系统,如何搭建百度之
2.5、测试工具和测试策略
测试工具:Apache-Jmeter2.3.2
测试策略:根据公司内部实际情况,以及业务分布设置数据库访问量即并发用户数
2.6、测试数据收集测试脚本、数据及其预验证
| 场景 |
添加测试用例
|
||||
| 目的 |
测试多人同时添加测试用例的性能情况
|
||||
| 虚拟用户和资源 | |||||
| 并发用户 |
CPU使用率
|
内存使用率 | 硬盘使用率 |
网络使用
率
|
事务平均响应时间 |
| 5人 | |||||
| 10人 | |||||
| 20人 | |||||
2.8、基准测试
目的:验证测试脚本,初步检查交易本身是否存在性能缺陷。
测试方法:
采用 5个用户负载执行,取交易的平均响应时间作为衡量指标,并计算吞吐量
2.9、负载测试
目的:获得交易本身的性能表现,诊断交易是否存在性能缺陷。
2.10、稳定性测试
压测系统 7x24 小时
2.11、测试输出成果物
- 《性能测试方案》
- 《性能测试记录及问题跟踪表》
- 《性能测试报告》
2.12、测试进度计划
2.13、实施风险及规避措施

3、脚本开发制作
脚本开发制作:请参考文章《JMeter压力测试实例操作》
4、服务器监控
服务器性能监控:请参考文章《性能测试篇 :Jmeter监控服务器性能》
5、测试报告编写
这里我只介绍可能会涉及的一些点、大家根据自己情况做增减,性能测试报告一般包含以下几项:
测试目标、参考文档、测试环境说明、硬件配置、软件配置、测试策略、人力资源、测试方案、测试场景、测试用例、测试结果及其分析、测试结论及建议等等。至于每项的详细内容,这里就逐项说明,请大家根据公司情况做设计编写。
四、关于性能测试的一些看法
如何使用jmeter做一个功能的性能测试的更多相关文章
- Jmeter初步使用二--使用jmeter做一个简单的性能测试
经过上一次的初步使用,我们懂得了Jmeter的安装与初步使用的方法.现在,我们使用Jmeter做一个简单的性能测试.该次测试,提交的参数不做参数化处理,Jmeter各元件使用将在介绍在下一博文开始介绍 ...
- 利用jmeter做一个简单的性能测试并进行参数化设置
1.新增一个线程组,并在下面添加基本原件,包括:监听器.http请求默认值和一个事务控制器 在http请求默认值中填写 ip 地址和端口号,协议类型默认为http 2.添加代理服务器,以便之后进行录制 ...
- jmeter完成一个简单的性能测试(jp@gc - PerfMon Metrics Collector的运用)
场景:公司项目解耦,在项目前期对新的架构进行简单的性能测试 工具:jmeter 1.大致结构如下: 1800秒(半个小时)内持续产生20000的线程 创建了聚合报告,主要是查看服务器响应结果以及相应时 ...
- Jmeter+maven+Jenkins构建云性能测试平台(mark 推荐)
转自:http://www.cnblogs.com/victorcai0922/archive/2012/06/20/2555502.html Jmeter+maven+Jenkins构建云性能测试平 ...
- 一个使用Jmeter做接口性能测试的实战案例
1 安装并配置Jmeter Jmeter的安装不在这里阐述,安装步骤非常简单. 直接进入主题 1.1 数据库连接配置 由于测试过程需要调用数据库获取响应部署数据,因此需要先建立与数据库的连接. 如果不 ...
- 使用Jmeter做性能测试
上周刚刚做完项目的性能测试.今天整理和总结一下,随便分享给大家. 首页呢,测试前,我们是有明确的性能指标的,而且测试环境和数据都已准备好,业务分析.场景分析大家根据自己的项目系统进行分析设计,我们选用 ...
- 用JS做一个简单的电商产品放大镜功能
使用js制作一个简单的产品放大图 购物网站的产品页经常会放有一个产品展示图区.该图区有一个功能就是产品图的放大功能,移动左侧的焦点区域,可以放大细节部分观看,详情如下图.实现该功能的方法也非常简单. ...
- JMeter基础之一 一个简单的性能测试
JMeter基础之一 一个简单的性能测试 上一节中,我们了解了jmeter的一此主要元件,那么这些元件如何使用到性能测试中呢.这一节创建一个简单的测试计划来使用这些元件.该计划对应的测试需求. 1)测 ...
- 4-13 Webpacker-React.js; 用React做一个下拉表格的功能: <详解>
Rails5.1增加了Webpacker: Webpacker essentially is the decisions made by the Rails team and bundled up i ...
随机推荐
- 洛谷$P1935$ [国家集训队]圈地计划 网络流
正解:最小割 解题报告: 传送门 就文理分科模型嘛$QwQ$?所以就,跑个最小割呗,然后就做完辣?仔细想想细节发现并麻油那么简单嗷$QwQ$ 先考虑如果没有这个$k\cdot C_{i,j}$的贡献就 ...
- 通用高效的数据修复方法:Row level repair
导读:随着大数据的进一步发展,NoSQL 数据库系统迅速发展并得到了广泛的应用.其中,Apache Cassandra 是最广泛使用的数据库之一.对于 Cassandra 的优化是大家研究的热点,而 ...
- 【原创】够强!一行代码就修复了我提的Dubbo的Bug。
这是 why 技术的第 28 篇原创文章 之前在<Dubbo 一致性哈希负载均衡的源码和 Bug,了解一下?>中写到了我发现了一个 Dubbo 一致性哈希负载均衡算法的 Bug. 对于解决 ...
- 对 Redux 一头雾水?看完这篇就懂了
首先,学习 Redux 可能会很困难 当你终于学会了如何使用 React,也有了自己去构建一些应用的信心,那会是一种非常棒的感觉.你学会了管理状态,一切看起来井井有条.但是,很有可能这就到了你该学习 ...
- V3微信支付开发笔录
真是坑爹啊,微信支付到处都是坑,一不小心就栽里面了, 文档也不怎么全,经过一周的奋斗终于把微信支付功能搞定,在此写下自己当时走入的误区和一些需要注意的地方,希望后边开发的朋友们可以少走弯路,少被微信坑 ...
- 小小知识点(三十一)MU-MIMO和SU-MIMO分别表示什么?
MU-MIMO是“Multi-User Multiple-InputMultiple-Output”的缩写,直译为“多用户多入多出技术”. SU-MIMO是“Single-User Multiple- ...
- 微信公众号 唤醒手机导航APP 一看就懂 复制即用
公司自研发框架,基本上没啥看不懂的 基本都是直接复制用就好了!希望能帮助到需要的朋友! 新建俩个同级文件用来保存 jsapi_ticket 和 access_token的文件 命名:jsapi_tic ...
- SSM三大框架整合思路
1.Dao层: Mybatis的配置文件:SqlMapConfig.xml 不需要配置任何内容,需要有文件头.文件必须存在. applicationContext-dao.xml: mybatis整合 ...
- GeneXus 16 如何实现自动化测试和发布
CI/CD(持续集成/持续发布)是一种软件开发策略,以使公司能够尽可能快速.高效地给客户发布新功能.为了能够实现CI/CD,就需要通过PipeLine对整个软件过程进行一系列的节点管理,必须将每个阶段 ...
- python封装简介
1.效果图: 对比一: 对比二: 2.学习来源代码: # 封装是面向对象的三大特性之一 # 封装指的是隐藏对象中一些不希望被外部所访问到的属性或方法 # 如何隐藏一个对象中的属性? # - 将对象的属 ...