• 性能测试学习-基本使用-元件组件介绍(二)


    jmeter优点是:开源免费,小巧,丰富的学习资料和扩展组件

    缺点是:1.不支持IP欺骗,分析和报表能力相对于LR欠缺精确度(以分钟为单位)

    工具用户量分析报表IP欺骗费用体积扩展性
    Loadrunner多(万)精确(s)支持收费大(单位gb)不能扩展
    Jmeter较差(min)不支持免费小(MB)有扩展组件

    一、jmeter的安装和基本使用

    (一)安装JDK

    地址:http://www.oracle.com/

    环境变量 :

    • JAVA_HOME=D:\Java\jdk1.8.0_191
    • Path中添加:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

    校验:cmd命令行里输入 java -version 

    (二)安装jmeter

    地址:Apache JMeter - Download Apache JMeter

    解压安装包即可

    启动3种方式:进入bin目录,双击jmeter.jar ; 双击ApacheJMeter.jar ;命令行输入java -jar ApacheJMeter.jar

    (三)文件介绍

    1. bin目录介绍(存放可执行文件和配置文件)

    jmeter.bat: windows的启动文件(重要)

    jmeter.log: Jmeter工具运行的日志文件

    jmeter.propertites: jmeter工具的配置文件(重要)

    jmeter.sh: linux的启动文件

    jmeter-server: linux分布式测试的启动程序

    jmeter-server.bat: windows分布式测试的启动程序

    2.  /docs/api/index.html

    是jmeter的api文档,用于开发扩展组件

    3. printable_docs目录

    用户帮助手册

    4. lib目录

    存放jmeter依赖的jar包和用户扩展所依赖的jar包(ext目录下)

    (四)功能概要

    1. 修改默认设置 - jmeter界面汉化

    临时的:菜单Options->Choose Language->Chinese(Simplified)

    永久的:修改配置文件,bin\jmeter.properties文件,改成"language=zh_CN",然后重启jmeter

    2. 主题修改 

    二、jmeter元件和组件的介绍

    (一)元件的基本介绍

    1. 元件:多个类似功能组件的容器(类似于)

    取样器发送请求
    逻辑控制器控制语句的执行顺序
    前置处理器对请求参数进行预处理
    后置处理器对响应结果进行提取
    断言检查接口的返回结果是否与预期结果一致
    定时器设置等待
    测试片段封装一段代码,供其他脚本调用
    配置元件测试数据的初始化配置
    监听器查看jmeter脚本的运行结果

    2. 组件:实现独立的某个功能(类似于方法

    如取样器里的HTTP请求,逻辑控制器里的循环控制器,事务控制器

    (二)元件的作用域

    元件的作用域是靠测试计划的树形结构中的父子关系来确定的。

    提示:所有的组件都是以取样器为核心运行的。组件添加的位置不同,生效的取样器也不同。

    1. 作用域规则:

    • 取样器-->核心,不和其他元件相互作用,没有作用域
    • 逻辑控制器-->只对其子节点中的取样器和逻辑控制器起作用
    • 其他元件-->如果是某个取样器的子节点,则该元件只对其父节点其作用 ;如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)

    2. 元件的执行顺序:

    同一个作用域下不同类型元件:

    1. 配置元件(config elements)
    2. 前置处理器(per-processors)
    3. 定时器(timers) 
    4. 取样器(sampler)
    5. 后置处理器(post-processors)
    6. 断言(assertions)
    7. 监听器(listeners)

    同一个作用域下多个相同类型元件:

    • 按照在测试计划中从上到下的顺序依次执行

     举例:整理执行顺序

    定时器1 - HTTP请求1 - 定时器1 - 定时器2 - HTTP请求2 - 定时器1 - 定时器3 - HTTP请求3

    (三)线程组

    1.线程组概览

    作用:线程组就是控制jmeter用于执行测试的一组用户

    特点:

    • 模拟多人操作
    • 线程组可以添加多个,多个线程组可以并行或串行
    • 取样器(请求)和逻辑控制器必须依赖线程组才能使用

    不控制顺序如图:

     如果要顺序执行线程组,设置如下:

    执行结果如图:

    2.线程组的特点 :

    • 模拟用户,支持多用户操作
    • 多个线程可以串行执行,也可以并行执行

    3.线程组的分类 :

    setup线程组-前置处理,初始化

    普通线程组-编写脚本,可以看做一个虚拟用户组,每一个线程都可以理解为一个虚拟用户

    teardown线程组-后置处理,环境恢复等

    4.线程组参数详解:

    (1)模拟10个用户并行执行:

    (2)模拟5个用户5s内启动完成 

    (3)模拟2个用户各循环3次

    (4)模拟2个用户运行5s

    (5) 模拟2个用户等待5s后开始执行,持续时间2s

    (6)案例分析:

    • 循环线程数为2,循环次数为3,运行观察结果
    • 循环线程数为3,循环次数为2,运行观察结果 

    相同点:从请求数量来说,完全相同

    不同点:场景不同

    • 线程数:代表用户数,即性能测试时的负载量(线程数为2比线程数为3对应的负载量小)
    • 循环次数:代表时间,即性能测试时的运行时间(循环次数3比循环次数2对应的时间长) 

    5. http请求使用示例

    a.如何配置来发送http请求?

    发送 GET 请求(请求参数在路径中 )

    URL协议:协议、服务器域名或IP、端口、方法(GET)、路径、编码格式

    参数 : 

    • 在路径后添加参数 。格式 : ?键名=键值&键名=键值
    • 在参数列表中添加参数 。格式:名称(键名)、值(键值)

    发送POST请求(请求参数在消息体数据中):

    URL:协议、服务器域名或服务器域名或IP、端口、方法(POST)、路径、编码格式

    参数:

    • 在消息体数据中添加请求体(form/json)
    • 在参数列表中添加参数 (form)

     b.重定向

    GET https://www.baidu.com/s

    HTTP请求的响应数据和HTTP请求-1的响应数据一样

    重定向的原因分析

    第一个HTTP请求中,URL错误,导致服务器产生了重定向,提供了新的URL路径

    • jmeter会自动发送第二个http请求(使用第一个http请求中的返回的URL路径)
    • 点击最外层http请求时,显示的内容于最后一个http请求的请求和响应数据一致。

    6.响应数据中存在乱码 

    需要修改取样结果的编码格式->修改jmeter.properties文件:

    # The encoding to be used if none is provided (default ISO-8859-1)
    sampleresult.default.encoding=UTF-8 

  • 相关阅读:
    Andorid UNIX SOCKET c代码进程和java代码进程之间通讯
    我的奋斗:我在外企那些年(二)
    shell------常用小工具,sort,uniq,tr,cut
    【愚公系列】2022年11月 微信小程序-优购电商项目-商品支付页面
    在Java中使用XxlCrawler时防止被反爬的几种方式
    LCD12864 (Sitronix ST7920) 4-Bits Mode 初始失败
    【shiro-安全框架】入门基础学习
    【docker/K8S】docker/K8S安装mysql的坑-20220815
    李沐_动手学深度学习_19_卷积层
    python——第九天
  • 原文地址:https://blog.csdn.net/danchejikafo/article/details/139279661