Jmeter性能测试2

2022/3/1 23:26:34

本文主要是介绍Jmeter性能测试2,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Jmeter 其他常见元素说明

     配置元件:脚本中格式,数据进行设置,统一管理,例如:http 请求默认值。

     定时器:控制线程如何执行测试,操作和操作之间等待时间,比如同步定时器,用来实现真正的并发。

     前置处理器:用于实际请求发出之前对即将发生的请求进行特殊处理。

     例如:参数化

     后置处理器:用于请求发出之后得到服务器响应结果进行处理。一般用来提取响应数据中的特定数据,例如:关联

     断言:用于检查测试中得到的响应数据是否符合预期结果,这个断言一般都是在调试脚本过程中使用,性能测试的时候,断言需要禁用。

     逻辑控制器:主要是控制测试计划中请求节点发送请求的逻辑顺序。

性能测试实际上是在设计测试场景,这些场景需要符合实际软件运行的情况……

录制脚本

  1. badboy 录制脚本辅助测试

下载并且安装 badboy  软件

在badboy 中录制操作测试内容:保存  file -à export to jmeter,保存为 .jmx格式。

注意:badboy 录制的不是一行行代码,而是 web 请求对象

在jmeter 中打开:检查请求

                 添加监听器

                 修改各项属性

                 调试脚本

  1. jmeter 作为代理服务器录制脚本(实用性较小,做了解)
  1. jmeter - >测试计划 –》非测试元件 –》http代理服务器

在代理服务器中设置过滤条件,去掉图片,css等不需要请求信息

.*\.js.*|.*\.css.*|.*\jpg.*|.*\.gif.*|.*\.ifc.*

  1. 浏览器中代理服务器的设置

注意:浏览器中的代理设置,端口号一定要和 jmeter设置的保持一致,默认 8888,可以修改,但是不要被其它程序占用。

脚本增强

逻辑控制器

     事务:tps :每秒事务的处理量,表达系统处理能力的性能指标,每秒处理的消息数,点击率。

     Jmeter中通过逻辑控制器体现   --》事务控制器

                 逻辑控制器 –》仅一次控制器,适用于并非是测试对象,但是前置条件的请求(例如:ecshop首页)。

比如测试场景:

  1. 打开首页(只一次就好)

两种实现方式:

  1. 单独的线程组中,单独设置线程数4,运行1次,这个线程组建议是 setup 线程组;
  2. 都是在主线程组内,添加逻辑控制器(仅一次控制器),只运行一次的请求必须放在控制器里面。(推荐)
  1. 测试登录的性能(4个用户,连续运行30秒)

线程属性设置:线程数 4,循环次数:永远+调度器 ,持续时间 30秒

定时器

      集合点:作用,一般是用来测试瞬间并发的压力的,目的是实现真正的并发测试。在jmeter 中集合点是通过定时器来实现的。

     集合点:同步定时器,可以实现真正的并发。“先到的人在集合点等后面的人,等到齐了就一起走。” 适合的场景:秒杀,限购,12306网站每天10点开票等等。

集合的策略:人都到齐了再一起走(全部集合),集合参与人数=线程数

      每多少人到了,就可以一起走(部分集合),可能出现的问题:一直等不到后面的人,必须设置超时等待时间…

设置总结:模拟用户组的数,表示几个虚拟用户参与集合

0 表示所有用户不分组集合,即全部集合完毕才进行下一步动作。

0<设置数<线程总数,表示按照设置的数,几个一组集合,那么最后有可能出现最后一组无法按照设置数量集合完毕,就需要设置超时等待时间,否则会一直等待下去,不结束;

设置数>线程数,表示超出线程数的集合,也必须设置超时等待时间,否则一直不开始执行,无法结束;

超时等待时间的设置  timeout ,如果设置为0,就表示无限期等待,如果最后一组无法达到集合数量,将一直等下去,一直等到系统的最大值才释放(不可取);

当 timeout>0,表示集合过程中,最后一组虚拟用户无法达到集合数量,再等待多少时间,就不等了,就自己运行完成。

思考时间:即,用户在页面操作停留的时间。作用,一般都是来模拟用户真实行为的,让每个用户的操作有一定的差异性 ,如果有了思考时间,也会降低对服务器堆积的时间,jmeter 中通过定时器来体现思考时间,一般常用的有:

固定定时器:固定停留(间隔),上下请求发出的时间间隔是固定的。

高斯随机定时器:随机停留(间隔),每个虚拟用户在发出请求时都是先找随机时间进行间隔的。

统一随机定时器。

参数化

     参数化的作用:让数据变得不一样,模拟实际情况,每个线程(虚拟 用户)的数据都是不一样的,就进行参数化。

     参数化实现的过程(步骤):

  1. 判断分析哪些数据需要实现参数化;
  2. 设置参数(变量):新建变量,即定义参数(起名称),准备参数的值(重点,难点)
  3. 用参数来代替脚本需要参数化的数据
  1. 用户定义的变量

特点:自定义变量,这个变量只有一个值,但是这个值是可以变化,适用于 IP地址,

欢迎语等等,只有一个值的数据。变量的值可以是任意类型。

测试计划页面—》用户定义变量

配置元件 –》用户定义的变量

  1. 前置处理器:用户参数

前置处理器:在请求发出之前,对请求中的数据进行特殊处理。

迭代:需要执行验证的操作再执行一次,就是一个迭代,即被测试的操作每执行一次

就是一个迭代。

     特点:指定了用户和参数之间的关系,适用于数量比较少的参数化操作,用户和参数直接有特定关系。

前置处理器 –》用户参数

  1. CSV文件设置(配置元件中)

前提:必须先准备参数值文件,.csv格式或者.dat格式

适用范围:大批量用户参数化,并且参数值要有一定的规律(利用excle表格准备参数值)

通过参数文件参数化,可以实现下面场景:每次运行的数据都不一样

100个参数值,有虚拟用户 50个 ==》 50个用户,每个用户运行 2次

                       100个 ==》100个虚拟用户,每个用户运行1次

注意:dat 文件:excle 表格转换参数值,文件另存文文本格式(制表符分隔).txt,找到另存好的文件,修改后缀名为 .dat;特别注意:变量值和值之间必须使用(英文逗号间隔)。

参数文件中列标题行没有实际的作用,加不加都可以,注意在文件设置时,变量名称表示从左向右依次取不同列的值。

  1. Tools :函数助手

Jmeter 中提供了很多内置函数,调用之前保证选择正确的函数。

_csvread 函数

前提:需要先准备好.csv文件,注意文件中不要有标题行(参数列不需要标题)

Toolsà函数助手—》_csvread 函数,参数值取值列从0列开始计算,0表示第一列,1表示第二列,从左向右依次类推。

_random 随机函数

作用:指定一个最小值,指定一个最大值,在范围内随机取值。

作用域和执行顺序

      作用域(范围):处于不同的级别,受控制范围和可控制范围都是不一样的,特别是定时器。

      例如:如果希望定时器仅仅对一个请求生效,起作用,就将这个定时器放在这个请求之下,作为请求的子节点加入;

      如果希望定时器作用于多个请求,那么就将定时器放在跟请求同一个级别,该级别的所有请求都将受到这个定时器的影响。

比如测试场景:

测试500人登录的性能 –》在线数500,并发数没有 要求;准备脚本不需要添加定时器;

测试500人并发登录的性能 –》 在线数500,并发数500,准备脚本:单线程组实现,线程属性 500,一个登录请求,添加定时器;

多个线程组实现(线程数合计 500),每个线程组之下一个登录请求—》多线程组,多请求并发,添加跟线程组同级别的定时器;

测试500人登录,要求300人实现并发操作  --》 在线数500,并发数 300,准备脚本:

单线程组实现,添加同步定时器,参与定时集合的虚拟用户 300

测试300人并发登录的性能,同时200人正在注册 –》在线数500,并发数 500,准备就脚本:多线程组实现,每个线程下有不同的请求,一个是注册,一个是登录,按照实际设置线程属性,添加跟线程组同级别的同步定时器。

结论:并发操作,不一定都是同一个动作,很多时候,并发都是不同的动作同时 运行。

注意:情理上,集合点(同步定时器)的位置应在请求开始之前,但是jmeter中,集合点是按照所在就级别来达到控制范围,如果有多个同步定时器,在相同的作用域范围内,会按照从上至下依次顺序执行。

常见测试计划中各个元素的执行顺序:在同一个作用域下(同级别),执行顺序如下:

    配置元件

    前置处理器

    定时器

    取样器

    后置处理器

    断言

    监听器

 

 

 

 

 



这篇关于Jmeter性能测试2的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程