zoukankan      html  css  js  c++  java
  • Jmeter接口测试-MD5加密-请求验签(完整流程)

    第一部分:先准备好Jmeter

    1.在开始编写脚本之前,先要确保你的Jmeter能够正常运行。若你还没有安装Jmeter,可参考以下方法:

    A.Jmeter需要java运行环境,所以需要下载JDK,JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html

    (最好使用 JDK 8  以上的版本,上述链接下可以下载最新的 JDK 版本)

    B.安装JDK,请参考百度教程:https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html

    (注意java环境变量一定要配置正确)

    C.下载安装Jmeter

    Jmeter下载地址:http://jmeter.apache.org/download_jmeter.cgi

    Jmeter安装流程(参考百度教程):https://jingyan.baidu.com/article/acf728fd68e7bef8e510a3cb.html

    (注意Jmeter5.0版本的需要要配置环境变量,且要JDK 8 及以上才行)

    D.引入MD5加密所需要的jar包。该jar包的名字是:commons-codec-1.9.jar

    Jmeter本身就有MD5加密的功能,但是需要该jar包,可以查看Jmeter安装路径下的lib文件夹在有没有这个jar包:D:apache-jmeter-5.0apache-jmeter-5.0lib

    如果没有的话,网上下载一个放到lib文件夹下就OK了。

    E.永久汉化Jmeter。

    找到Jmeter安装路径下的jmeter.properties:D:apache-jmeter-5.0apache-jmeter-5.0injmeter.properties

    用编辑器打开(右键用记事本打开也可以):找到  #language=en  ,在下面添加:language=zh_CN 保存并重启Jmeter

    第二部分:编写MD5加密-请求验签的脚本 

    1.编写该脚本需要新建的东西如下:

    A.添加一个线程组:测试计划——添加——线程(用户)——线程组

    B.线程组下添加一个 前置处理器 BeanShell PreProcessor:线程组——添加——前置处理器——BeanShell PreProcessor

    BeanShell PreProcessor 主要是用来完成加密字符串的拼接和MD5 加密

     

    C.线程组下面添加一个 HTTP信息头管理器 :线程组——添加——配置元件——HTTP信息头管理器。

    用于设置请求信息头里面的参数。

    D.线程组下添加一个 HTTP请求:线程组——添加——取样器——HTTP请求。

    E.最后添加 察看结果树 和 聚合报告  :线程组——添加——监听器—— 察看结果树 / 聚合报告

    察看结果树的目的是用于:查看我们的请求是否访问成功,已经请求内容和返回内容是否正确

    聚合报告:主要是用于统计总的请求数,平均请求时间,响应时长,Err 数,Err率等数据。

     

    2.新建脚本的模型成功后,开始填充脚本的内容,完成脚本MD5加密功能。

    A.在前置处理器 BeanShell PreProcessor添加如下内容:

     (Jmeter 5 自带 org.apache.commons.codec.digest  jar,所以只需要导入就可以了)  

    (字符串的顺序拼接规则是:按照参数的首字母,对参数进行A-Z的顺序进行排序,并拼接,可以参见图中参数的排序规则)

    (字符相互之间连接类似:appVersion=V1.0.0&clientType=XXX&productId=XXX&source=XXX,注:不同公司的拼接规则不同,需询问开发具体的拼接规则)

    // 导入MD5加密需要用到的jar包。

    import org.apache.commons.codec.digest.DigestUtils;

    // 声明你需要拼接的字符串

    String requestTime = "${__time(,)}"; //生成时间戳

    String appVersion ="XXX";

    String clientType ="XXX";

    String productId ="XXX";

    String source ="XXX";

    //拼接需要加密的字符串

    String str = "appVersion="+appVersion+"&clientType="+clientType+"&productId="+productId +"&requestTime="+requestTime+"&source="+source+"istarkid2018";

    // 加密已拼接的字符串

    String sign = DigestUtils.md5Hex(str);

    vars.put("signStr",sign.toString()); //把生成的signStr提供给beanshell外部组件引用

    vars.put("requestTime",requestTime.toString()); //把生成的时间戳提供给beanshell外部组件引用

    vars.put("appVersion",appVersion.toString()); //把生成的版本号提供给beanshell外部组件引用

    vars.put("clientType",clientType.toString()); //把生成的clientType提供给beanshell外部组件引用

    生成时间戳,方法较多,不同公司所用的时间戳生成方法不同,这点需要询问开发具体的生成规则,以下提供几种生成规则:

    生成十三位时间戳:${__time(,)}

    生成十位时间戳:${__time(/1000,)}

    生成当前日期,精确到天时间戳:${__time(yyyy-MM-dd,)}

    生成当前日期,精确到秒时间戳:${__time(YMDHMS,)}

     

    B.HTTP信息头输入接口验签需要验证的所有参数:例如:token,singa等。根据具体情况传入

    C.在HTTP请求里面,添加:服务器IP,请求方法,接口路径,接口参数等值。 

     第三部分:执行脚本

    1.点击:菜单栏上的绿色按钮执行,第一次新建的测试计划会提示你先保存,把已经建好的测试计划保存到任意位置就可以了

    2.设置并发数量,进行压测;

    3.设置好后,点击执行,进行压测,压测完成后,可以在报告里面查看压测结果。

     以上并是一个加了MD5和验签的脚本的具体流程,若有错误的地方,请大家多多指点~

  • 相关阅读:
    Two Sum II
    Subarray Sum
    Intersection of Two Arrays
    Reorder List
    Convert Sorted List to Binary Search Tree
    Remove Duplicates from Sorted List II
    Partition List
    Linked List Cycle II
    Sort List
    struts2结果跳转和参数获取
  • 原文地址:https://www.cnblogs.com/haoBo956/p/10221156.html
Copyright © 2011-2022 走看看