jmeter 发送加密请求 beanshell断言 线程组间传递参数
原文地址https://www.cnblogs.com/wnfindbug/p/5817038.html
最近在做http加密接口,请求头的uid参数及body的请求json参数都经过加密再发送请求,加密方式为:ase256。所以,jmeter发送请求前也需要对uid及json参数进行加密。
我这里是让开发写了个加密、解密的jar,jmeter直接调用这个jar包进行加密、解密。
1、加解密的jar包放到jmeter的lib\ext目录下
2、在测试计划-->Add directory or jar to classpath 添加需要调用的jar包


jmeter调用
import com.changfu.EncryptAndDecryptInterface; #导入加密类
String json_str = "{\"username\":\"amychen02\",\"password\":\"F59BD65F7EDAFB087A81D4DCA06C4910\",\"deviceNo\":\"355848069888942\"}"; #请求的参数
String enpost=EncryptAndDecryptInterface.getEncryptPost(json_str); #将请求参数加密
vars.put("enpost",enpost); #数据存到jmeter变量中

4、请求发送加密码的参数
在http请求-->body data直接使用上一步加密后的参数变量enpost

jmeter bean shell断言加密的响应信息(加密接口测试二)
断言加密的响应信息
1、在http请求-->添加-->断言-->bean shell 断言
import com.changfu.EncryptAndDecryptInterface; //导入jar包的EncryptAndDecryptInterface类
import org.json.JSONObject; //导入
String json_res = prev.getResponseDataAsString(); //获取上个响应信息
String resb = EncryptAndDecryptInterface.getDecrypt(json_res); //调用解密工具解密
vars.put("resb",resb);
log.info("解密后的响应信息json="+resb);
JSONObject resbonseJson = new JSONObject(resb); //解析json
String status_str = resbonseJson.get("status").toString(); //截取status字段值
vars.put("status_str",status_str);
log.info("执行状态="+status_str);
String result = "0";
vars.put("result_str",result);
if (!status_str.equals(result)) { //响应信息的状态值status_str不等于0,则断言其他与实际值不一致
Failure=true;
FailureMessage="statuscode与实际值不一致, 实际值为:"+status_str+", 响应信息: "+resb;
}


jmeter 线程组之间的参数传递(加密接口测试三)
场景测试中,一次登录后做多个接口的操作,然后登录后的uid需要关联传递给其他接口发送请求的时候使用。
1、在登录接口响应信息中提取uid字段值
1>login请求 -->添加 -->后置处理器--> bean shell postprocessor

2,在bean shell postprocessor提取uid
import org.json.JSONArray;
import org.json.JSONObject;
String json_res = prev.getResponseDataAsString(); //获取登录请求的响应信息
String resb = EncryptAndDecryptInterface.getDecrypt(json_res); //调用解密工具解密,对响应信息解密
vars.put("resb",resb);
log.info("解密后的响应信息resb="+resb);
JSONObject data_obj = new JSONObject(resb); //解析json响应信息
String uid_str = data_obj.get("result").get("id").toString(); //截取响应信息中uid的值
props.put("uid_str",uid_str); //将uid_str数据存到变量中,这里用props.put,其他线程组可调用请该变量
log.info("加密前的uid="+uid_str);


需要传递的参数添加到用户参数

3、在另一个线程组接收该变量uid_str
String uid_str = props.get("uid_str"); //获取登录传递的uid_str变量
String enuid=EncryptAndDecryptInterface.getEncryptUID(uid_str); //加密登录返回的uid
vars.put("enuid",enuid);
log.info("加密登录后返回的uid"+enuid);
jmeter 发送加密请求 beanshell断言 线程组间传递参数的更多相关文章
- Jmeter线程组间传递参数
现在做测试和以前不太一样了,以前只要站在一个用户的角度做端到端的UI测试就可以了,现在不会做接口测试,出去都不好意思和别人打招呼.那提到接口测试,就不得不提一下接口测试利器Jmeter,大家也都知道, ...
- Jmeter——如何使得token在各线程组间引用的游刃有余
在以前的博文中,有介绍过,jmeter基本的关联,关联就是将参数在各接口中动态传参,使得接口脚本变得灵活使用,非一次性脚本.今天再来介绍一种jmeter全局变量的设置与使用,可以让脚本运用更丰富,场景 ...
- jmeter线程组之间传递参数
JMeter 变量作用域局限于所属线程.这样设计是经过深思熟虑的,目的是让测试线程能够独立运转.有时候用户可能需要在不同线程间(可能属于同一个线程组,也可能不属于同一个线程组)传递变量. 其中一种方法 ...
- jmeter实现一次登录,多次业务请求(不同线程组间共享cookie和变量)
实现目的 很多时候,在进行性能测试时,需要先登录,然后再对需求的事务进行相关性能测试,此时的登录操作,并不在本次性能测试的范围内,所以我们只需要登录一次,然后获取登录成功后的cookie等,并将coo ...
- jmeter解决不同线程组之间传递参数问题
首先在第一个线程组里讲你需要保存的值放入到jmeter的某个属性中,属性名名字自己定义,如上图的token , props.put("token", token),第二个参数必须是 ...
- Feign发送Get请求时,采用POJO对象传递参数的最终解决方案 Request method 'POST' not supported (附带其余好几个坑)
yml: feign: httpclient: enabled: true properties: #feign feign.httpclient.enabled=true <!-- https ...
- jmeter 发送http请求,并把获取到的请求的订单信息保存到文件中
有一个任务,需要频繁发送订单请求,并分析订单请求中有没有存在重复订单号,思路是用jmeter 发送http请求,使用正则表达式获取到订单号,并把订单号和线程号作为参数提供给java请求,在java请求 ...
- Jmeter发送JDBC请求
下午花了两个小时研究了一下Jmeter发送JDBC请求,现在把基本操作流程分享一下. 做JDBC请求,首先需要两个jar包:mysql驱动-mysql-connector-java-5.1.13-bi ...
- jmeter 不同线程组之间传递变量1
一 采用全局变量在不同线程组之间传递变量的坑 ${__setProperty(newcompanyId,${companyId},)}; 不采用全局变量传递参数,请求报文格式如下: 正确的报文: {& ...
随机推荐
- 泡泡一分钟:Exploiting Points and Lines in Regression Forests for RGB-D Camera Relocalization
Exploiting Points and Lines in Regression Forests for RGB-D Camera Relocalization 利用回归森林中的点和线进行RGB-D ...
- XDOJ 1046 - 高精度模板综合测试 - [高精度模板]
题目链接:http://acm.xidian.edu.cn/problem.php?id=1046 题目描述 请输出两个数的和,差,积,商,取余.注意不要有前导零. 输入 多组数据,每组数据是两个整数 ...
- [No0000132]正确使用密码加盐散列[译]
如果你是一个 web 开发工程师,可能你已经建立了一个用户账户系统.一个用户账户系统最重要的部分是如何保护密码.用户账户数据库经常被黑,如果你的网站曾经被攻击过,你绝对必须做点什么来保护你的用户的密码 ...
- [No0000B6]C#中 ==与equals的区别
using System; internal class Person { public Person(string name) { Name = name; } public string Name ...
- Some untracked working tree files would be overwritten by checkout. Please move or remove them before you can checkout. View them
Some untracked working tree files would be overwritten by checkout. Please move or remove them befor ...
- webstorm 智能提示忽略大小写
setting-Editor-General-Code Completion里的 Case sensitive completion: 可以设置只第一个字母敏感.完全敏感或者不敏感. 选择none.. ...
- The Structure of the Java Virtual Machine Java虚拟机结构 虚拟机内存模型
小结: 1.实现一台Java虚拟机,只需正确读取class文件中的每一条字节码指令且能正确执行这些指令所蕴含的操作. 2.设计者决定:运行时数据区的内存如何布局,选择哪种垃圾收集算法,是否对虚拟机字节 ...
- LeetCode 559 Maximum Depth of N-ary Tree 解题报告
题目要求 Given a n-ary tree, find its maximum depth. The maximum depth is the number of nodes along the ...
- 2018/04/25 PHP7的编译安装
为什么要编译安装? 因为最近要学习 swoole ,想使用目前最新的 PHP7.2.4 ,但是我所在的 Ubuntu-16.04 的 apt 下只有 PHP7.0 的版本. 加上自己也想学习一下源码的 ...
- unity 2d游戏 按y坐标排序子对象
List<Transform> objs = new List<Transform>(); for (int i = 0; i < transform.childCoun ...