2.4 Jmeter应用进阶二--实际应用 前置处理器:JSR223 PreProcessor设置加密密码

前言:

做市场分析报告云平台的性能测试时,遇到问题:

问题:用户的登录密码加密(但参数化的参数是未加密的)

解决方法:使用前置处理器:JSR223 PreProcessor进行配置password

                  参数化的页面输入的是enPassword(未加密),赋值登录的是:password(加密)

一. 具体解决方法步骤:

  1. 使用” CSV Data Set Config”提取数据password
  2. 在请求:128 /api/getRSAKey 进行数据关联:使用“正则表达式提取器”提取请求中的数据modulus、exponent
  3. 使用前置处理器JSR223 PreProcessor_test 对密码进行加密并输出加密后的密码变量

var rsaKey = new RSAKey();

rsaKey.setPublic(b64tohex(modulus), b64tohex(exponent));

var password = hex2b64(rsaKey.encrypt(enPassword));

   输出变量:vars.put("password",password);

用到的方法:

javaScript脚本:

1. 需要引用js时,把js放入jmeter/bin文件夹里

load("rsa.js");

load("base64.js");

2.需要获取其他变量时,例如moduluskey_g1

2.1、vars.get方式

var modulus=vars.get("moduluskey_g1");

var exponent=vars.get("moduluskey_g2");

备注:javascript的变量需要加:var

2.2、直接读取方式

var modulus="${moduluskey_g1}";

var exponent="${moduluskey_g2}";

3.打印日志

log.info("------------JSR223 PreProcessor test-------------");

log.info(modulus);

log.info(exponent);

log.info("------------JSR223 PreProcessor test-------------");

4.向外输出变量[数据存到jmeter变量中]

vars.put("password",password);

5.加密输入的密码

load("jsbn.js");

load("prng4.js");

load("rng.js");

load("rsa.js");

load("base64.js");

var enPassword=vars.get("password");   //获取密码

var rsaKey = new RSAKey();   //设置对象

rsaKey.setPublic(b64tohex(modulus), b64tohex(exponent));  //设置公钥

var password = hex2b64(rsaKey.encrypt(enPassword));    //加密密码

 

二.JSR223 PreProcessor使用方法

1. log:用来记录日志文件,写入到jmeber.log文件,使用方法:log.info(“This is log info!”);

2. ctx(JmeterContext)通过它来访问context,使用方法可参考:org.apache.jmeter.threads.JMeterContext。

3. vars - (JMeterVariables):操作jmeter变量,提供读取/写入访问变量的方法。这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:

   a) vars.get(String key):从jmeter中获得变量值

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

  c) vars.putObject("OBJ1",new Object());

 4.  props - (JMeterProperties - class Java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。

   a) props.get("START.HMS"); 注:START.HMS为属性名,在文件jmeter.properties中定义

   b) props.put("PROP1","1234");

 5.  prev - (SampleResult):获取前面的sample采样的结果,常用方法:

   a) getResponseDataAsString():获取响应信息

   b) getResponseCode() :获取响应code

更多方法可参考:org.apache.jmeter.samplers.SampleResult

  6.  sampler - (Sampler):gives access to the current sampler 访问当前采样

更多方法可参考:org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy

 

api文档:https://jmeter.apache.org/api/index.html

发布了135 篇原创文章 · 获赞 6 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/fen_fen/article/details/105704080