• Day39 JMeter的使用


    系列文章目录

    Day01 软件测试基础总结

    Day02 测试用例知识点总结(上)

    Day03 测试用例知识点总结(下)

    Day04 禅道-从安装到卸载

    Day05 MySql的基础使用

    Day06 MySql知识点总结

    Day07 MySql知识点再总结与多表查询

    Day08 redis的基础知识

    Day08 VMware的安装、Linux系统安装和Linux基础命令

    Day09 Linux常用命令总结

    Day10 Linux环境部署和项目构建

    Day11 shell脚本基础知识

    Day12 接口和协议

    Day13 Postman的使用

    Day13 Windows环境下的JDK安装与Tomcat的启动

    Day14 jenkins部署

    Day15 jenkins的简单使用

    Day16 charles的基本使用

    Day17 考试

    Day18 考试

    Day19 Fiddler的简单使用

    Day20 Python基础

    Day21 python 语句基础

    Day22 Python数据类型(上)

    Day23 Python数据类型(下)

    Day24 Python函数

    Day25 Python的文件操作和异常处理

    Day26 Python面向对象

    Day27 Python的部分算法

    Day28 单元测试 unittest

    Day29 单元测试 pytest

    Day30 接口测试requests

    Day31 Web端自动化基础

    Day32 Web自动化进阶

    Day33 PO模型

    Day34 移动端测试(上)

    Day35 移动端测试(下)

    Day36 移动端自动化(上)

    Day37 移动端自动化(下)

    Day38 性能测试理论

    Day39 JMeter的使用(上)


    目录

    系列文章目录

    前言

    一、JMeter的下载与环境配置

    二、JMeter目录结构

    三、JMeter的功能概要 

    1.语言

    2.主题

     四、JMeter元件和组件

    1.元件

    2.组件

    3.元件的作用域

    五、JMeter的使用

    1.线程组

     2.HTTP请求

     3.监听器

     六、JMeter参数化

    1.用户定义的变量

    2.用户参数

     3.csv数据文件设置

     4.函数参数化

    1.counter函数

     2.CsvRead函数

     3.randomstring函数

     七、断言

    1.响应断言

    2.json断言

     3.Xpath断言

    4.断言持续时间

    八、JMeter关联

    1.正则表达式

    ​编辑

     2.json提取器

    3.Xpath提取器

    4.JMeter属性

     总结


    前言

            性能测试的主流测试工具有两种,loadrunner和jmeter。loadrunner也被成为LR是一种工业级标准性能测试负载工具。jmeter则是Apache组织开发的基于JAVA的开源软件。两者对比,LR能支持用户以万为单位,且分析报表详细,支持IP欺骗,但是收费,且体积庞大无法定制功能;而jmeter开源免费,体积小,有丰富发资料与扩展组件,但不支持IP欺骗,分析能力相对于LR欠缺精度,支持用户量较少,但可以使用扩展组件和其他方式弥补缺陷。因此,本篇使用JMeter。


    一、JMeter的下载与环境配置

    JMeter下载官网

    首先配置java环境变量(使用 java -version 验证 )

    配置JMeter环境变量 (使用 jmeter 验证)

    二、JMeter目录结构

    bin 目录(常用文件介绍)
    jmeter.bat:windows下启动文件
    jmeter.sh:Linux下启动文件
    jmeter.log:Jmeter运行日志文件
    jmeter.properties:Jmeter配置文件
    /docs目录——Jmeter帮助文档
    /lib/ext目录——存放Jmeter依赖的jar包

    三、JMeter的功能概要 

    1.语言

    Options-> Chose Language->Chinese

     这种语言修改方式只是当前有效,再次运行依旧是英语,因此需要修改配置文件:

    在JMeter的bin目录下,修改jmeter.properties 文件 将language=zh_CN 添加到language=en下方(不需要加#号),保存后就是中文

    2.主题

     可以调整界面的颜色 

     

     四、JMeter元件和组件

    1.元件

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

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

    2.组件

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

                 

    3.元件的作用域

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

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

    作用域的原则:

    取样器:核心,不和其他元件互相作用,没有作用域

    逻辑控制器:只对其子节点中的取样器和逻辑控制器起作用

    其他元件:

    • 如果是某个取样器的子节点,则该元件只对其父节点起作用
    • 如果其父节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点等)

    元件的执行顺序:
    同一作用域下的不同元件:配置元件,前置处理器,定时器,取样器,后置处理器,断言,监听器
    同一作用域下相同的元件:从上到下的顺序依次执行

    五、JMeter的使用

    1.线程组

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

    位置:右键点击‘测试计划’-->添加-->线程(用户)-->线程组

    特点:

    • 模拟多人操作
    • 线程组可以添加多个,多个线程组可以并行或者串行
    • 取样器和逻辑控制器必须依赖线程组才能使用
    • 线程组下可以添加其他元组下组件

    分类:

    普通线程组,常用的线程组,可以看做是一个虚拟用户组,线程组中的每一个线程都可以理解为一个虚拟用户
    setup线程组:一种特殊类型的线程组,可用于执行预测试操作
    teardown线程组:一种特殊类型的线程组,可用于执行测试后工作

     2.HTTP请求

    作用:向服务器发送HTTP和HTTPS请求
    位置:进入线程组-->右键-->添加-->取样器-->HTTP请求

     3.监听器

    作用:监听器可以动态的监控JMeter测试执行的过程,实时查看测试结果
    位置:在线程组->添加->监听器->聚合报告/察看结果树

     

     六、JMeter参数化

    参数化测试:把测试数据组织起来,用不同的测试数据调用相同的测试方法。

    本质:使用参数的方式替代脚本中的固定的测试数据
    实现方式:文件定义的方式/数据库的方式/定义变量

    1.用户定义的变量

    作用:定义全局变量
    位置:测试计划-->线程组-->配置元件-->用户定义的变量

     

    使用${变量名}进行引用

    2.用户参数

    作用:针对同一组参数,当不同的用户来访问时,可以获取到不同的值

    位置:测试计划-->线程组-->前置处理器-->用户参数

     3.csv数据文件设置

    作用:让不同的用户在多次循环时,可以取到不同的值
    位置:线程组>>配置原件>>CSV数据文件设置

     

     

    上面使用的是txt文本格式的数据, csv格式与上面的步骤相同

     4.函数参数化

    作用:计数函数,一般做执行次数统计使用

    1.counter函数

    位置:工具>>函数助手对话框>>_counter

     

     2.CsvRead函数

    位置:工具>>函数助手对话框>>_CsvRead

     

     

     3.randomstring函数

    位置:工具>>函数助手对话框>>randomstring

     

     七、断言

     判断预期结果和实际结果是否一致

    jmeter在请求的返回层里面有个自动判断机制(响应状态码)
    但是请求成功了,并不代表结果一定正确,因此需要检测机制提高测试准确性

     常见断言:

    响应断言/json断言/xpath断言/持续断言

    1.响应断言

    作用:对http请求的任意格式的响应结果进行判断
    位置:测试计划-->线程组-->http请求-->(右键添加)断言-->响应断言

     

     断言通过测试就直接通过,没有回馈信息

    响应断言只是识别文本内容,适应大部分情况

    2.json断言

    作用:对http请求的json的响应结果进行判断
    位置:测试计划-->线程组-->http请求-->(右键添加)断言-->json断言

     

     3.Xpath断言

    定义:xpath基于XML的树状结构,提供在数据结构树中寻找节点的能力
    位置:测试计划-->线程组-->http请求-->(右键添加)断言-->xpath断言

    区别:响应断言(适用任何的返回类型),json断言(只适用于json的返回类型),Xpath Assertion断言针对返回信息为Xpath的数据类型进行断言

    4.断言持续时间

    作用:检查http请求的响应时间是否超出要求范围
    位置:测试计划-->线程组-->http请求-->(右键添加)断言-->持续时间断言

    八、JMeter关联

    当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用关联处理

    常见关联:

    正则表达式提取器 --提取任意格式的数据
    json提取器 --提取html格式的数据
    xpath提取器 --提取json格式的数据 

    1.正则表达式

    正则表达式:就是一个公式,或者是一套规则,使用这套规则可以从任意字符串中提取想要的数据内容

    公式格式:左边界(匹配符号)有边界:可以提取出想要获取的数据内容
    .:是通配符,可以代表任意字符(除换行回车)
    *:代表前面的字符出现0或者多次
    .*匹配规则:找到左边界值后,往右查找有边界,找到最后面的有边界,中间的所有的数据都被记录下来
    ?:代表非贪婪匹配,找到左边界后,往右查找匹配走边界,只要右匹配的右边界就停止继续查找;再次查找
    左边界的右边界
    公式格式:左边界(.*?)有边界
    (.*?)
    百度一下,你就知道

    通过一个正则表达式可以提取出多组数据,每组数据设置对应的左边界和右边界即可
    每一组数据都可以由一个或者多个值

     

     2.json提取器

     json提取器 :就是json表达式提取数据,从返回格式是json中提取想要的数据内容
    位置:线程组>>添加>>后置处理器>>json提取器

    json提取方式与正则表达式相同,不同之处在下面:

    3.Xpath提取器

    xpath提取器 :针对于HTML格式的响应结果数据进行提取
    位置:线程组>>添加>>后置处理器>>xpath提取器

    4.JMeter属性

    用于解决不同线程组之间的关联

    __setProperty函数:将值保存成jmeter属性
    __property函数:在其他线程组中使用property函数读取属性


     总结

  • 相关阅读:
    MarkText快捷键(随时补充中)
    【代码随想录】算法训练计划15
    Dubins曲线学习笔记及相关思考
    asp.net上传文件
    用Django 写学习笔记程序第二章.2创建用户账户
    LintCode 124 Longest Consecutive Sequence (unordered_set的应用)
    【光学】基于matlab GUI双孔干涉【含Matlab源码 2119期】
    【Fiddler】安卓7.0以上添加Fiddler/Charles证书到系统根证书(模拟器-雷电)
    R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、自定义为指定的分列因子添加分组标签、编写自定义函数指定统计量的呈现方式
    5.4版本内核ufs设备信息查询方式
  • 原文地址:https://blog.csdn.net/lookout99/article/details/126849363