loadrunner java脚本编写

1.背景:
       最近需要对某个接口进行性能测试,使用原有的性能测试脚本进行压测,发现脚本中没有进行唯一性区分的字段,通讯数据无法重复使用,重复数据发送到服务器后,服务器会判定为重复数据,不处理。
       Loadrunner发送数据为加密数据,解析该数据后发现加密前数据有序列号等信息,为保证loadrunner有足够的数据,需要在loadrunner内实现通讯数据的加密。
2.方案:
1)采用 java vuser脚本,首先提取组合加密前通讯数据,将该数据加密。

2)http发送通讯数据。

3.具体实现:
    1)环境搭建:

1)Loadrunner11只支持1.6以前的版本,安装jdk1.6。

2)替换加密包:替”jdk1.6.0_45\jre\lib\security”内local_policy.jar  US_export_policy.jar,两个jar包用于aes加密。

加密jar文件生成:编写加密程序(主程序代码)

   2)程序编写

  public static String encrypt(String text) throws InvalidAlgorithmParameterException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException, NoSuchPaddingException, NoSuchAlgorithmException {

       byte[] aeskey = Base64.decodeBase64("eXyf6aw52rGisfyrtjnjhHFKT4DttG2rn2sPPb12dOO=");

       byte[] src = text.getBytes();

       byte[] allmsg = new byte[src.length + 20];

       byte[] msgLeng = intToByteArray1(src.length);

       System.arraycopy(aeskey, 0, allmsg, 0, 16);

       System.arraycopy(msgLeng, 0, allmsg, 16, 4);

       System.arraycopy(src, 0, allmsg, 20, src.length);

 

       SecretKey secretKey = new SecretKeySpec(aeskey, 0, 32, "AES");

       Cipher cipher = null;

       cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");

       cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(aeskey, 0, 16));


       byte [] b = cipher.doFinal(allmsg);

       String ret = Base64.encodeBase64String(b);

       return ret;

   }

代码完成后,打成jar包 aes.jar,需要用到jarbcprov-jdk15on-1.54.jarcommons-codec-1.10.jar,根据自己依赖的包进行调整。

将程序加载到脚本中vuser-->runtimesetting-->classpath-->添加依赖jar包。


3)调用

引入


代码里设置为静态变量,可以直接调用:


4) 脚本编写

 Java vuser本身并不支持录制,因此需要将C录制的脚本修改为java语言。

函数

C语言

java

事务

Lr_start_transaction("数据加密"); 

Lr_end_transaction("数据加密",lr.PASS);

 lr.start_transaction("数据加密"); 

lr.end_transaction("数据加密",lr.PASS);

http请求

Web_custom_request

web.custom_request

计时

timer=lr_start_timer();

end_timer=lr_end_timer(timer);

timer=lr.start_timer();

end_timer=lr.end_timer(timer);

如何将C修改为JAVAF1帮助。


 一个要点:有些函数是需要import 库的。例:web.custom_request

在将http请求修改完成后,运行始终报错,查找一些网上示例发现其中引入了web的包:import lrapi.web,此时方能使用该http请求

5)运行

Java脚本需要相应的运行环境,因此压力机也需要部署相应的环境,这个在上面已经讲述:

 Jdk

 Jdk替换的jar

    实现加密程序的jar

6)Tips:使用controller运行时,并发较大时(超过500),不能使用process进程运行,必须使用thread方式运行,否则压力机内存会不足。





  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值