zoukankan      html  css  js  c++  java
  • JMeter压力测试初探

    JMeter压力测试初探

    1. 环境准备

    JMeter 版本5.3

    汉化

    D:apache-jmeter-5.3injmeter.properties

    language=zh_CN
    

    HiDPI(高分屏适配)

    Jmeter在4k或者2k高分辨率屏幕下图标与字体都会过小,每次启动后再放大不方便,可以按如下配置:

    jmeter.hidpi.mode=``true
    jmeter.hidpi.scale.factor=2.0
    jmeter.toolbar.icons.size=48x48
    jmeter.tree.icons.size=48x48
    jsyntaxtextarea.font.family=Hack
    jsyntaxtextarea.font.size=28
    

    需要注意的是,使用hidpi配置的时候,外观要选择默认主题windows,实测此主题对hidpi兼容最好。

    2. 线程组

    就是我们通常使用的线程。通俗的讲,一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。多个用户同时去执行相同的一批次任务。每个线程之间都是隔离的,互不影响的。一个线程的执行过程中,操作的变量,不会影响其他线程的变量值。

    线程组的常用设置:

    1. 取样器错误后要执行的动作:
      • 继续:忽略错误,继续执行
      • Start Next Thread Loop: 忽略错误,线程当前循环终止,执行下一个循环。
      • 停止线程:当前线程停止执行,不影响其他线程正常执行。
      • 停止测试:整个测试会在所有当前正在执行的线程执行完毕后停止
      • Stop test now:整个测试会立即停止执行,当前正在执行的取样器可能会被中断。
    2. 设置线程数:
      • 线程数也就是并发数,每个线程将会完全独立的运行测试计划,互不干扰。多个线程用于模仿对服务器的并发访问。
    3. 设置ramp-up period
      • ramp-up period用于设置启动所有线程所需要的时间。如果选择了10个线程,并且ramp-up period是100秒,那么JMeter将使用100秒使10个线程启动并运行。每个线程将在前一个线程启动后10(100/10)秒后启动。
      • 当这个值设置的很小、线程数又设置的很大时,在刚开始执行时会对测试客户机产生很大的负荷。
    4. 设置循环次数:
      • 该项设置线程组在结束前每个线程循环的次数,如果次数设置为1,那么JMeter在停止前只执行测试计划一次。
      • 如果勾选永远,那么每个线程会无限循环整个测试计划,直到手动停止。(并非只有手动停止一种停止方式,定时器也可以控制停止)
    5. Delay Thread creation until needed:
      • 默认情况下,测试开始的时候,所有线程就被创建完了。如果勾选了此选项,那么线程只会在合适的需要用到的时候创建。

    3. HTTP取样器

    4. 定时器(以jp@gc - Throughput Shaping Timer为例)

    Throughput Shaping Timer 是用来控制吞吐量的定时器,通过延缓线程运行来整体控制取样器产生的RPS。

    实际使用中:

    1. 可以通过设置在不同吞吐量分别持续一段时间,考察系统在不同吞吐量情况下的稳定性

    2. 可以通过设置随着时间持续增加的吞吐量,来探测系统吞吐量的的极限

    举例:

    https://www.cnblogs.com/ryan255/p/14406789.html

    5. 常用监听器的使用

    1. jp@gc - Transactions per Second
    2. jp@gc - Response Times Over Time
    3. 聚合报告&汇总报告

    https://www.cnblogs.com/ryan255/p/14406840.html

    6. 数据准备(以CSV data set config为例)

    使用CSV data set config配置元件准备大量的测试数据

    CSV 数据文件设置:

    1. 指定数据文件

    2. 设置文件编码

    3. 设置变量名称(后续在脚本其他位置引用)

    4. 是否忽略首行

    5. 分隔符(决定了数据如何分割)

    6. 是否允许带引号

    7. 遇到文件结束符再次循环

    8. 遇到文件结束符停止线程

    9. 线程共享模式:

      • 全部线程

        是指在CSV Data Set Config配置元件作用域范围内的所有线程共享一个数据源文件,也就是说在JMeter测试执行过程中,JMeter仅打开一次该数据源文件,每个线程读取的是同一个数据源文件中的数据.线程按照启动的先后顺序依次从数据源文件中获取一个值,不论该线程是否引用CSV Data Set Config中定义的变量,每个线程都会分配一个值,这样可以保证每个线程获取的是数据源文件中不同行的列值(在不循环取值的情况下).

      • 当前线程组

        是指在CSV Data Set Config配置元件作用域范围内的所有线程组,当JMeter执行测试时,每一个线程组都单独打开一次数据源文件(可以是相同或不同的数据源文件).每个线程组下的各个线程都是从数据源文件的起始处读取参数值.

        若要线程组读取不同的数据源文件,可以对数据源文件的路径进行参数化.
        这里需要使用${threadGroupName}来获取线程组的名字.
        假设有n个线程组:tg1,tg2,...,tgn
        每个线程组对应一个数据源文件,对应的文件名分别为: tg1.csv,tg2.csv,...,tgn.csv
        在配置时将"Filename"设置为".../${threadGroupName}.csv"即可.

      • 当前线程

        在CSV Data Set Config配置元件作用域范围内的所有线程组,当JMeter执行测试时,每一个线程
        都单独打开一次数据源文件(可以是相同或不同的数据源文件).
        每个线程都是从数据源文件的起始处读取参数值.

        若要线程组读取不同的数据源文件,可以对数据源文件的路径进行参数化.
        这里需要使用${threadNum}来获取线程编号.
        假设有n个线程,线程编号为:1,2,...,n
        每个线程对应一个数据源文件,对应的文件名分别为:
        testdata1.csv,testdata2.csv,...,testdatan.csv
        在配置时将"Filename"设置为".../testdata${threadNum}.csv"即可.

    7. 断言(以json断言为例)

    ...待施工

    联系我:ryan255@163.com
    github:https://github.com/ryan255
  • 相关阅读:
    display,visibility,meta知识
    存储过程
    Asp.Net碎知识
    分页
    配置IIS
    SQLAlchemy(三):外键、连表关系
    SQLAlchemy(二):SQLAlchemy对数据的增删改查操作、属性常用数据类型详解
    SQLAlchemy(一):SQLAlchemy去连接数据库、ORM介绍、将ORM模型映射到数据库中
    数据可视化之DAX篇(十)在PowerBI中累计求和的两种方式
    数据可视化之DAX篇(九) 关于DAX中的VAR,你应该避免的一个常见错误
  • 原文地址:https://www.cnblogs.com/ryan255/p/14431122.html
Copyright © 2011-2022 走看看