当前位置: 首页 > news >正文

Jmeter工具的使用

一.主流性能测试工具

性能测试工具:loadrunner,jmeter

1.1 loadrunner介绍

1.2 jmeter介绍

 1.3 对比

相同点:

        都能模拟大量用户

        都能支持多协议(常见的协议都支持,如Http)

        都有监控及分析报表功能

不同点:

 结论:项目日常性能测试jmeter足够用,出商业报告优先LR.

二.jmeter的下载安装配置启动

2.1 jmeter的下载

方式一;官网下载:Apache JMeter - Download Apache JMeter

 方式二:直接接收,使用:(我的jmeter文件在D:\install\jmeter\apache-jmeter-4.0)

2.2 配置环境变量

新建JAVA_HOME

CLASSPATH填写 

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;

path填写

%JAVA_HOME%\bin

%JAVA_HOME%\jre\bin

验证

java -version

2.3:配置jmeter环境变量

2.3.1:新建JMETER_HOME

2.3.2:CLASSPAT填写 

;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar

2.3.3:path填写

%JMETER_HOME%\bin 

 

2.3.4 :验证

方式一:cmd中输入jmeter

方式二:bin目录下执行jmeter.bat或者jmeter.sh(linux)

三.jmeter的目录结构

bin 目录(常用文件介绍)

        jmeter.bat:windows下启动文件

        jmeter.sh:Linux下启动文件

        jmeter.log:Jmeter运行日志文件

        jmeter.properties:Jmeter配置文件

/docs目录——Jmeter帮助文档

/lib/ext目录——存放Jmeter依赖的jar包

四.jmeter功能概要

4.1汉化

4.2 修改主题

五.jmeter元件和组件

5.1 元件的基本介绍

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

5.2 组件的基本介绍

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

小结:

5.3元件的作用域

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

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

元件的执行顺序

同一作用域下的不同元件:

配置元件,前置处理器,定时器,取样器,后置处理器,断言,监听器同一作用域下相同的元件:

从上到下的顺序依次执行

jmeter的案例

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

六.jmeter使用示例

6.1 第一个案例

需求:使用jmeter访问百度首页接口,并查看请求和响应信息

步骤:

1:启动jmeter

2:在‘测试计划’下添加'线程组'

3:在''线程组''下添加'http请求'取样器

4:填写‘http请求’的相关请求数据

5:在‘线程组’下添加‘察看结果树’监听器

6:点击‘启动’按钮进行执行,并查看结果

 6.2 线程组

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

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

2. 特点:

模拟多人操作

线程组可以添加多个,多个线程组可以并行或者串行

取样器和逻辑控制器必须依赖线程组才能使用

线程组下可以添加其他元组下组件

 3.线程组的分类

普通线程组,常用的线程组,可以看做是一个虚拟用户组,线程组中的每一个线程都可以理解为一个虚拟用户

setup线程组:一种特殊类型的线程组,可用于执行预测试操作

teardown线程组:一种特殊类型的线程组,可用于执行测试后工作

4.参数讲解

 6.3 HTTP请求

1.作用:向服务器发送HTTP和HTTPS请求

位置:进入线程组-->右键-->添加-->取样器-->HTTP请求

2.参数

6.4 监听器

1.作用:监听器可以动态的监控jmeter测试执行的过程,实时查看测试结果

位置:在线程组>>添加>>监听器>>聚合报告/察看结果树

察看结果树

通过察看结果树,我们可以看到每个请求的结果,其中红色的是出错的请求,绿色的为通过

Thread Name:线程组名称

Sample Start: 启动开始时间

Load time:加载时长

Latency:等待时长

Size in bytes:发送的数据总大小

Headers size in bytes:发送数据的其余部分大小

Sample Count:发送统计

Error Count:交互错误统计

Response code:返回码

Response message:返回信息

Response headers:返回的头部信息

聚合报告

 

七.jmeter参数化

1.jmeter介绍

本质:使用参数的方式替代脚本中的固定的测试数据

实现方式:文件定义的方式/数据库的方式/定义变量

2.jmeter参数化

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

jmeter中常见的参数化方式

用户定义的变量

用户参数

CSV Data Set Config

函数

2.1 用户定义的变量

作用:定义全局变量

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

需要通过${变量名}进行引用

 

2.2 用户参数

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

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

 

2.3 csv数据文件设置

作用:让不同的用户在多次循环时,可以取到不同的值

位置:线程组>>配置原件>>CSV数据文件设置

如果使用TXT可能不能很好的管理数据,如果使用CSV类型,就方便很多,其他的用法和TXT

 

2.4 函数参数化

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

方式一:couter函数

位置:选项>>函数 注释对话框>>_counter

 方式二:CsvRead函数

操作: 选项>>函数注释对话框>>_CsvRead

方式三:randomstring函数

操作:选项>>函数注释对话框>>_randomstring

 

 八.jmeter断言

作用:让程序判断预期结果和实际结果是否一致

提示:

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关联

1.为什么使用关联

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

常见的关联

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

json提取器               --提取json格式的数据

xpath提取器              --提取html格式的数据

2.1正则表达式

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

公式格式:左边界(匹配符号)右边界:可以提取出想要获取的数据内容

.:是通配符,可以代表任意字符(除换行回车)

*:代表前面的字符出现0或者多次

.*匹配规则:找到左边界值后,往右查找右边界,找到最后面的右边界,中间的所有的数据都被记录下来

?:代表非贪婪匹配,找到左边界后,往右查找匹配走边界,只要右匹配的右边界就停止继续查找;再次查找左边界的右边界

公式格式:左边界(.*?)右边界

(.*?)百度一下,你就知道

正则表达式匹配:

(.*?)-(.*?)-(.*?)\n

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

作用:针对任意格式的响应数据进行提取

位置:线程组>>添加>>后置处理器>>正则表达式提取器

引用名称:存放提取出的值的参数名称

正则表达式:左边界(.*?)有边界

模板:用$$引用起来,表示解析出第几组()的值匹配数字:1表示第一个值,-1表示所有的取值

 

实现接口查询登录用户--查询余额在登录的接口中提取数据

在余额查询的接口中引用 

2.2json提取器

json提取器 :就是json表达式提取数据,从返回格式是json中提取想要的数据内容

位置:线程组>>添加>>后置处理器>>json提取器

实现登录--查询余额

 

提取登录的token数据,通过json表达式

 

 余额的接口

 

 

相关文章:

  • PVE系列教程(十六)、安装ubuntu server22.04系统
  • 【牛客】WY49数对,JZ65不用加减乘除做加法
  • C语言《超详细解析内存函数》
  • SpringBoot使用Redisson 实现分布式锁
  • 微服务初级入门实战分布式项目构建
  • tessafe.sys是病毒吗?tessafe.sys不兼容驱动程序如何解决?
  • Android实现ViewPager适配器kotlin简单实现
  • 点云深度学习系列博客(四):PointNet代码精讲
  • 基于SSH开发HR(人力资源管理系统)简单工作流程系统 课程设计 大作业 毕业设计
  • Promise详解与基础实现(Promise/A+规范)
  • 封装和static
  • LF-YOLO: A Lighter and Faster YOLO for Weld Defect Detection of X-ray Image
  • JavaScript随手笔记---保留小数位
  • 检查网络端口是否正常
  • 基于JavaSwing开发房产管理系统(access数据库) 课程设计 大作业
  • (三)从jvm层面了解线程的启动和停止
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Codepen 每日精选(2018-3-25)
  • Linux gpio口使用方法
  • MySQL主从复制读写分离及奇怪的问题
  • Nacos系列:Nacos的Java SDK使用
  • Redis学习笔记 - pipline(流水线、管道)
  • 初识MongoDB分片
  • - 概述 - 《设计模式(极简c++版)》
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 面试遇到的一些题
  • 日剧·日综资源集合(建议收藏)
  • 异常机制详解
  • 06-01 点餐小程序前台界面搭建
  • NLPIR智能语义技术让大数据挖掘更简单
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • #{}和${}的区别?
  • $.ajax()
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (1) caustics\
  • (C++20) consteval立即函数
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (笔试题)分解质因式
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)ORM
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • ... 是什么 ?... 有什么用处?
  • .net core控制台应用程序初识
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .php结尾的域名,【php】php正则截取url中域名后的内容
  • /dev下添加设备节点的方法步骤(通过device_create)
  • ?.的用法
  • @基于大模型的旅游路线推荐方案
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法