jmeter 接口压测使用说明

一,Jmeter 工具的基本使用  

1.  环境部署

1.1 http://jmeter.apache.org/下载的JMeter解压到自己熟悉的目录下

maggie提示:为了全组方便统一版本交流,推荐使用jmeter3.1版本,压缩包已经上传到SVNhttps://192.168.1.14/svn/test-files/性能测试工具/apache-jmeter-3.1.rar

 

1.2 安装JDK,配置环境变量

JDK环境变量配置

2. 面板功能介绍

 

3.快速开始(基本用法与简单的数据分析教程

Maggie提示

这里只是基本,因为她也不是很会用,欢迎后续补充

 
3.1.建立测试计划(以汉堡王为例)

1,在当前测试计划下添加线程组

 

 

 

测试计划:

  •  脚本中测试计划只能有一个
  • 一个完整的测试计划包含了一个或多个【线程组、逻辑控制器、采样器、监听器、定时器、断言和配置元素】

线程组:

  •  一个测试计划下可以有多个线程组
  • l在一个测试计划中的所有元件都必须在某个线程组下
  • 线程组决定 Jmeter 执行测试计划的线程数

 

 

 

  • 在取样器错误后要执行的动作

默认继续

建议:继续

假设一个HTTP Sampler报错了,后面还有其他请求,最好肯定是继续执行下去啦

  • 线程属性设置的线程属性值是【预期压力值】而聚合报告是【压力测试的实际结果】)

线程数

  • Jmeter进程下启动的线程,用来模拟真实用户数1线程数 = 1用户数
  • windows下,2g的 java内存,1m 的栈空间,最大启动线程数=1000
  • Linux下,2g的 java内存,1m 的栈空间,最大启动线程数=2000
  • Jmeter中,先启动线程,再运行线程,后释放线程【启动线程并运行,释放线程】
  • 线程数建议不超过1000

  Ramp-up Period(in seconds)

  • 预期线程组的所有线程从启动-运行-释放的总时间
  • ramp up=0时,表示瞬时加压,启动线程的时间无限趋近于0
  • 特别注意:在负载测试的时候,尽量ramp up设置大一些,让性能曲线平缓,容易找到瓶颈

  循环次数

  • 每个线程循环执行的次数,默认一次【便于理解:线程的迭代次数、重复发起请求的次数】
  • 如果设置为永远,那么 jmeter 将以最大的可能去发送请求,以此测试出最大并发数

Delay Thread creation until needed

延迟创建线程,直到线程被需要、采样器开始执行时才会被创建,避免资源浪费

调度器

 

调度器的作用:控制每个线程组运行的持续时间以及它在多少秒后再启动

Duration (seconds) :持续时间;线程组运行的持续时间

Startup Delay (seconds):启动延迟;测试计划开始后,线程组的线程将在多少秒后再启动运行

调度器和循环次数的关系

  • 循环次数有固定值且 ≠ -1,持续时间不会生效,以循环次数为准
  • 循环次数设置为永远或 -1,持续时间才会生效

官方文档说明

When selected, JMeter will allocate threads according to the ramp up times. Otherwise all threads are allocated to the JVM process the moment the test is started, regardless of ramp up time.

选中后,JMeter将根据 Ramp-up 时间来分配线程。 否则,无论 Ramp-up 时间如何设定,所有线程都将在测试开始时分配给JVM进程。

举个栗子

 

上图:10s 内启动并运行 10 个线程每秒启动一个线程,然后运行两次总共发送 20 个请求(10*2)

备注:如果ramp-up 时间内,所有线程不能启动运行完的话,时间则会顺延下去

Maggie的建议

  一些关于RAMP-UP的注意事项

  Ramp-up需要设置足够长的时间来避免在测试刚开始时工作量过大

  •  如需要大量线程的话,不建议设置成0,0 属于瞬时加压【过小的 ramp-up period 】
  • 如果设置 0,Jmeter 将在测试开始时就启动全部线程并立即发送请求,这样很容易让服务器达到饱满状态,且瞬间会增加很大的负载量,容易让服务器超载,这样是不合理的;
  • 不合理的原因并不是因为平均压力值过高,而是因为所有线程都在初始状态时一起并发访问,从而引起不正常的初始访问峰值,可以通过 Jmeter 的聚合报告看到这种情况

  Ramp-up还必须足够短,保证最后一个线程在第一个线程完成之前开始运行

  • 如果 Ramp-up 过大,则会降低访问峰值的负载,即没有达到预期的压力峰值,无法获取准确的服务器最大负载情况【过大的 ramp-up period 】
  • 具体的表现为:一些线程还没有启动,初期启动的部分线程已经结束了【导致实际并发量并会小于预期并发量】

  如何确定一个合理的Ramp-up period

  • 初始 ramp-up period= 总线程/请求次数;假如线程数=100,点击率=10次/s,则ramp-up period = 100/10 = 10s 
  3.2 快速开始

  

 

 

 

  新增线程组:创建测试线程组,并设置线程数量及线程初始化启动方式。
  新增 JMeter 元组:创建各种默认元组及测试元组,填入目标测试静态资源请求和动态资源请求参数及数据。
  新增监听器:创建各种形式的结果搜集元组,以便在运行过程及运行结束后搜集监控指标数据。
  运行&查看结果:调试运行,分析指标数据,挖掘性能瓶颈、评估系统性能状态;

   Follow Me:下面以汉堡王获取商品信息为例演示上述过

  • 新增线程组   

    jmeter 的 bin 目录下双击 jmeter.bat或ApacheJMeter.jar 启动 jmeter,如下

  

 

  在左边操作栏中选择“测试计划”,右击新增一个线程组,如图所示:

   

  初始化线程组相关信息

   

  • 新增 JMeter 元组 

  添加默认配置元素,添加如下默认配置,如图

  

 

各默认组件配置如图所示。
HTTP Cache Manager

  HTTP Cookie 管理器

  

  HTTP请求默认值

   

   添加采样器(HTTP请求

  

 

  添加HTTP请求

   

  • 新增监听器
重点监听数据如下红框展示
查看结果树
聚合报告
Response times over time(响应时间RT)
Transactions per second(TPS)

 

最后两项需要安装插件,已上传至SVN https://192.168.1.14/svn/test-files/性能测试工/JMeterPlugins-Standard-1.4.0.zip

 

 

 插件安装方法:

下载后需要解压,然后将JMeterPlugins-Standard.jar包放在jmeter安装目录的jmeter-3.0\lib\ext路径下,重新启动jemter即可。

 

 

 

  •  运行&查看结果

   

  聚合报告

   

 

  查看结果树

   

  TPS(每秒钟request/事务 数量

   

  响应时间RT

   

下期更新
1、并发线程数的设置RPS(每秒请求数)值(定时器)
2、断言      
3、获取接口返回值(使用正则)
4、.查看服务器CPU、数据库CPU占用情况(公示计算,主要分析RT值和tps值)

 

posted @ 2020-12-03 01:28  夏至未至-夜未央  阅读(427)  评论(0编辑  收藏  举报