zoukankan      html  css  js  c++  java
  • JMeter 系列之—-01 使用

    一. JMeter简介

    JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言

    官网

    JMeter 系列之—-01 使用

    JMeter 系列之—-02 创建数据库测试计划

    JMeter 系列之—-03 生成脚本

    JMeter 系列之—-04 支持CI

    二. 主要元件说明

    下图是jmeter在做压测时脚本的结构

    (1)测试计划(Test Plan)

       是使用JMeter进行测试的起点,它是其它JMeter测试元件的容器。

    (2)线程组(Thread Group)

       代表一定数量的并发用户,它可以用来模拟并发用户发送请求。

    (3)取样器(sampler)

       定义实际的请求内容,被线程组包含,我们主要用HTTP请求。

    (4)监听器(Listener)

    负责收集测试结果,同时也被告知了结果显示的方式。我们常用的包括:聚合报告、察看结果树、用表格查看结果,都支持将结果数据写入文件。其他的添加上去看看就行。

    (5)逻辑控制器(Logic Controller)

    可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。

    其分为循环控制器和事务控制器。

    (6)断言(Assertions)

    可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。

    (7)配置元件(Config Element)

    维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。我们主要在参数化中用到CSV Data Set Config。

    (8)前置处理器(Pre Processors)和后置处理器(Post Processors)

    负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。我们主要在动态关联中用到后置处理器的正则表达式提取器。

    (9)定时器(Timer)

    负责定义请求之间的延迟间隔。

    详细说明如下:

    2.1 线程组(线程)

    首先新增一个测试计划,测试计划下要增加一个【线程组】,线程组中包括如下设置项

    1. 线程数

    2. Ramp-up Period(in seconds)

    【1】决定多长时间启动所有线程。如果使用10个线程,ramp-up period是100秒,那么JMeter用100秒使所有10个线程启动并运行。每个线程会在上一个线程启动后10秒(100/10)启动。Ramp-up需要要充足长以避免在启动测试时有一个太大的工作负载,并且要充足小以至于最后一个线程在第一个完成前启动。 一般设置ramp-up=线程数启动,并上下调整到所需的。

    【2】用于告知JMeter 要在多长时间内建立全部的线程。默认值是0。如果未指定ramp-up period ,也就是说ramp-up period 为零, JMeter 将立即建立所有线程。假设ramp-up period 设置成T 秒, 全部线程数设置成N个, JMeter 将每隔T/N秒建立一个线程。

    【3】Ramp-Up Period(in-seconds)代表隔多长时间执行,0代表同时并发

    3. 循环次数:单个线程循环次数

    4. Delay Thread creation until needed

    延迟创建线程,直到该线程开始采样,即之后的任何线程组延迟和加速时间为线程本身。这样可以支持更多的线程,但不会有太多是同时处于活动状态。

    5. 调度器

    选中调度器后,需要输入启动和结束时间。当测试启动时,如果必须JMeter会等待启动时间到达。在每个周期 结束,JMeter检验结束时间是否到达,如果是,运行停止,如果不是测试被允许继续,直到迭代限制到达。

    另外你可以使用启动延迟和持续时间文本域。注意启动延迟会覆盖启动时间,持续时间会覆盖结束时间。

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

    当线程执行取样器失败的时候,要执行的策略,选项如下:

    【继续】:忽略错误,是继续执行
    【Start Next Thread Loop】: 忽略错误,线程当前循环终止,执行下一个循环。
    【停止线程】:当前线程停止执行,不影响其他线程正常执行。
    【停止测试】:整个测试会在所有当前正在执行的线程执行完毕后停止
    【立即停止测试】:整个测试会立即停止执行,当前正在执行的取样器如果可能会被中断。

    2.2. 配置元件----CSV Data Set Config

    csv文件中数据作为参数,驱动测试

    Variable names(comma-delimited): 参数名称

    Delimiteruse ('it' for tab):分隔符

    Recycle on EOF?

    Stop thread on EOF?

    当Recycle on EOF 选择flase时,Stop thread on EOF选择true,线程4个,参数3个,那么只会请求3次, 就会停止,保证每条数据只跑一次

    2.3. 配置元件--Bean Shell Sampler

    BeanShell可执行标准Java语句和表达式,另外包括一些脚本命令和语法。

    Bean Shell常用内置变量

    JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:

    • log:用来记录日志文件,写入到jmeber.log文件,使用方法:log.info(“This is log info!”);

    • ctx(JmeterContext)通过它来访问context,使用方法可参考:org.apache.jmeter.threads.JMeterContext

    • vars - (JMeterVariables):操作jmeter变量,提供读取/写入访问变量的方法。这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:

        a) vars.get(String key):从jmeter中获得变量值

        b) vars.put(String key,String value):数据存到jmeter变量中

         c) vars.putObject("OBJ1",new Object());

        更多方法可参考:org.apache.jmeter.threads.JMeterVariables

    • props - (JMeterProperties - class Java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。 

        a) props.get("START.HMS");  注:START.HMS为属性名,在文件jmeter.properties中定义 

        b) props.put("PROP1","1234"); 

    • prev - (SampleResult):获取前面的sample采样的结果,常用方法:

        a) getResponseDataAsString():获取响应信息

        b) getResponseCode() :获取响应code

        更多方法可参考:org.apache.jmeter.samplers.SampleResult

    • sampler - (Sampler):gives access to the current sampler 访问当前采样

    2.4. 监听器

    1 参看结果数,聚合报告

    2 Aggregate Graph------------查看QPS(吞吐量:每秒钟可以处理的请求数)

    三. 监控服务器系统资源

    1. 安装jmeter-plugin-manager

    2. 使用jmeter-plugin-manager,安装PerfMon(选项->plugin Manager,在Avaliable Plugins中搜索Per,然后勾选ApplyChanges and Restart jmeter)

    3. 在被压测服务器安装ServerAgent-2.2.1 ,并启动,注意防火墙必须开放端口4444

    systemctl start firewalld
    
    firewall-cmd --zone=public --add-port=4444/tcp --permanent 
    
    firewall-cmd --reload
    
    firewall-cmd --zone=public --list-ports
    View Code

    linux服务器上需将startAgent.sh设定为可执行文件:chmod 777 startAgent.sh

    4. jmeter测试计划中添加jp@gc - PerfMon Metrics Collector,配置监听项

    PerfMon Metrics Collector and Server Agent原理和使用可以查看官方文档

    具体可以查看官方的文档: 
    https://jmeter-plugins.org/wiki/PerfMon/

    https://jmeter-plugins.org/wiki/PerfMonAgent/

    4. 使用jmeter-plugin-manager,安装Basic Graphs,可以查看jp@gc - Response Times Over Time,jp@gc - Transactions per Second,jp@gc - Active Threads Over Time

    四. 导出测试报告

    扩展知识:Jmeter-几种在响应报文中抽取数据的方法

  • 相关阅读:
    转:js中javascript:void(0) 真正含义
    Chrome Capabilities & ChromeOptions
    scrapy
    远离DoS攻击 Windows Server 2016发布DNS政策
    windows server 2012 AD 活动目录部署系列(五)备份和还原域控制器
    windows server 2012 AD 活动目录部署系列(七)Active Directory 的授权还原
    对AD域进行定期自动备份设置图解
    教程:使用Diskpart创建、扩展或删除磁盘分区
    虚拟化天花板将近,后虚拟化时代如何应对?
    图样图森破 设置虚拟机优先级真的很容易?
  • 原文地址:https://www.cnblogs.com/liuyitan/p/8430513.html
Copyright © 2011-2022 走看看