记录一次Jmeter性能测试
一.引言
之前有总结过如何写Java请求测试用例类,写完测试脚本调通之后,信心满满地以为我准备好可以开始性能测试了。结果在评审测试计划的时候,当即被项目组狠狠的扇了一耳光,各种不确定的点:性能指标不明确;测试场景不合理;测试计划没有交代清楚时间、资源和责任人等等。会后被召唤到老大办公室一通点拨,终于理清了思路,从头开始吧。那么,性能测试一般都有哪几个步骤呢,这里主要根据自己的经验进行的梳理:
1.需求调研和分析:明确测试对象、测试范围、测试目标
2.测试计划:测试场景设计,测试时间计划,测试产出及通过标准
3.测试准备:测试环境搭建,测试脚本及数据准备
4.测试执行:测试结果分析(日报的形式发送项目组),性能调优
5.测试报告:完整的测试报告
二.正文
1.需求分析
a. 如果需求明确给出性能指标,并经项目组评估是合理的,则按需求指标进行测试,测试结果达到预期指标,则测试通过;
b. 如果没有明确的性能指标,则根据历史数据或类似系统,由项目组评估出性能指标;
c. 以上2点都不满足,则可以进行峰值测试或稳定性测试,测出系统的性能瓶颈,评估是否达到预期。
2.测试计划
测试计划中除了例行的项目概述外,重点要明确测试环境、测试目标(测试通过条件)、测试场景、测试时间人员等。
a.测试环境:生产环境、准生产环境 or 测试环境
b.测试目标:这里要明确2点,
一是测试分几个阶段及各个阶段的优先级,如:
1 )应用的性能满足性能需求指标即可 优先级高
2 )应用的最高负载指标(TPS趋于稳定)优先级中
3 )应用的最大压力指标(宕机并发-1) 优先级低
二是具体的性能指标,如:
100个并发情况下满足以下性能指标:
90%的响应时间:4秒
CPU最高平均值:小于80%
堆内存GC后平均剩余70%
GC间隔时间:15秒以上
c.测试场景设计:包括每秒钟新增并发数,并发持续时间,还可以结合业务场景对请求进行参数化等。
d.测试人员和时间:这个就是列个一般的schedule就行
3.测试准备
a. 测试环境的搭建,如果是已投产的生产或准生产环境,则测试版本的应用包部署完成即可。
b. 测试数据准备,包括测试脚本的编写和调试,测试请求参数的准备等。
4.测试执行
a.如何监控服务器性能(参考:http://www.cnblogs.com/yangxia-test/p/4019250.html)
这里采用 JmeterPlugins插件:JMeterPlugins-Standard-1.2.0与ServerAgent-2.2.1
将JMeterPlugins-Standard-1.2.0\lib\ext\JMeterPlugins-Standard.jar包复制到JMeter的lib目录下面的ext目录下面,重新启动Jmeter
可以在测试计划中添加该插件提供的线程组了,界面和jmeter自带的线程组有所不同,可以方便地设置并发的场景:总并发数、线程加入,线程退出机制等。


另外,可以通过该插件提供的各种监视器来监控服务器的cup、networkIO、tps、聚合报告等数据:

但是,要监控服务器的性能,就要在服务器端运行下ServerAgent-2.2.1这个东西了,将它拷贝到服务器磁盘的任意位置,运行对应操作系统的脚本来启动它即可。
当然,如果是运行在JVM上的应用,也可以通过Jdk自带的jconsole或jvisualvm(windows系统)来监控服务器端JVM的性能。
b.采用分布式测试
在大数据量和高并发的情况下,客户端压力机自身的性能往往会影响测试结果。此前,在测试的过程中,就出现客户端压力机JVM内存溢出和自身networkIO所限,TPS一直上不去的情况。采用多台客户机进行分布式并发,可以更准确地测出系统的性能情况(当然,是否采用分布式还要看实际的业务需求和应用场景)。
将测试客户端依赖的jar包拷贝到所有客户机Jmeter安装路径的lib下,并启动jmeter-server(Linux系统)或jmeter-server.bat(windows系统)。

PS:这里在测试过程中遇到2个小问题:
1. 所有客户机要保证jdk版本一致,否则测试Java请求的时候会报错
2. Linux下的jmeter-server脚本无法启动(由于时间关系,没有去细究这个问题,待进一步验证)
客户机都启动好之后,在控制机中修改配置文件jmeter.properties中的remote_hosts,添加所有压力机的IP,默认端口是1099,也可以自己指定。

所有的准备工作都做好之后,就可以在控制机上打开Jmeter编写好测试脚本,进行测试了,通过远程启动按钮来启动全部客户机:

c.测试结果分析
同一个场景,可以通过并发数的增加来获得一组响应数据:
CPU随并发数的变化
JVM内存随并发数的变化
TPS随并发数的变化
通过分析测试结果,来判断应用的性能是否达到预期指标。如果测试未达到预期指标,则需要分析测试过程中的各个环节对测试结果的影响,排除客户机性能,网络IO等外部因素后,最终确定代码优化方案。优化代码后,重新测试。
5.测试报告
测试报告主要包括:项目概述、测试环境、测试资源及时间、测试策略、测试场景、测试数据分析、测试结论及风险反馈等。
记录一次Jmeter性能测试的更多相关文章
- 01 jmeter性能测试系列_Jmeter的体系结构
深圳文鹏教育jmeter 性能测试讲义 概念 元件:元件代表jmeter工具菜单中的一个子菜单,比如HTTP请求.事务控制器.响应断言等: 组件:一组元件的集合(一个或者多个),比如逻辑控制器中有事务 ...
- Jmeter性能测试实践之java请求
前言 Apache Jmeter是开源.易用的性能测试工具,之前工作中用过几次对http请求进行性能测试,对jmeter的基本操作有一些了解.最近接到开发的对java请求进行性能测试的需求,所以需要 ...
- 性能测试学习之路 (一)认识jmeter(性能测试流程 && 性能测试通过标准 &&jmeter体系结构)
性能测试是通过自动化的测试工具模拟多种正常.峰值以及异常负载条件来对系统的各项性能指标进行测试. 1 性能测试技能树 性能测试是一项综合性的工作,致力于暴露性能问题,评估系统性能趋势.性能测试工作实质 ...
- 转 5 jmeter性能测试小小的实战
5 jmeter性能测试小小的实战 项目描述 被测网址:www.sogou.com指标:相应时间以及错误率场景:线程数 20.Ramp-Up Period(in seconds) 10.循环次数 ...
- 基于webdriver的jmeter性能测试-通过jmeter实现jar录制脚本的性能测试
续接--基于webdriver的jmeter性能测试-Eclipse+Selenium+JUnit生成jar包 在进行测试前先将用于支持selenium录制脚本运行所需的类包jar文件放到jmeter ...
- Jmeter性能测试入门(链接收藏)
Jmeter性能测试入门: http://www.cnblogs.com/TankXiao/p/4045439.html
- Jmeter性能测试入门(转)
出处:http://www.cnblogs.com/by-dream/p/5611555.html Jmeter性能测试步骤 1. 添加线程组之后,先设置这两项: 2. 添加一个http请求 被测的u ...
- Jmeter学习一:Jmeter性能测试环境搭建(Windows下)
最近刚开始接触Jmeter性能测试,现总结环境搭建如下: 一.windows安装JDK步骤与环境变量配置: 1.先将下载的JDK安装到其默认目录:C:\Program Files\Java\jdk1. ...
- Jmeter性能测试
Jmeter性能测试 入门 Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率. 熟练使用Jmeter后, 能用Jmeter搞定的 ...
随机推荐
- HttpWebRequest
同步请求===================================================================================== byte[] da ...
- C#学习笔记---基础入门(一)
C#中的变量: 一个变量就是存储区(内存)中的一个存储单元. 变量声明赋值:int money =1000;/int money;money=1000; 输出:console.writeLine(mo ...
- unity手游之聊天SDK集成与使用二
集成思路 如果是自己的小游戏的话,可以把好友等信息直接保存在亲加服务器上,通过调用api来操作. 我们游戏只使用sdk的通信功能,好友等信息保存在自己的服务器上. 用户在登陆游戏的时候,通过算法用用户 ...
- mv 的使用
Linux下目录的合并以及文件的覆盖案例 功能说明:将源文件重命名为目标文件,或将源文件移动至指定目录. 用法:mv [选项]... [-T] 源文件 目标文件 或:mv [选项]... 源文件... ...
- 团体程序设计天梯赛-练习集L2-002. 链表去重
L2-002. 链表去重 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个带整数键值的单链表L,本题要求你编写程序,删除 ...
- 快速配置Ehcache
1. 编写ehcache.xml文件,将该文件放置于classpath路径下.代码如下: <?xml version="1.0" encoding="UTF-8&q ...
- uva 10562
二叉树的先序遍历 这个还是比较简单的 ~~ /************************************************************************* &g ...
- 大象的崛起!Hadoop七年发展风雨录
http://www.open-open.com/news/view/a22597 在互联网这个领域一直有这样的说法:“如果老二无法战胜老大,那么就把老大赖以生存的东西开源吧”.当年Yahoo!与Go ...
- 阿里云PHP Redis代码示例
测试代码示例 <?php /* 这里替换为连接的实例host和port */ $host = "localhost"; $port = 6379; /* 这里替换为实例id和 ...
- Google Play市场考察报告
考察了Google Play日本市场的10款应用,考察的重点在于每个App有什么亮点,盈利模式在哪里.本文并不是App的功能介绍. (1)恋爱文集[文库类应用] 该应用收录了一些恋爱文章,其主要受众是 ...