首页 > 系统相关 >jmeter_BeanShell脚本&通过BeanShell进行加解密方法

jmeter_BeanShell脚本&通过BeanShell进行加解密方法

时间:2024-02-20 15:44:36浏览次数:40  
标签:Java 加解密 jar BeanShell 加密 jmeter beanshell

BeanShell脚本

BeanShell简介:

BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些 语法和方法;

BeanShell是一种松散类型的脚本语言;

BeanShell是用Java写成的,一个小型的、免费的、可以下载、嵌入式的 Java源代码解释器,具有对象脚本的特性;

BeanShell可以执行标准Java语句和表达式,以及另外自身的一些脚本命令 和语法。

Jmeter中的BeanShell组件

定时器:BeanShell Timer
前置处理器:BeanShell PreProcessor
采样器:BeanShell Sampler
后置处理器:BeanShell PostProcessor
断言:BeanShell Assert
监听器:BeanShell Listener

BeanShell常用内置变量

log:写入信息到jmeter.log,使用方法:log.info(“hello,world”),也可以在 jmeter gui上看到打印的信息。

注意:如果想在jmeter工具中看到打印的日志;点击jmeter——选项——日志查看

示例:

 

vars:操作jmeter变量,这个变量实际上引用了Jmeter线程中的局部变量容器 (本质是map),测试用例可以通过它获取到变量的值

1、vars.get(String key),从jmeter中获得变量值

示例:

 

 

2、vars.put(String key, String value),数据存到jmeter变量中

示例:

 

 

 props:该变量引用jmeter的配置信息,可以获取jmeter的属性(jmeter属性为全局变量),用法如下:
1、props.get(String key) 获取jmeter.properties中的属性值

 2、props.put(String key, String value) 设置jmeter.properties中的属性值(不常用,且没必要,因为不会实际调整文件内的值)

 

prev(对应SampleResult):获取前面Sampler返回的信息,常用方法:
1、getResponseDataAsString(),获取响应信息
2、getResponseCode(),获取响应Code
3、getResponseMessage(),获取响应信息

示例:

 

BeanShell 调用java源码

方式一、通过 beanshell sampler 直接执行 Java 编码

示例:

 

方法二:引入外部 Java 源码文件

外部java文件内容如下:

 beanshell引入代码如下

 

方法三:引入外部class文件

 

注意事项:
1、class_path可以不是绝对上级路径,只需要包含.class文件即可
如 /Users/xiaoming/workspace/demo139/
2、class_path一般不能包含包名对应的目录路径
如 /Users/xiaoming/workspace/demo139/bin/com/test
否则可能会报错
Error invoking bsh method: eval CreateFile (wrong name: ***/***)

方法四:引入外部jar包(推荐常用)
1、在eclipse\IDEA中把所需的java文件打包成jar文件,比如Calc.jar
2、方式一:把Calc.jar文件放置到JMeter安装目录->lib目录下
  方式二:在测试计划界面的添加目录或jar包到classpath处点击浏览,找到对应的jar包加载进去
4、直接在beanshell中导入应用即可(如果执行错误,把jmeter重启一下)

方式一的示图:

 

  方式二的示图:

 

 

beanshell企业实战

备注:在上一家公司的经历,一个web网站,密码进行加密传输,通过和开发沟通了解到密码是通过MD5加密的,开发人员对密码加密的逻辑是MD5加密后的字符串的前后各加三个任意字符,后台只对前后三个任意字符的中间字符串进行解密,来达到密码加密的逻辑;所以遇到密码加密的情况,需要和开发沟通了解加密的逻辑是怎么样的,才能做接口自动化测试;(或者偷懒的方式通过手动登录获取token,把token放到header里面)

1、从开发处获取jar包,先在eclipse中使用jar包检查每一个小功能(咨询开发·加解密函数名称以及如何传参)。

非对称加密的jar包地址:

链接:https://pan.baidu.com/s/1AANpGTJbcUX4bhhMkwPNKA
提取码:ztut

2、把jar包导入到jmeter(一般通过测试计划导入jar包)

 3、导入jar包后在beanshell中编写代码测试是否可以把图中的"123456"进行加密;

 4、查看日志;日志中指定的值进行的加密,说明代码测试成功

 

5、在beanshell中一般使用: 调用jar包时一般和 vars.get,vars.put结合使用,在下面的请求中·使用$变量名1},${变量名2}

 通过察看结果树中的调试取样器可看到加密后的值;如下图:

 

标签:Java,加解密,jar,BeanShell,加密,jmeter,beanshell
From: https://www.cnblogs.com/datacenter/p/18023254

相关文章

  • JMeter中Sample time、Load time、Response time、Latency time、Connection time的区
    转载自:https://www.cnblogs.com/youxin/p/8684891.html ==================  jmeter是一款纯java的性能测试工具,跨平台运行方便、提供图形化界面设置、简单易用。  在性能测试方法论中,很典型的方法就是二八原则,量化业务需求。二八原则:指80%的业务量在20%的时间里完......
  • 基于chaos混沌的彩色图像加解密系统matlab仿真
    1.算法运行效果图预览 2.算法运行软件版本matlab2022a 3.算法理论概述      基于混沌(Chaos)的彩色图像加解密系统是一种新型的图像加密技术,它利用了混沌理论的特性来提供高度安全的图像加密。下面将详细介绍这种系统的原理、数学公式和实现过程。 3.1混沌理论......
  • JMeter 进行UDP压力测试
    第一步:安装udp插件第二步:添加线程组,然后按下添加UDP请求设置如下配置你要测试的服务器IP和端口。按照下面的格式输入16进制数数据然后可以开始跑了......
  • Jmeter进行TCP压力测试
    1.启动Jmeter后,在左侧测试计划节点,右键“添加”-》“线程”-》“线程组”2.在新增的线程组节点上。右键“添加”-》“取样器”-》“TCP取样器”3.在线程组节点上,再右键“添加”-》“监听器”-“察看结果树”构建完成后如下图:  4.设置并发相关参数是在线程组中,线程数即为并......
  • 【SpringBootStarter】自定义全局加解密组件
    【SpringBootStarter】目的了解SpringBootStarter相关概念以及开发流程实现自定义SpringBootStarter(全局加解密)了解测试流程优化最终引用的效果:<dependency><groupId>com.xbhog</groupId><artifactId>globalValidation-spring-boot-starter</artifactId>......
  • C++ CryptoPP使用AES加解密
    Crypto++(CryptoPP)是一个用于密码学和加密的C++库。它是一个开源项目,提供了大量的密码学算法和功能,包括对称加密、非对称加密、哈希函数、消息认证码(MAC)、数字签名等。Crypto++的目标是提供高性能和可靠的密码学工具,以满足软件开发中对安全性的需求。高级加密标准(Advance......
  • Jmeter事务控制器
    事务控制器(TransactionController),事务控制器生成一个额外的示例,该示例测量执行嵌套测试元素所花费的总时间GenerateParentSample:生成父例,如果选中则该样本将作为其他样本的父样本生成,如果不选中则该样本将作为独立样本生成Includedurationoftimerandpre-postprocess......
  • liunx环境下部署JMeter压测集群
    一、java环境安装与配置官网下载jdk-15.0.1_linux-x64_bin.tar.gz,上传到liunx服务器(官网跳转)解压文件:tar-xzfjdk-15.0.1_linux-x64_bin.tar.gz,生成文件夹jdk-15.0.1在/usr/目录下创建java文件夹,将jdk-15.0.1移动到java文件夹下注意:移动文件夹需要处于文件存在位......
  • python简单加解密
    有的内容并不怕别人看,但仍想简单加解密一下,可以考虑以下代码:defencrypt(text):encrypted_text=""forcharintext:unicode_value=ord(char)+10#在原有的Unicode值上加上10encrypted_text+=chr(unicode_value)returnencrypted_tex......
  • nodejs中实现sm4加解密
    SM4是中国密码局颁布的一种分组密码算法,也称为国密SM4。它是基于对称密钥加密算法的一种分组密码算法,具有较高的安全性和较快的加密速度。SM4使用128位的密钥和128位的分组进行加密。sm-crypto是一个支持国密SM2、SM3、SM4等算法的Node.js加密库。要使用sm-crypto库......