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

《基于Jmeter的性能测试框架搭建》改进一

 

《基于Jmeter的性能测试框架搭建》文末笔者提到了不少待改进之处,如下所示。

  • Grafana性能图表实时展现,测试过程中需实时截图形成测试报告,不够人性化。
    解决方案:自动生成测试报告并邮件通知。

  • Grafana性能图表需测试人员实时监控,人力成本较高。
    解决方案:自动生成测试报告并邮件通知。

  • 多脚本构建的话,无法区分Grafana展现的性能图表对应哪个脚本。
    解决方案:传参区分脚本,并生成每个接口对应的测试报告。

  • 如果考虑持续监控,可加入预警功能。
    解决方案:依赖Grafana的预警功能。

  • 未能自动生成测试报告。
    解决方案:自动生成测试报告并邮件通知。

  • 需登录jenkins停止脚本构建,操作不够便利。
    解决方案:前端增加停止构建操作。

  • 每次只能提交一个脚本进行构建。
    解决方案:支持批量构建。

结合笔者所在项目组现状,优先解决了以下几个问题。

本期改进

1、多脚本构建的话,无法区分Grafana展现的性能图表对应哪个脚本。

最终解决方案将脚本名称写入influxdb库,然后再通过Grafana配置读取。

  • 创建influxdb数据库interfaceName并插入数据(脚本名称)

<!-- 依赖关系 --><dependency>      <groupId>org.influxdb</groupId>      <artifactId>influxdb-java</artifactId>      <version>2.5</version></dependency>
//创建数据库,并写入对应脚本的名称    public static void influxdb(String interfaceName) throws Exception {        Map<String,String> configMap = new HashMap<String, String>();        configMap = getProperties("config\\config.properties");        InfluxDBUtil svr = new InfluxDBUtil(configMap.get("Influxdb"))  //对应测试机地址                .setDatabase("interfaceName", "autogen")  //数据库名                .setAuthentication("admin", "admin")      //grafana datasource配置的用户名和密码                .setRetentionPolicy("30m", 1)                .build();
        for (int i = 0; i < 5; i++) {            Map<String, String> tags = new HashMap<String ,String>();            tags.put("system", configMap.get("InfluxdbSystem"));  //对应的应用
            Map<String, Object> fields = new HashMap<String, Object>();            fields.put("interfaceName", interfaceName);           //面板展现的脚本名称
            svr.insert("interface", tags, fields);            System.out.println(i);        }    }
  • 配置Grafana的datasource。

DataSource配置

  • 配置Grafana面板配置。


    面板配置

  • 执行压测小工具提交脚本,展现性能数据(注意图二展现了脚本名称)。


压测小工具


性能图表

2、需登录jenkins停止脚本构建,操作不够便利。

最终解决方案:无需解决,测试人员需登录jenkins查看构建日志,分析构建结果。

构建日志

3、每次只能提交一个脚本进行构建。

最终解决方案多脚本提交时,jenkins按脚本提交的先后顺序排队构建。
同一套压测环境,为了保证单个接口压测的准确性,笔者并不建议并行构建多个接口,可以通过压测小工具提交脚本串行构建。


​​​​

jenkins构建

触发Jenkins构建扩展

除了《基于Jmeter的性能测试框架搭建》提及的webhook,Poll SCM触发jenkins构建,也可以通过curl或jenkins-cli触发构建。

curl命令构建
curl  -i -u 'jenkinsUserName:jenkinsPassword' -X POST -H "$CRUMB" "http://jenkinsurl/jenkins/job/jobName/build?delay=0sec"
jenkins-cli构建
  • 下载jenkins-cli.jar
    通过jenkinsUrl/cli下载对应版本的jenkins-cli.jar。


jenkins-cli.jar下载

  • 通过build命令触发构建

    //触发jenkins构建 configMap = getProperties("config\\config.properties");String jenkinsCliUrl = "lib\\lib\\jenkins-cli.jar";String jenkinsUrl = configMap.get("JenkinsUrl");String jobName = configMap.get("JenkinsJobName");String userName = configMap.get("JenkinsUserName");String password = configMap.get("JenkinsPassword");String commandStr = "java -jar " + jenkinsCliUrl + " -s " + jenkinsUrl + " build " + jobName + " --username " + userName + " --password " + password;Runtime.getRuntime().exec(commandStr); //触发jenkins构建

需要注意的是,通过jenkins-cli方式触发构建,需设置jenkins的全局安全配置为“任何用户可以做任何事(没有任何限制)”或勾选“Allow anonymous read access”,否者会报错。


全局安全配置

  • 更多的命令可通过help或在jenkinsUrl/cli查看

    java -jar jenkins-cli.jar -s http://jenkinsUrl/jenkins/ help


 

可用命令

相关文章:

《基于Jmeter的性能测试框架搭建》改进一

《基于Jmeter的性能测试框架搭建》文末笔者提到了不少待改进之处&#xff0c;如下所示。 Grafana性能图表实时展现&#xff0c;测试过程中需实时截图形成测试报告&#xff0c;不够人性化。解决方案&#xff1a;自动生成测试报告并邮件通知。 Grafana性能图表需测试人员实时监控…...

计算机二进制表示和存储各种数据

目录 计算机二进制是什么 计算机中二进制数作用 不同数据的表示和存储 数字 文字 图片 音频 视频 计算机的中数据的显示和存储 计算机二进制是什么 计算机二进制数&#xff1a;计算机里存储的一切都是以二进制的0和1来表示。二进制是计算机使用的数字编码系统&#x…...

玩机社区 - 2024年最美社区源码开源

玩机社区 - 2024年最美社区源码开源 教程源码文档都内置到压缩包了 https://pan.baidu.com/s/1xwcscTne-JMbmKEntiuAuA?pwd78oi...

Linux系统——面试题分享

目录 1.现在给你三百台服务器&#xff0c;你怎么对他们进行管理&#xff1f; 2.简述 raid0 raid1 raid5 三种工作模式的工作原理及特点 2.1RAID 0 ——可以是一块盘和 N 个盘组合 2.2RAID 1 ——只能2块盘&#xff0c;盘的大小可以不一样&#xff0c;以小的为准 2.3RAID 5 …...

谈恋爱没经验?那就来刷谈恋爱经验宝宝吧

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。2022年度博客之星评选TOP 10&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作…...

element-ui输入框和多行文字输入框字体不一样解决

element-ui的type"textarea"的字体样式与其他样式不同 <el-input type"textarea"></el-input> <el-input ></el-input>设置&#xff1a; .el-textarea__inner::placeholder {font-family: "Helvetica Neue", Helvetic…...

(Java企业 / 公司项目)配置Linux网络-导入虚拟机

公司给了我一个IP地址 &#xff0c;提供了一个虚拟机或者自己搭建虚拟机&#xff0c;还有提供登录的账号密码 可以查看我之前的文章 VMware Workstation Pro 17虚拟机超级详细搭建&#xff08;含redis&#xff0c;nacos&#xff0c;docker, rabbitmq&#xff0c;sentinel&…...

java的unsafe

在Java中&#xff0c;sun.misc.Unsafe 是一个强大且危险的类&#xff0c;它提供了一些直接操作内存、对象和线程的底层功能。这个类通常不鼓励普通开发者使用&#xff0c;因为它绕过了Java语言的一些安全性和内存管理机制&#xff0c;可能会导致难以追踪的错误和安全漏洞。 Un…...

起底震网病毒的来龙去脉

2010年&#xff0c;震网病毒被发现&#xff0c;引起世界哗然&#xff0c;在后续的10年间&#xff0c;陆陆续续有更多关于该病毒的背景和细节曝光。今年&#xff0c;《以色列时报》和《荷兰日报》又披露了关于此事件的更多信息&#xff0c;基于这些信息&#xff0c;我们重新梳理…...

[杂项]优化AMD显卡对DX9游戏(天谕)的支持

目录 关键词平台说明背景RDNA 1、2、3 架构的显卡支持游戏一、 优化方法1.1 下载 二、 举个栗子&#xff08;以《天谕》为例&#xff09;2.1 下载微星 afterburner 软件 查看游戏内信息&#xff08;可跳过&#xff09;2.2 查看D3D9 帧数2.3 关闭游戏&#xff0c;替换 dll 文件2…...

服务器没有图形界面没有显示器怎么办

可以用vnc。 vnc是开元的。什么是vnc&#xff1f; 使用vnc 下载vnc和vncserver命令。 每生成一个图形界面就叫做开启session会话。 vnc相关命令&#xff1a; start a new session: vncserver。 如果没有会话&#xff0c;一般从:1开始 端口5901 vncserver :2 #指定会话为:2 端…...

标准化软件实施方案(直接套用即可)

软件实施方案 二、 项目介绍 三、 项目实施 四、 项目实施计划 五、 人员培训 六、 项目验收 七、 售后服务 八、 项目保障措施 软件开发全套资料获取&#xff1a;&#xff08;本文末个人名片也可直接获取&#xff09;软件开发全套资料_数字中台建设指南-CSDN博客 软件产品&am…...

云和恩墨海外首秀在吉隆坡召开的2024中国智能科技与文化展览会

作为中马建交50周年官方重点推荐的活动之一&#xff0c;2024中国智能科技与文化展览会&#xff08;第四届&#xff09;于5月20至21日在毗邻吉隆坡双子塔的吉隆坡国际会展中心举办。本次展览会获得马来西亚科学技术创新部、马来西亚通讯部、中国驻马来西亚大使馆和马来西亚中华总…...

什么是react

React 是一个用于构建用户界面的 JavaScript 库&#xff0c;由 Facebook&#xff08;现在的 Meta&#xff09;开发和维护。它首次发布于2013年&#xff0c;并迅速成为最受欢迎的前端库之一。React 的主要目标是提供一种高效、灵活的方式来构建用户界面&#xff0c;特别是在大型…...

EPIC免费领取《骑士精神2》 IGN9分神作骑士精神2限时免费领

EPIC免费领取《骑士精神2》 IGN9分神作骑士精神2限时免费领 最近Epic一直为玩家们送出各种游戏&#xff0c;从《龙腾世纪审判》到《模拟农场22》&#xff0c;而就在今天&#xff0c;epic又为玩家们送出了IGN评分9分高分的骑士精神2.这款游戏&#xff0c;该游戏是一款由Tripwir…...

【Linux】icmp_seq=1 Destination Host Unreachable

执行ping 命令提示&#xff1a;From 192.168.XX.XX icmp_seq1 Destination Host Unreachable 这个错误消息通常表示以下几种情况之一&#xff1a; 网络连接问题&#xff1a;目标主机可能没有连接到网络&#xff0c;或者网络中的某个路由器无法将数据包转发到目标主机。 目标主…...

java性能优化

系列文章目录 文章目录 系列文章目录前言一、Java后端服务接口性能优化建议1.Java后端服务接口性能优化建议2.如何避免大量创建对象 二、使用步骤1.引入库2.读入数据 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 一、Java后端服务接口性能优化建议 …...

Apache JMeter操作

中文-新建组配置 测试计划界面介绍 异常信息 右上角那个小三角可以看到jemter的执行信息&#xff0c;如果你的压测执行不了可以去里面看看一般是报错了 用户自定义变量 可以在这里配置压测的全局变量&#xff0c;这样我们在使用的时候就不用传具体的值&#xff0c;传变量的…...

el-table 划入划出方法

<template><div><el-table :data"tableData" style"width: 100%" cell-mouse-enter"handleMouseEnter" cell-mouse-leave"handleMouseLeave"><el-table-column prop"ddd" label"日期2" widt…...

Todesk无法登录,提示服务器断开连接。(已解决)

坐标福建&#xff0c;近一两个月todesk手机端均无法登录&#xff0c;尝试卸载重装&#xff0c;更新等&#xff0c;均无效。也没搜索到有效的解决方案&#xff0c;今天去看了商店的低星评论&#xff0c;发现是针对福建地区的服务器“维护”&#xff0c;考虑到近期复杂的国际形势…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章

用 Rust 重写 Linux 内核模块实战&#xff1a;迈向安全内核的新篇章 ​​摘要&#xff1a;​​ 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言&#xff0c;受限于 C 语言本身的内存安全和并发安全问题&#xff0c;开发复杂模块极易引入难以…...

【java面试】微服务篇

【java面试】微服务篇 一、总体框架二、Springcloud&#xff08;一&#xff09;Springcloud五大组件&#xff08;二&#xff09;服务注册和发现1、Eureka2、Nacos &#xff08;三&#xff09;负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...