利用JMeter的beanshell进行接口的加密处理

最近项目中在做http协议的接口测试,其中接口请求报文数据有个字段值需要用到加密后的签名,即出于网络传输过程中,对数据安全的考虑,要对请求的数据进行特定的处理(加密),再进行请求。

刚开始由于项目赶进度的需要,选择的做法是:让开发写个加密处理生成请求报文的代码,然后每次测试发送一次请求都用eclipse跑一遍该代码,测试数据的修改也是在代码中变更。这样跑一轮测试下来,测试同事都反映太累了。

jmeter中的BeanShell,可以用来调用我们的工具类对数据进行处理,然后再进行相关的请求。自己刚好以前工作中使用过,于是就利用jmeter的beanshell来解决这个问题。

解决过程:

1、获取对应接口加密的工具类,并生成jar包

这个需要看测试人员是否具有代码查看的权限,如果没有权限,直接要求开发人员把该工具类的代码发过来即可。

在eclipse中建个Java工程,把得到的工具类代码导进去。然后再导出成jar包。

2、把jar包放到${jmeter_home}\lib\ext下

将导出的jar包放到jmeter的lib\ext目录里。也可以不放进该目录,然后在jmeter的测试计划直接引用即可。

3、创建jmeter脚本

在jmeter中创建一个项目,添加一个httprequest,在这个请求里添加一个BeanShell PreProcessor。

在http请求中根据实际情况填写对应的数据:

在BeanShellPreProcessor中导入我们的jar包,BeanShell PreProcessor中的两个方法是我们最常用到的:vars.get(String paramStr)、vars.put(Stringkey,String value),前一个是从jmeter中获得变量值,后一个是将数据存到jmeter变量中。

说明:mac是需要签名加密的字段,在BeanShell PreProcessor中主要是利用加密的工具类对报文进行加密,得到加密后的mac值,然后在接口报文中调用mac即可。

4、执行jmeter脚本

通过上述步骤脚本即可解决接口报文需要进行加密后才发送请求的测试处理。

未加密的请求结果:

利用beanshell加密后的请求结果:

至此,接口请求的加密处理已完成,不仅解决需通过代码生成请求报文的繁琐方法,还可以在此脚本的基础上,实现数据驱动的接口自动化测试,测试小伙伴们就可以愉快的进行测试了。

时间: 2024-07-30 07:04:17

利用JMeter的beanshell进行接口的加密处理的相关文章

jmeter通过BeanShell 脚本,实现对http请求参数的加密

jmeter一直是一款很好的接口和性能测试工具,它是开源的,不需要为此支付任何费用,而且可以下载源码,可以在修改源代码并在此基础上拓展自己的功能或插件,它可以跟ant和jenkins结合起来搭建自己的自动化接口测试框架.它的好还在于它是纯JAVA开发的,因此,它可以更好的跟JAVA对接,通过引入自己封装的jar文件,可以方便的实现对jmeter各种个性化需求的功能的拓展,下面以一个实际例子来说明jmeter怎么引入自己开发的java工具类来实现对http请求参数的加密处理. 在此之前,我们假设有

JMeter用BeanShell获取复杂的JSON串中的某个参数的值

大家好,这篇博文中主要是介绍怎么用JMeter的BeanShell去获取复杂的JSON串中的某个参数的值,这将 便于我们用JMeter做出更完美的自动化测试: 首先有这样一个json串,如下图所示: 如上图中,画红框的部分,参数xsddbh(111807200000645300)的值可知,在下一个接口请求中,需要用到上图中的参数 cpbh(1532048096286)的值,然而参数xsddbh在json串中的每个list都有,那么这时候怎么办呢?在这里我将用alibaba.fastjson 这个

jmeter如何设置登录接口只调用一次以及遇到的问题:cookie参数放在消息头headers里面?

需求前提:我想压测获取产品列表这个接口,但是这个接口依附于sessionid,所以我必须先登录成功,拿到登录接口,但是我只想实现压测获取产品列表这个接口,所以登录没必要登录多次,只需要登录一次就行. 所以Jmeter如何设置登录接口只调用一次开始实施. 解决方法: 方法一.用同一个线程组,用仅一次控制器 是用同一线程组实现的,线程数那里只能设置次数=1,循环次数设置为n次,满足登录只请求1次,获取产品列表接口可以请求n次. 缺点就是线程数那里只能设置1次. 方法二. 跨线程去做,把登录接口单独放

lesson5:利用jmeter来压测消息队列(activemq)

本文讲述了利用jmeter来压测消息队列,其中消息队列采用apache的activemq,jmeter本身是支持符合jms标准消息队列的压测,由于jmeter的官方sampler配置比较复杂,本文直接使用sdk的方式来压测,与生产实际使用更加接近,各位如对官方的sampler感兴趣,可以自行去配置完成. 准备工作:下载activemq 地址:http://activemq.apache.org 本文中的activemq采用的是5.9.0版本. jMetterLessons工程源码地址:https

JMeter中BeanShell实现写入文件

1.首先F:\test.txt文件为空 2.定义JMeter参数 3.编写BeanShell代码 public static void execParam() { String getdata = vars.get("v1"); //vars.get("v1"):意思是获取JMeter的参数值,然后将获取的值赋值给getdata变量 //用以下方式也可以://String getdata = "${v1}"; //String getdata =

lesson4:利用jmeter来压测数据库

本文讲述了如何利用jmeter来压测数据库,事例中选取了mysql作为测试数据库,其它的数据库也是一样,只需要更换驱动程序即可. 准备工作:a.mysql数据库安装,请自行百度:b.jdbc驱动包,请在我的github上下载文件log4jdbc4-1.2beta2.jar .mysql-connector-java-5.1.21.jar :https://github.com/mantuliu/publiclibs 1.首先先将log4jdbc4-1.2beta2.jar .mysql-conn

利用网络短信验证码接口实现手机短信轰炸 (历史代码,贴出学习)

//resource.h //{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // #define IDD_DLG_PROC 101 #define IDR_BIT1 102 #define IDB_BITMAP1 103 #define IDI_ICON1 104 #define IDC_BTN_SEND 1001 #define IDC_LIST_VIEW 1002 #define IDC_EDIT_PH

Jmeter+Maven+Jenkins+Git接口自动化流程

最近在实现 Jmeter+Maven+Jenkins+Git 接口自动化,研究不到两周,实现了 Jmeter+Maven+Jenkins+Git  接口自动化 的整体流程. 仅以此博客简单记录下自己实现的过程. 一. 职责.角色明确 Jmeter: 执行者,录制接口测试脚本,运行脚本,得到结果,生成报告,统计数据: Maven,Git :管理者, Maven 主要负责项目的依赖管理,Git 主要负责项目的代码管理: Jenkins:调度者,持续集成(CI)工具:构建.部署自动化:可以持续编译,运

[SQL Server] 利用透明数据加密(TDE)对整个数据库加密

using TDE encrypt SQL Database 前言 最近客户有需求想避免数据库(.mdf..ldf)被偷走时,数据外泄流出 刚好SQL Server的TDE加密功能满符合需求. TDE透明数据加密会对数据库整个加密,防范目标:有人已偷走数据库,没有凭证&私??的话,在附加数据库或还原备份数据库时就会报错,而没办法看到数据库里的数据. 一般程序存取数据,或用SSMS进入SQL Server里查询数据则是正常使用,无须额外设定 不过得留意Standard版的数据库不支持此功能 支持T