《基于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的性能测试框架搭建》文末笔者提到了不少待改进之处,如下所示。 Grafana性能图表实时展现,测试过程中需实时截图形成测试报告,不够人性化。解决方案:自动生成测试报告并邮件通知。 Grafana性能图表需测试人员实时监控…...
计算机二进制表示和存储各种数据
目录 计算机二进制是什么 计算机中二进制数作用 不同数据的表示和存储 数字 文字 图片 音频 视频 计算机的中数据的显示和存储 计算机二进制是什么 计算机二进制数:计算机里存储的一切都是以二进制的0和1来表示。二进制是计算机使用的数字编码系统&#x…...
玩机社区 - 2024年最美社区源码开源
玩机社区 - 2024年最美社区源码开源 教程源码文档都内置到压缩包了 https://pan.baidu.com/s/1xwcscTne-JMbmKEntiuAuA?pwd78oi...
Linux系统——面试题分享
目录 1.现在给你三百台服务器,你怎么对他们进行管理? 2.简述 raid0 raid1 raid5 三种工作模式的工作原理及特点 2.1RAID 0 ——可以是一块盘和 N 个盘组合 2.2RAID 1 ——只能2块盘,盘的大小可以不一样,以小的为准 2.3RAID 5 …...
谈恋爱没经验?那就来刷谈恋爱经验宝宝吧
❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作…...
element-ui输入框和多行文字输入框字体不一样解决
element-ui的type"textarea"的字体样式与其他样式不同 <el-input type"textarea"></el-input> <el-input ></el-input>设置: .el-textarea__inner::placeholder {font-family: "Helvetica Neue", Helvetic…...
(Java企业 / 公司项目)配置Linux网络-导入虚拟机
公司给了我一个IP地址 ,提供了一个虚拟机或者自己搭建虚拟机,还有提供登录的账号密码 可以查看我之前的文章 VMware Workstation Pro 17虚拟机超级详细搭建(含redis,nacos,docker, rabbitmq,sentinel&…...
java的unsafe
在Java中,sun.misc.Unsafe 是一个强大且危险的类,它提供了一些直接操作内存、对象和线程的底层功能。这个类通常不鼓励普通开发者使用,因为它绕过了Java语言的一些安全性和内存管理机制,可能会导致难以追踪的错误和安全漏洞。 Un…...
起底震网病毒的来龙去脉
2010年,震网病毒被发现,引起世界哗然,在后续的10年间,陆陆续续有更多关于该病毒的背景和细节曝光。今年,《以色列时报》和《荷兰日报》又披露了关于此事件的更多信息,基于这些信息,我们重新梳理…...
[杂项]优化AMD显卡对DX9游戏(天谕)的支持
目录 关键词平台说明背景RDNA 1、2、3 架构的显卡支持游戏一、 优化方法1.1 下载 二、 举个栗子(以《天谕》为例)2.1 下载微星 afterburner 软件 查看游戏内信息(可跳过)2.2 查看D3D9 帧数2.3 关闭游戏,替换 dll 文件2…...
服务器没有图形界面没有显示器怎么办
可以用vnc。 vnc是开元的。什么是vnc? 使用vnc 下载vnc和vncserver命令。 每生成一个图形界面就叫做开启session会话。 vnc相关命令: start a new session: vncserver。 如果没有会话,一般从:1开始 端口5901 vncserver :2 #指定会话为:2 端…...
标准化软件实施方案(直接套用即可)
软件实施方案 二、 项目介绍 三、 项目实施 四、 项目实施计划 五、 人员培训 六、 项目验收 七、 售后服务 八、 项目保障措施 软件开发全套资料获取:(本文末个人名片也可直接获取)软件开发全套资料_数字中台建设指南-CSDN博客 软件产品&am…...
云和恩墨海外首秀在吉隆坡召开的2024中国智能科技与文化展览会
作为中马建交50周年官方重点推荐的活动之一,2024中国智能科技与文化展览会(第四届)于5月20至21日在毗邻吉隆坡双子塔的吉隆坡国际会展中心举办。本次展览会获得马来西亚科学技术创新部、马来西亚通讯部、中国驻马来西亚大使馆和马来西亚中华总…...
什么是react
React 是一个用于构建用户界面的 JavaScript 库,由 Facebook(现在的 Meta)开发和维护。它首次发布于2013年,并迅速成为最受欢迎的前端库之一。React 的主要目标是提供一种高效、灵活的方式来构建用户界面,特别是在大型…...
EPIC免费领取《骑士精神2》 IGN9分神作骑士精神2限时免费领
EPIC免费领取《骑士精神2》 IGN9分神作骑士精神2限时免费领 最近Epic一直为玩家们送出各种游戏,从《龙腾世纪审判》到《模拟农场22》,而就在今天,epic又为玩家们送出了IGN评分9分高分的骑士精神2.这款游戏,该游戏是一款由Tripwir…...
【Linux】icmp_seq=1 Destination Host Unreachable
执行ping 命令提示:From 192.168.XX.XX icmp_seq1 Destination Host Unreachable 这个错误消息通常表示以下几种情况之一: 网络连接问题:目标主机可能没有连接到网络,或者网络中的某个路由器无法将数据包转发到目标主机。 目标主…...
java性能优化
系列文章目录 文章目录 系列文章目录前言一、Java后端服务接口性能优化建议1.Java后端服务接口性能优化建议2.如何避免大量创建对象 二、使用步骤1.引入库2.读入数据 前言 提示:这里可以添加本文要记录的大概内容: 一、Java后端服务接口性能优化建议 …...
Apache JMeter操作
中文-新建组配置 测试计划界面介绍 异常信息 右上角那个小三角可以看到jemter的执行信息,如果你的压测执行不了可以去里面看看一般是报错了 用户自定义变量 可以在这里配置压测的全局变量,这样我们在使用的时候就不用传具体的值,传变量的…...
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无法登录,提示服务器断开连接。(已解决)
坐标福建,近一两个月todesk手机端均无法登录,尝试卸载重装,更新等,均无效。也没搜索到有效的解决方案,今天去看了商店的低星评论,发现是针对福建地区的服务器“维护”,考虑到近期复杂的国际形势…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章 摘要: 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言,受限于 C 语言本身的内存安全和并发安全问题,开发复杂模块极易引入难以…...
【java面试】微服务篇
【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...
