利用Jmeter对禅道进行性能测试

2023-11-01

前言

jmeter工具的学习和使用

一、背景

前段时间没事,自己在虚拟机上搭建了一个禅道环境,并在外机上安装jmeter,编写脚本对禅道进行简单的性能测试。

二、操作步骤

1.环境搭建

  • 1.1、禅道环境搭建:本地电脑安装VMware Workstation Pro虚拟机管理软件,然后在软件上安装一台window虚拟机。在禅道管网下载禅道安装包(注意:需要下载windows的开源版本),下载后解压到本地,并启动应用:
    禅道项目启动

  • 1.2、jmeter下载:在外机上下载jmeter,下载地址:https://jmeter.apache.org,下载后,可直接解压则可以正常使用。

  • 1.3、jmeter环境变量配置:第一步:在系统变量-新建JMETER_HOME(全部大写)环境变量,变量值为JMeter解压后的路径,值(例如):C:\jmeter\apache-jmeter-5.5。第二步:在系统变量中,双击classpath变量在值后面加上%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar; 点击确定。第三步:在系统变量中,双击“Path”变量,新建添加内容“%JMETER_HOME%\bin”,点击确定。
    jmeter环境变量配置

  • 1.4、jmeter环境配置是否成功检测:打开cmd,输入jmeter,如果可成功打开jmeter,则环境配置成功。

  • 1.5、Java环境下载:打开java官网地址可下载(前提需要注册一下):https://www.oracle.com/java/technologies/downloads/#java8-windows,选择windows64版本下载即可,下载成功后,一直点击下一步即可成功安装(注意:安装时,要把java的安装路径记下来,后面环境配置需要用到)

  • 1.6、Java环境配置:第一步:系统变量下,新建JAVA_HOME,值是java安装的根路径,例如:D:\java\jdk1.8.0_361,第二步:新建CLASSPATH,(如果有的话,就不要新建了),在其值下面加上次值:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;第三步:在系统变量path后面加上值:%JAVA_HOME%\bin、%JAVA_HOME%\jre\bin。
    环境配置

  • 1.7、Java环境配置是否成功检测:打开cmd,输入Java - version,可正常输入java版本信息,则表示java配置成功。

2.jmeter测试禅道接口脚本编写

2.1、fiddle抓取接口信息,并于jmeter进行单接口联调:在虚拟机环境下,打开禅道环境,访问禅道官网,第一步:利用fiddle抓包工具,抓取禅道登录接口信息,将接口地址,请求头信息,请求的用户参数,和content-type类型等信息记录下来。第二步:在外机上打开jmeter,新建测试计划,计划下新增线程组,线程组下新建请求,新增查看结果树,新增消息头管理器。第三步:将fiddle抓去到的信息,填写到jmeter新增的配置原件下,点击启动,进行单接口联调。
2.2、正则表达式提取Cookid,进行参数传递:登录接口发送成功后,响应头中返回了Cookid,可利用新增正则表达式提取器来提取。
2.3、正则表达式参数讲解(延申内容):
正则表达式一般是把你需要提取的信息全部填上,然后在把你想要提取的信息,一般换成(.*?). 表示匹配任何字符,✳表示任意个字符,?表示不要太贪婪,在找到第一个匹配项后停止。
模板:表示取第几个值,$-1$表示取所有值,$0$表示随机取值,$1$表示取第一个值,$2$表示取第二个值
匹配数字: 0表示随机取值, 1代表全部取值。
缺省值:如果正则表达式取不到值,则使用此缺省值。
正则表达式

2.4、怎样检测正则表达式提取的信息是否拿到:可以新增原件Debug Sample(调试取样器),里面参数一般不用做改变。
2.5、JSON提取器使用(延申内容):除了利用正则表达式,一般也可以用,JSON提取器。JSON提取器一般用在返回信息是json格式,用的时候一般用 . .来根据树形结构来提取字段信息,如果多个字段在一个节点,则需要用[]切片加序号来提取信息。
2.6、不同线程之间传递Cookid:登录线程提取Cookid值后,可通过添加BeanShell后置处理器,通过函数来把局部变量设置为全部变量,如:${__setProperty(全局变量名,${局部变量名},)}; ,在其他线程中使用时候,用法为:${__P(全局变量名)}; ,这样则可成功在不同线程组之间传递变量信息。
BeanShell后置处理器设置全局变量

2.7、登录线程只登录一次控制:第一种方法:添加setup线程组,将登记接口放到次线程下,线程循环次数改为一次,则可控制登录接口只执行一次,且每次都是先执行。第二种方法:在同一个线程组中时,可以先添加循环控制器,把所有的请求放到循环控制器下面,然后再添加仅一下控制器,把登录请求放到此控制下,则可做到登录请求只执行一次。
2.8、多线程、多请求执行顺序:第一:除了setup每次都是最先执行的线程,teardown每次都是最后执行的线程外,其他线程都是排在前面的先执行,排在后面后执行。第二:在一个线程组下有多个请求,则需要在线程组下面添加逻辑控制器Critical Section Controller,再把多个请求按执行顺序放到逻辑控制器下面,那么多个请求并发操作时候,则会按顺序执行请求。
**

3.jmeter脚本执行

**
3.1、图形化模式下执行:这种模式下执行,没什么说的,就是打开jmeter,打开编写的脚本文件,选择你需要执行测试计划,或者某个线程组,点击执行按钮,等待程序执行完成,查看添加的监听器,如查看结构树,聚合报告来看一下接口执行的基本信息,一般在脚本调试阶段会在此模式下运行脚本。

3.2、非图形化模式下执行:保证jmeter已配置了系统变量,如在windows下,可输入cmd,打开doc窗口,输入jmeter的运行命令,如:jmeter –n –t D:\test01.jmx –l D:\html\csvlog.log –e –o D:\html\Report,-n -t D:\test01.jmx ,表示执行jmeter的脚本文件,–l D:\html\csvlog.log,表示将执行jmeter的脚本文件记录并输出log文件, –e –o D:\html\Report,表示将执行jmeter的脚本生成html文件,html文件里面记录了像,接口运行中的参数信息,如接口运行错误率,吞吐量,响应时间,等等。正常做性能测试,都会在非图形化模式下运行的,因为图形化运行脚本,也为打开jmeter软件也有资源消耗,这样对接口性能测试有一定影响。
生成的html页面信息


总结

以上就是今天要讲的内容,本文仅仅简单介绍了jmeter的使用,而jmeter提供了大量函数及其他模块的集成使用,也是值得我们探险和学习。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用Jmeter对禅道进行性能测试 的相关文章

  • JMeter 使用什么 Maven 插件? jmeter-maven-plugin 还是 chronos-jmeter-maven-plugin?

    我需要设置由 CI 系统自动触发运行的性能测试 为此 我想使用 JMeter 因为已经存在一些脚本和经验 并且我想将其与 Maven 结合起来 在我对合理插件的研究过程中 我发现存在两个插件 jmeter maven 插件 http wik
  • 使用Java代码进行Jmeter分布式测试

    我能够使用 Java 代码运行 Jmeter 但如果我想做与分布式测试相同的操作 那么如何在 Java 代码中添加远程引擎 这是一个sample http alvinalexander com java jwarehouse jakarta
  • Jmeter:jmeter中jmeter.sh和jmeter无扩展文件的区别

    我需要澄清 jmeter sh 和 jmeter 文件 不带 ext 它们位于 bin 文件夹中 举例来说 1 如果我在jmeter和jmeter sh文件中设置不同的HEAP大小 将考虑哪一个 2 以上是否取决于我如何运行测试 例如 jm
  • 使用Jmeter调用API时如何传递表单数据?

    我想使用 Jmeter 进行 API 调用 在我的 API 调用中 我发送一个带有请求的文件 我需要将文件名指定为表单数据 e g when I call the same API from postman 当我从 Jmeter 进行上述调
  • JMeter:为单个用户触发多个并发 HTTP 请求

    我有一个带有线程组和 Cookie 管理器的 JMeter 负载测试脚本 线程组中的用户首先使用HTTP采样器登录来获取cookie 然后 循环控制器触发交错采样器 该采样器在几个向服务器发出查询的 HTTP 采样器之间交替 现在 我希望交
  • 负载测试时如何测量CPU和内存

    我们在异构环境中使用 JMeter 并且希望在运行服务或 Web 应用程序的服务器上产生重负载时测量 CPU 和内存 您建议使用什么 是否有任何软件解决方案 开源或商业 可以将 CPU 和内存使用情况记录在文件或数据库中 谢谢你 您可以使用
  • JMeter 在性能测试期间挂起

    我试图模拟 4 个不同用户的 100 个线程请求 所有 97 个请求均已发送和接收 但其余 3 个请求仍显示为正在执行 我必须手动停止 Jmeter 然后只传递剩余的请求 为什么会发生这种情况 您的计算机可能没有资源来执行请求 或者 Jav
  • JMeter 记录使用 HTTPS 的 iOS 本机应用程序会导致 SSL 握手问题

    我有一个用于我们的应用程序的 IPAD 混合应用程序 它会在登录过程中尝试访问我们的 https 服务器 我想使用 JMeter 来记录这个简单的流程 我正在本地计算机上运行 JMeter 代理服务器 我更新了 IPAD 代理详细信息 以便
  • 如何使用 JMeter 发送动态 URL 参数

    我想将 URL PATH 发送为 controller 1 1 controller 2 2 start 但是参数 2controller 2是动态的 如何发送该参数 使参数成为变量 controller 2 controller2 par
  • 负载测试kafka消费者

    我正在编辑问题 因为我认为它不够清楚 如何对我的 kafka 消费者进行负载测试 我看过很多关于 apache kafka 负载测试的文章 但没有一篇关于消费者负载测试的文章 对于前 我在jsr223中编写了jmeter kafka生产者测
  • 将 JMeter 报告转换为 JUnit 报告

    如何将 JMeter 报告转换为 JUnit 报告 有些工具 例如 VSTS 知道如何集成 JUnit 报告 但不知道如何集成 JMeter 报告 尽管它们可以运行 JMeter 我创建了一个 XSLT 将 XML JMeter 报告转换为
  • Jmeter 下降的最佳方法?

    我们都知道 Jmeter 并不是最擅长在运行期间更改活动线程的数量 除非您喜欢并创建以不同时间间隔触发的单独线程组 有没有人想出一个好的解决方案来在测试结束时降低速度 例如 我从 50 个线程开始 在 30 分钟内我想要 0 个活动线程 查
  • 如何让Jmeter识别“localhost”URL?

    如何对只能由我的计算机访问的 localhost url 进行性能测试 我可以使用 jmeter 对 google 等实时网站进行性能测试 但 jmeter 无法检测本地 url 应用程序的 URL 192 168 121 20 80012
  • 分布式模式下的 JMeter 摘要报告

    我正在分布式模式 2个从站 主站 下运行Jmeter性能测试 在我的测试脚本中我配置了摘要 报告应将一些数据保存到 csv 文件 此文件位置配置有固定名称 reports summary csv 值 当我从主站成功连接到两个从站时 测试在从
  • 如何在JMeter中实现pacing?

    我在 jMeter 中模拟以下场景 10 个用户 ThreadGroup 正在登录 每个用户 ThreadGroup 应等待 延迟 10 秒才能启动下一个用户 ThreadGroup 我该如何实施 现在我有这样的事情 线程组 10us Ht
  • foreach 控制器无法正确处理变量

    我试图循环我的用户定义的变量并将它们添加到 cookie 管理器 我的设置方法如下 但是当我查看结果时 它只需要第一个变量并将其用于所有循环 因此 HTTP Cookie 管理器仅替换第一个 var 这种行为是意外的 我是否设置错误 我添加
  • 线程和迭代次数如何影响测试以及 JMeter 的最大值是多少。线程限制

    您能告诉我最大限制吗 我可以在 JMeter 2 4 中使用哪些线程来进行负载测试 在单个循环中采用所有线程或采用更少的线程有什么区别吗 线程数和初始化循环以实现相同的数量 用户 线程 Example No of threads 500 R
  • 如何使用 jmeter 中的 beanshell 预处理器删除空参数

    我正在尝试读取一个包含超过 500 行的 csv 文件 每一行都将作为对 API 的请求 现在我的问题是某些参数有空字符串 我想设置一个条件 以防参数返回空字符串 然后在调用 API 之前从请求正文中预先删除该参数 下面是我的json bo
  • JMeter 负载服务器会影响我的结果吗?

    我正在使用亚马逊 EC2 实例 大型 作为使用 1 000 个线程的负载服务器来运行 JMeter 测试 负载服务器CPU利用率稳定在90 左右 内存利用率稳定在70 是否存在关于负载服务器在什么时候没有足够资源 内存或 CPU 而导致负载
  • Jmeter TCP Sampler - 如何重用线程之间的连接?

    我在 JMeter 的 ThreadGroup 下设置了一个 TCP 采样器 数据是从 CSV 文件中选取的 第一行数据用于认证 后续行为实际参数数据 像下面这样的东西 AAAAAAA21 BBBBBBBCCCCCCCDDDDDDD BBB

随机推荐

  • 简单了解单点登录及实现方案

    代码演示基于springboot 一 单应用单节点登录认证 任何一个应用系统都离不开登录认证过程 实现登录认证主要目的是对系统的权限管理 在单应用单节点下常用做法通常采用session认证机制 其主要流程如下 客户端访问登录接口 传递用户名
  • i219-v不支持服务器,网络适配器中找不到Intel(R) Ethernet Connection I219-V该怎么解决?在虚拟机配...

    是因为网络适配器权限问题 1 打开网络连接 如下图 2 打开本地连接的属性 选择高级菜单 并将Internet连接共享的勾都打上 3 然后选择无线网卡进行专用网络连接 4 设置之后 您可以看到本地连接有一个手形图标 表明它是一个共版享状态
  • 三极管饱和及深度饱和状态的理解和判断!

    三极管饱和问题总结 1 在实际工作中 常用Ib V R作为判断临界饱和的条件 根据Ib V R算出的Ib值 只是使晶体管进入了初始饱和状态 实际上应该取该值的数倍以上 才能达到真正的饱和 倍数越大 饱和程度就越深 2 集电极电阻 越大越容易
  • 单选按钮input[type=radio],加上disabled后按钮颜色失效,始终默认为灰色

    在前端使用单选按钮input type radio 时 渲染后台数据时将单选按钮设为不可修改 给input加上disabled后 按钮颜色变灰 且通过css修改样式也无法改变 通过百度尝试了类似以下方式的几种修改css样式的常用办法解决 但
  • 【Android学习】导入别人的Android项目到AS中

    更新 最好直接导入 有错误再根据对应错误修改 学习阶段 下载学习他人的项目是必不可少的一步 但是新手又常常会遇到各种奇葩的问题 问题不可怕 可怕是自己退缩 总结下自己的一些经验 望对后来的你有所帮助 一 快速更改 在移植别人项目之前 最好先
  • 华为机试题69-矩阵乘法

    描述 如果A是个x行y列的矩阵 B是个y行z列的矩阵 把A和B相乘 其结果将是另一个x行z列的矩阵C 矩阵的大小不超过100 100 输入描述 第一行包含一个正整数x 代表第一个矩阵的行数 第二行包含一个正整数y 代表第一个矩阵的列数和第二
  • 20210220--CTF小笔记之常见的md5碰撞

    欢迎大家一起来Hacking水友攻防实验室学习 渗透测试 代码审计 免杀逆向 实战分享 靶场靶机 求关注 0e开头的md5和原值 QNKCDZO 0e830400451993494058024219903391 s878926199a 0e
  • 小程序内嵌webview实现支付

    点击上方 青年码农 关注 回复 特效源码 可获取各种资料 目前的一个小程序项目需要把客户之前的h5页面嵌入到现在的小程序中 并且之前的支付功能要正常 小程序提供了webview开放能力供我们使用 但是不允许在webview直接调起微信支付
  • 重载的分析

    前言 在c 中 出现重载的概念 其实就是一个高级语言的象征 他的出现就是机器语言更加的自然化 他其实可以理解位我们自然语言中的动词 它可以和不同的名词起到不同的功能 重载 定义 用一个相同的函数名来定义不同的函数 重载的条件 参数的个数不同
  • CMSIS-RTOS的信号量使用备忘

    说明 因为要使用CMSIS RTOS的信号量 所以需要了解以下几点功能 1 接收信号量时 返回值的意思 2 接收信号量时 如果信号量容器不只为一 那么是否可以再次接收到 3 发送信号量是否有限制 带着以上问题做了一个测试程序 例一 程序代码
  • strace ltrace记录

    strace 安装 常用选项 报错 strace trace system calls and signals ltrace A library call tracer 安装 首次使用可能出现这个提示 就是没安装 yum y install
  • ubuntu 远程服务器文件与本地文件互传

    放在这里自学 cite https blog csdn net Iv zzy article details 109412198 1 从服务器下载文件到本地 scp r 远程服务器用户名 远程IP 需要下载的文件路径 本地存放文件路径 2
  • 金融分析与风险管理——资本资产定价模型

    金融分析与风险管理 资本资产定价模型 1 系统性风险与非系统性风险 2 资本资产定价模型 1 系统性风险与非系统性风险 在理论上 股票面临的风险可以抽象的划分为系统性风险与非系统性风险 系统性风险 不可分散风险 也称市场风险 通常是由于公司
  • 数据挖掘十大算法(一):决策树算法 python和sklearn实现

    学完到第三章 决策树 python代码实现的仅是ID3算法 sklearn为优化过的C4 5 这里做一个详细的总结包括 原理 代码 可视化 scikit learn实现 皆为亲自实践后的感悟 以下进入正文 早前简单了解了决策树的原理 然后为
  • clang与gcc的区别

    gcc g 和 clang clang 都是Linux操作系统中常用的C C 编译器 gcc g 是gnu标准下的Linux的编译器 clang是一个C 编写 基于LLVM Low Level Virtual Machine 底层虚拟机 是
  • QT 设置程序图标

    在qt应用程序中 我们能想到的图标一般就以下三种 icon种类 应用窗口左上角的 图标 setWindowIcon 状态栏上显示的图标 setWindowIcon 可执行程序本身的图标 两种设置方式 下面会讲 对于以上三种图标都该怎么样设置
  • 【PTA】判断一个数是否为回文数

    1 题目 如果一个数与它的反转数相等 则该数为回文数 输入一个数 判断是否为回文数 输入格式 输入一个数 输出格式 若XX是回文数 则输出 XX 是回文数 若不是 则输出 XX 不是回文数 输入样例1 6234326 输出样例1 62343
  • radius认证服务器系统,03-Radius认证配置举例

    RADIUS 是一种用于在需要认证其链接的网络访问服务器 NAS 和共享认证服务器之间进行认证 授权和记帐信息的文档协议 RADIUS在运维审计系统中 主要体现的是认证功能 收集RADIUS服务器信息 IP地址 RADIUS端口号 RADI
  • 快速理解python中的可迭代对象、迭代器、生成器

    快速学会python中的可迭代对象 迭代器 生成器 今天周一 又要开始新的一周的学习了 加油鸭 多学一点不吃亏哈哈 迭代 什么是迭代 迭代就是将重复的代码进行执行 处理相似的数据集 并且上一个迭代的结果会给到下一次 作为初始化值进行下一次的
  • 利用Jmeter对禅道进行性能测试

    前言 jmeter工具的学习和使用 一 背景 前段时间没事 自己在虚拟机上搭建了一个禅道环境 并在外机上安装jmeter 编写脚本对禅道进行简单的性能测试 二 操作步骤 1 环境搭建 1 1 禅道环境搭建 本地电脑安装VMware Work