• Apache JMeter


    Apache JMeter

    介绍

    JMeter是Apache组织使用Java开发的一款测试工具

    • 可以用于对服务器、网络或对象模拟巨大的负载
    • 通过创建带有断言的脚本来验证程序是否能返回期望的结果
    优缺点
    优点
    • 开源、免费
    • 跨平台
    • 支持多协议
    • 小巧
    • 功能强大
    缺点
    • 不支持IP欺骗
    • 使用JMeter无法验证JS程序,也无法验证页面UI,所以要和Selenium配合完成Web2.0应用的测试
    JMeter安装

    JMeter是使用Java编写的,必须安装Java环境

    下载

    设置中文编码

    在这里插入图片描述

    启动Jmeter

    ApacheJMeter.jar:图形化启动入口

    jmeter.bat:windows下命令行启动

    jmeter.sh:Linux下命令行启动

    线程组

    进程:进程是系统分配资源的基本单位

    线程:是系统进行运算调度的最小单位,被包含在进程之中,是进程的实际运作单位,一个进程包含一个或多个线程

    线程组:线程组是一组相关线程的集合,可以将多个线程组织在一起进行管理

    线程组可以实现:

    • 统一管理和控制: 线程组可以方便地对一组线程进行管理和控制,例如一次性启动或停止线程组中的所有线程
    • 统一设置: 通过线程组,可以对一组线程的属性进行统一设置,例如设置线程的优先级、名称、守护状态等
    • 统一监控: 线程组可以方便地对一组线程进行监控,例如通过线程组可以获取线程组中所有线程的状态、堆栈信息等
    • 隔离资源: 线程组可以将一组线程隔离在一个独立的资源环境中,避免线程组之间相互干扰
    • 层次结构: 线程组可以形成层次结构,可以有父线程组和子线程组的关系,方便地对线程组进行组织和管理
    并发执行与顺序执行
    • 并发执行

    多个线程同时执行

    • 顺序执行

    多个线程顺序执行

    Jmeter开启和关闭并发执行
    • 选择测试计划 - 独立运行每个线程组

    在这里插入图片描述

    setUp线程组与tearDown线程组

    setUp线程组:最优先执行的线程组

    tearDown线程组:最后执行的线程组

    创建方式

    测试计划 - 添加 - 线程 - setup/teardown

    在这里插入图片描述

    线程组的常用属性

    在这里插入图片描述

    HTTP请求默认值
    • 测试计划 - 添加 - 配置元件 - HTTP请求默认值

    在这里插入图片描述

    用于被复用内容的封装,在后续的http请求中如果不填写参数则使用默认值,一般将该元件放到所有http请求之前

    在这里插入图片描述

    信息头管理器
    • 测试计划 - 添加 - 配置元件 - HTTP信息头管理器

    在这里插入图片描述

    作用:用于向http请求头添加参数

    例如:如果向服务器发送json数据则需要在请求头中设置Content-Type application/json;charset=utf-8

    在这里插入图片描述

    参数化
    用户定义变量

    在这里插入图片描述

    在这里插入图片描述

    CSV文件设置

    在这里插入图片描述

    参考数据

    zss,18,西安
    lis,21,北京
    nana,19,长春
    
    • 1
    • 2
    • 3

    在请求中可以通过${name} ${age} ${address}获取变量的值

    在这里插入图片描述

    用户参数
    • 请求 - 前置处理器 -用户参数

    在这里插入图片描述

    添加用户参数

    在这里插入图片描述

    运行结果

    在这里插入图片描述

    函数

    JMeter为我们提供了一些内置的函数,可以在函数助手选择使用

    在这里插入图片描述

    counter函数

    作用:用于计数

    参数:是否为每个线程分配独立的计数器 存储结果的变量名

    random函数

    作用:生成随机值

    参数:最小值 最大值

    time函数

    作用:返回当前时间值

    参数:格式 如果不设置则返回当前时间戳

    yyyy-MM-dd hh:mm:ss
    
    • 1
    连接数据库

    连接数据库需要引入对应的数据库的连接驱动,可以前往maven仓库进行下载,以mysql为例

    配置依赖

    在这里插入图片描述

    创建数据库连接配置

    在这里插入图片描述

    创建数据库请求

    在这里插入图片描述

    将数据库请求结果携带并搜索

    • JDBC Request为返回的结果设置variable name,这是一个变量名前缀

    • 添加一个调试取样器

    • 添加新的http请求,使用${}携带需要搜索的变量

    在这里插入图片描述

    断言
    响应断言

    对响应的内容进行断言

    在这里插入图片描述

    大小断言

    对响应的各部分内容字节数断言

    在这里插入图片描述

    断言持续时间

    对请求耗时进行断言

    在这里插入图片描述

    逻辑控制器
    IF条件控制器
    • 需要将请求组件拖放至IF控制器下

    在这里插入图片描述

    ForEach控制器
    • ForEach控制器会自动对变量进行遍历,无需手动指定循环次数

    在这里插入图片描述

    循环控制器
    • 用来单独控制请求的循环次数

    在这里插入图片描述

    XPath提取器
    • XPath可以通过指定语法从dom树中获取匹配的结果

    • XPath提取器是后置处理器的一种

    在这里插入图片描述

    正则表达式提取器
    • 使用正则表达式对文本内容进行匹配
    • 是后置处理器的一种

    在这里插入图片描述

    跨线程传值

    要实现跨线程传值需要依赖于两个函数:setPropertie propertie

    • 首先要保障线程组勾选独立运行每个线程组,防止并发

    • 生成setPropertie函数,并添加到BeanShell处理器

      在这里插入图片描述

      在这里插入图片描述

    • BeanShell取样器主要目的是为了执行函数

    • 然后在需要获取变量的地方调用propertie函数
      在这里插入图片描述

    高并发场景测试
    同步定时器与聚合报告

    同步定时器的作用是用来限制同时访问的线程数,等待目标数量的线程准备好之后一起访问服务

    在这里插入图片描述

    在这里插入图片描述

    • 聚合报告的结果比结果树会详细很多,请求耗时、异常等等,这些都不需要手动计算
    高频率场景测试
    什么是QPS?

    QPS全称为Query per Seconds 每秒钟的查询数,每秒钟访问多少次服务器

    常数吞吐量定时器

    在这里插入图片描述

    • 为请求添加常数常数吞吐量定时器

    • 线程组循环次数=每秒钟的访问数量*持续时间

    分布式压测
    环境搭建
    • 在不同的测试机上安装Jmeter
    • 配置基础环境(JDK、Jmeter…)
    • 配置通信
    • 在控制机中设置执行机的IP

    打开Jmeter/bin/jmeter.properties,设置remote_host=执行机A的IP:端口号,执行机B的IP:端口号…

    在这里插入图片描述

    在执行机和控制机设置禁用SSL为开启状态

    在这里插入图片描述

    启动测试

    在这里插入图片描述

    生成可视化报告
    jmeter -n -t 脚本文件 -l 日志文件 -e  -o 目录
    
    • 1
    参数说明
    • -n:无图形化运行
    • -t:被运行的脚本
    • -l:将运行信息写入日志
    • -e:生成测试报告
    • -o:报告输出目录
  • 相关阅读:
    1438 绝对差不超过限制的最长连续子数组(单调队列)
    Python 学习之路
    虚拟机Linux如何做快照、备份以及快照的使用
    【深度学习】(问题记录)<对一个变量求梯度得到什么>-线性回归-小批量随机梯度下降
    js如何实现选项卡功能
    姓舒男孩名字简单大气,帮你解决起名的烦恼!
    在线问题反馈模块实战(二):封装代码自动生成类文件器
    什么是智能推荐?智能推荐的原理是什么?
    计算机视觉+人工智能面试笔试总结——使用CNN进行图像分类
    windows系统下修改nginx配置后reload重加载后不生效解决方案
  • 原文地址:https://blog.csdn.net/qq_52751442/article/details/134511007