zoukankan      html  css  js  c++  java
  • jmeter接口系列:时间戳、加密

    JMeter安装配置

    官网下载JMeter的软件包apache-jmeter-x.x.zip,下载完成之后解压打开jmeter.bat即可。

    说明

    这里使用的jmeter版本是3.0,jdk版本是jdk1.8;目前最新版本jmeter3.3支持的是jdk1.8版本,不支持jdk1.9的版本。

    jmeter打开的界面如图所示

    整个接口项目的结构示意图如下

    今天主要记录时间戳和md5加密的方法。

    如何在jmeter中获取当前系统的时间戳呢?jmeter系统提供了方法${__time(,)},使用该方法可以获取当前系统的毫秒格式的时间戳。

    md5加密的实现

    那么md5加密如何实现呢?

    这里是引入jar包来实现md5-32位加密。

    从网上copy了一份md5加密的代码如下

    package com.test;
    
    import java.io.UnsupportedEncodingException;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    
    /**
     * MD5加密
     * 
     * @param str
     * @return
     */
    public class mymd5 {
    public static String md5(String str) {
    	if(null == str){
    		return null;
    	}
    	try {
    		MessageDigest md = MessageDigest.getInstance("MD5");
    		byte[] result = md.digest(str.getBytes("utf-8"));
    		return hexToString(result);
    	} catch (NoSuchAlgorithmException e) {
    		e.printStackTrace();
    	} catch (UnsupportedEncodingException e) {
    		e.printStackTrace();
    	}
    	return null;
    }
    public static String hexToString(byte[] b) {
    	StringBuilder sb = new StringBuilder();
    	
    	for (int i = 0; i < b.length; i++) {
    		String hex = Integer.toHexString(b[i] & 0xFF);
    		if (hex.length() == 1) {
    			hex = '0' + hex;
    		}
    		sb.append(hex.toLowerCase());
    	}
    	return sb.toString();
    }
    
    
    	
    }
    

    在eclipse中新建工程和包,图示如下

    说明

    可以在eclipse中实现查看加密结果是否正确

    导出jar包

    导出jar操作如图


    将导出的jar放到Jmeter安装目录下的lib文件夹下

    Jmeter新建测试计划,添加线程组,新建BeanShell Sampler,并写入以下测试内容

    说明

    之前已经在测试计划中添加了用户自定义变量,如图

    所以这里直接在BeanShell Sampler中直接get已经设置的用户变量,方法是vars.get,代码如下

    //导入md5的jar包
    import com.test.mymd5;
    
    //定义机构代码
    String code = vars.get("customerCode");
    //定义时间戳
    String timestamp = vars.get("timestamp");
    //定义机构中的serial_number_md5,临时会话验证
    String ytoken = vars.get("ytoken");
    
    //定义英文下划线_ underscores 
    String underscores = vars.get("underscores");
    
    //获取创建会话中的token验证的md5加密
    String itoken = mymd5.md5(code+timestamp+ytoken);
    
    //获取用户会话中的token验证的md5加密,存储为变量itoken
    
    vars.put("itoken",itoken);
    
    
    System.out.println(itoken);
    

    这样时间戳和md5加密都实现了,接下来就是在接口中使用此变量。

    在创建会话认证接口操作如下:
    新建一个http请求和http请求默认值,在http请求默认值basic中配置接口的服务器名称或ip、请求的协议等参数如下图

    http请求默认值的作用就是在其他接口中,可以不用再次输入服务器名称或ip以及端口号等信息。

    请求会话认证接口中,输入接口的元素项以及请求的post方法,而使用用户自定义的变量,可以使用${变量名}直接使用该参数,如下

    在测试计划中添加sampler-->Debug Sampler监听jmeter中的变量信息,配置如图

    查看运行结果

    在测试计划中添加监听器-->查看结果树,使用快捷键ctrl+R,查看运行结果,如图

    而jmeter中变量的界面展示如图所示

    以上操作即是获取时间戳和md5加密的方法。这样认证接口就不用每次单独计算timestamp和md5值。

    遇到的问题

    md5加密导出的jar包,引入过后运行时提示Unsupported major.minor version 52.0,如图

    究其原因,发现是jdk版本不一致造成的。解决方法如下:

    1) 调整jdk版本一致:
    eclipse>windows>preferences>java>compiler>compiler compliance level 1.8,如图

    修改jdk compliance版本为1.8的版本;

    2) 项目右键>properties>java compiler>1.8

    1. 添加jdk的lib

    然后重新打包jar文件,再次导入jmeter中,成功

    备注

    The reported major numbers are:

    Java SE 9 = 53,

    Java SE 8 = 52,

    Java SE 7 = 51,

    Java SE 6.0 = 50,

    Java SE 5.0 = 49,

    JDK 1.4 = 48,

    JDK 1.3 = 47,

    JDK 1.2 = 46,

    JDK 1.1 = 45

    参考资料

    第04篇 JDK版本导致Unsupported major.minor version 52.0 error

    https://stackoverflow.com/questions/10382929/how-to-fix-java-lang-unsupportedclassversionerror-unsupported-major-minor-versi

    md5的jar下载链接: https://pan.baidu.com/s/1c147cCo 密码: cbb3

  • 相关阅读:
    HAproxy 1.5 dev14 发布
    IBM/DW 使用 Java 测试网络连通性的几种方法
    Skype 4.1 Linux 发布,支持微软帐号登录
    Dorado 7.1.20 发布,Ajax的Web开发平台
    Aspose.Slides for Java 3.0 发布
    开发版本 Wine 1.5.18 发布
    BitNami Rubystack 开始支持 Ruby 2.0
    XWiki 4.3 正式版发布
    Silverlight实例教程 Out of Browser的Debug和Notifications窗口
    Silverlight实例教程 Out of Browser与Office的互操作
  • 原文地址:https://www.cnblogs.com/LOVEYU/p/8042691.html
Copyright © 2011-2022 走看看