Jmeter二次开发实操问题汇总(JDK问题,jar包问题)

前提

之前写过一篇文章:https://qa-lsq.blog.csdn.net/article/details/119782694
只是简单尝试了一下生成一个随机手机号码。
但是如果在工作中一个实际场景要用的二次开发,可能会遇到一些问题。

比如这样一个场景:
Mobile或者前端调用部分接口,比如登录,验证码发送等等,要求手机号,密码,验证码等信息需要加密。
在调用接口时的值是经过加密的值,后端收到相应的信息后再解密。

这就使得在使用jmeter调用接口的时候,需要先把手机号,密码等值在其他地方加密一下,然后再填到jmeter里去,非常麻烦。
Jmeter二次开发就能完美的解决这个问题。

问题1

但在实际操作过程中遇到了一些问题。

首先讲一下环境,公司提供的电脑权限是限制的很死的,我没有权限修改环境变量。
同时java JDK的版本是17,IDEA只能下载社区版。

这就导致一个问题,使用社区版的IDEA创建Maven项目,然后打jar包,一切的做法都是对的,但偏偏打出来的jar包Jmeter无法读取。

原因是创建的maven项目中,pom.xml文件少了如下这段:
在这里插入图片描述

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>7</source><target>7</target></configuration></plugin></plugins></build>

如果少了这段,maven未必能正确支持j你的java版本,打出来的jar包jmeter识别不了。

这边还有一个问题,

<source>7</source>
<target>7</target>

这边我填的是7,不是17
因为经过确定的尝试,填17打出来的jar包jmeter也无法识别,需要填写低版本
我推测是因为我使用的jmeter版本较低的原因,与高版本的java JDK不兼容。

问题2

我之前尝试的是生成随机手机号码,这个函数非常简单,不需要特别的jar包支持。
仅需二次开发所必须的一些jar包,如下:
在这里插入图片描述

这些jar包在下载好的meter里都会自带的。

但如果我要实现其他的功能,需要另外的jar包支持呢。
我贴一下此次二开的加密代码,密钥用XXXXXXXXX替换:

package org.examples.functions;import cn.hutool.crypto.Mode;
import cn.hutool.crypto.symmetric.AES;
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.functions.AbstractFunction;
import org.apache.jmeter.functions.Function;
import org.apache.jmeter.functions.InvalidVariableException;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.util.JMeterUtils;
import org.bouncycastle.jce.provider.BouncyCastleProvider;import java.security.Security;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;public class EcbEncryFunctionsAA extends AbstractFunction {//密钥private static final String ACE_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXX";private static final String key = "__ecbEncryptfunctions";private static final List<String> desc = new LinkedList<String>();private static String middleString = "";static{desc.add(JMeterUtils.getResString("Name of encrypt String using ECB"));}//    public static void main(String[] args) {
//        System.out.println(aesEncryptPKCS7Padding("13944566740"));
//    }@Overridepublic String execute(SampleResult sampleResult, Sampler sampler) throws InvalidVariableException {Security.addProvider(new BouncyCastleProvider());
//        String ecb_key = ACE_KEY;String padding="PKCS7Padding";AES aes = new AES(Mode.ECB.name(),padding, ACE_KEY.getBytes());// 加密并进行Base转码String encrypt = aes.encryptBase64(middleString);return encrypt;}@Overridepublic void setParameters(Collection<CompoundVariable> collection) throws InvalidVariableException {if (collection.size() != 1) {throw new InvalidVariableException("Expected 1 parameter, but got " + collection.size());}CompoundVariable parameter = collection.iterator().next();middleString = parameter.execute();}//    private static String aesEncryptPKCS7Padding(String text) {
//        Security.addProvider(new BouncyCastleProvider());
//        String ecb_key = ACE_KEY;
//        String padding="PKCS7Padding";
//        AES aes = new AES(Mode.ECB.name(),padding, ecb_key.getBytes());
 加密并进行Base转码
//        String encrypt = aes.encryptBase64(text);
//        return encrypt;
//    }@Overridepublic String getReferenceKey() {return key;}@Overridepublic List<String> getArgumentDesc() {return desc;}
}

这段加密需要两个jar包支持
在这里插入图片描述

经过测试,这段加密代码可用,而且打包之后可以在jmeter的函数助手里看见这个函数
但是在实际调用这个函数的时候jmeter会报错:
在这里插入图片描述

意思是没有相应的jar包支持

这边需要把所有依赖的jar包同样放到lib/ext/下
这边需要把所有依赖的jar包同样放到lib/ext/下
这边需要把所有依赖的jar包同样放到lib/ext/下

maven下载的jar包在.m2文件下,这边不多解释
在这里插入图片描述

解决这些问题之后,我的加密就可以在jmeter里使用了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/326294.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux内核(1)-内核目录介绍,每个人都应该了解的内核目录结构

1.总览 2.详解 arch目录&#xff1a;架构相关目录&#xff0c;例如arm、arm64 arch/arm/configs&#xff1a;不同平台的默认配置文件&#xff0c;例如xxx_defconfig arch/arm/boot/dts&#xff1a;设备树文件 arch/arm/boot&#xff1a;编译出的Image和zImage Linux镜像文件 …

ubuntu 22 virt-manger(kvm)安装winxp; ubuntu22体验 firebird3.0

安装 、启动 virt-manager sudo apt install virt-manager sudo systemctl start libvirtdsudo virt-manager安装windowsXP 安装过程截图如下 要点1 启用 “包括寿终正寝的操作系统” win_xp.iso 安装过程 &#xff1a; 从winXp.iso启动, 执行完自己重启从硬盘重启&#xff0c…

【AI视野·今日CV 计算机视觉论文速览 第280期】Mon, 1 Jan 2024

AI视野今日CS.CV 计算机视觉论文速览 Mon, 1 Jan 2024 Totally 46 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Learning Vision from Models Rivals Learning Vision from Data Authors Yonglong Tian, Lijie Fan, Kaifeng Chen, Dina K…

接口测试用例编写与模板

一、简介 接口测试区别于传统意义上的系统测试&#xff0c;下面介绍接口测试用例和接口测试报告。 二、接口测试用例模板 功能测试用例最重要的两个因素是测试步骤和预期结果&#xff0c;接口测试属于功能测试&#xff0c;所以同理。接口测试的步骤中&#xff0c;最重要的是…

x-cmd pkg | thefuck - 终端命令纠错工具

目录 简介首次用户功能特点规则和即时模式竞品和相关作品进一步阅读 简介 thefuck 是一个终端命令纠错工具&#xff0c;可以帮助您更正先前键入的错误命令。它能纠正绝大部分常见的命令错误&#xff0c;如命令拼写不对、输错命令等。 基本原理&#xff1a;获取您最近执行的一…

适用于生物行业的生信云平台

随着基因检测技术的不断发展&#xff0c;生物信息云平台在基因检测行业的应用越来越广泛。生物信息云平台是一种基于云计算的技术&#xff0c;可以将基因检测数据存储在云端&#xff0c;并通过数据分析、挖掘等技术手段&#xff0c;对基因数据进行处理、分析和解读。 这种技术的…

c++ spdlog日志系统

非常好用的日志系统 最近用oatpp写webapi&#xff0c;但他的日志只是显示在控制台&#xff0c;并不记录到文件。 做接口的&#xff0c;肯定要记录错误日志&#xff0c;好查找问题 于是用spdlog&#xff0c;不用编译dll或lib&#xff0c; include 头文件就直接使用了&#x…

springboot第47集:【思维导图】面向对象,关键字,标识符,变量,数组的使用...

关键字&#xff1a;class,public,static,void等&#xff0c;特点是全部关键字都是小写字母。 image.png image.png 凡是自己起的名字可以叫标识符 image.png image.png image.png image.png 整数类型的使用 image.png image.png image.png 浮点类型 image.png image.png 字符类…

算法日志的存在核心在于搭建自检系统

"相信每一个人执行与日志有关的任务都会遇到这样难题吧&#xff1f;长达几万行的日志&#xff0c;如果我们单纯用肉眼去一个个排查&#xff0c;那么恐怕所耗费的时间是以天为计量单位了。当然这是一种比较夸张的情况&#xff0c;根据我的项目经验&#xff0c;正常情况是十…

【Filament】加载obj和fbx模型

1 前言 3D 模型的常用格式主要有 obj、fbx、gltf 等&#xff0c;Filament 中的 filamesh.exe 工具可以将 obj、fbx 格式转换为 filamesh 格式&#xff0c;然后再加载显示。对于 gltf 格式模型&#xff0c;可以通过 ModelViewer 加载显示&#xff0c;这不在本文的讨论范围内。 1…

原生微信小程序如何动态修改svg图片颜色及尺寸、宽高(封装svgIcon组件)解决ios不显示问题

最终效果 前言 动态设置Svg图片颜色就是修改Svg源码的path中的fill属性&#xff0c; 通过wx.getFileSystemManager().readFile读取.xlsx文件 ios不显示需要把encoding设置 binary 把文件转成base64 封装svg-icon组件 1、在项目的components下新建svg-icon文件夹&#xff0c;新…

基于生物地理学算法优化的Elman神经网络数据预测 - 附代码

基于生物地理学算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于生物地理学算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于生物地理学优化的Elman网络5.测试结果6.参考文献7.Matlab代码…