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.0\apache-jmeter-5.0\lib
如果没有的话,网上下载一个放到lib文件夹下就OK了。
E.永久汉化Jmeter。
找到Jmeter安装路径下的jmeter.properties:D:\apache-jmeter-5.0\apache-jmeter-5.0\bin\jmeter.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和验签的脚本的具体流程,若有错误的地方,请大家多多指点~
Jmeter接口测试-MD5加密-请求验签(完整流程)的更多相关文章
- Java RSA加密以及验签
签名加密以及验签工具类: 一般秘钥分为3个key 1.自己生成的私钥, 2.通过私钥生成的公钥1 3.通过提交公钥1给某宝,获取的公钥2. RSA公钥加密算法简介 非对称加密算法.只有短的RSA钥匙才 ...
- jmeter完成md5加密的接口请求参数
第一种方法: 这种方法比较简单,jmeter内置了一个md5的函数,可以直接使用.其中参数username是用户名,正常填写,password是密码经过md5加密 第二种方法: 需要有一定的编程技术, ...
- jmeter md5加密请求参数
实际的接口测试过程中,再发生http之前有可能需要对某些参数(或某几个参数的组合)进行md5加密 在jmeter中可通过两种方式来实现md5加密 beanshell实现md5加密 在org.apach ...
- Jmeter实现MD5加密
Jmeter3.0以后的版本不再内置MD5加密函数,只能自己写了. 1.编码 package com.liuke.test; import java.security.MessageDigest; i ...
- jmeter 测试MD5加密登录接口
1.点击options-funciton helper dialog,打开函数助手 在string to calculate MD5 hash 中填写密码,复制function sysntax中的值 ...
- jmeter接口测试 -- Base64加密(函数助手添加自定义函数)
图片转码 base64 致谢参考博客: https://www.cnblogs.com/qiaoyeye/p/7218770.html https://www.cnblogs.com/lasdaybg ...
- RSA加密解密及RSA加签验签
RSA安全性应用场景说明 在刚接触RSA的时候,会混淆RSA加密解密和RSA加签验签的概念.简单来说加密解密是公钥加密私钥解密,持有公钥(多人持有)可以对数据加密,但是只有持有私钥(一人持有)才可以解 ...
- js rsa sign使用笔记(加密,解密,签名,验签)
你将会收获: js如何加密, 解密 js如何签名, 验签 js和Java交互如何相互解密, 验签(重点) 通过谷歌, 发现jsrsasign库使用者较多. 查看api发现这个库功能很健全. 本文使用方 ...
- iOS,一行代码进行RSA、DES 、AES、MD5加密、解密
本文为投稿文章,作者:Flying_Einstein(简书) 加密的Demo,欢迎下载 JAVA端的加密解密,读者可以看我同事的这篇文章:http://www.jianshu.com/p/98569e ...
随机推荐
- Mybatis-06 动态Sql
Mybatis-06 动态Sql 多对一处理 多个学生,对应一个老师 对于学生这边而言,关联多个学生,关联一个老师 [多对一] 对于老师而言,集合,一个老师又很多学生 [一对多] 1.创建数据库 2. ...
- 解决windwos系统80端口被暂用无法发布(NGINX、TOMCAT、IIS)
原因: 一个操作系统有0-65535个端口,但是一个端口只能被一个应用程序使用.所以80端口只有一个,当开发发布时想用应用NGINX,TOMCAT,IIS发布时,如果有程序占用了,就无法使用了. 解决 ...
- SecureCRT无法登陆ubuntu问题解决的方法(亲测有效)
最近在虚拟机安装了几个ubuntu系统玩耍,然后想着用SecureCRT在Windows本地连接但是怎么也连接不上!!!如下,这只是示意图,ip地址是瞎编的,但是情况完全相同,期间尝试过让linux和 ...
- python中yield的用法详解——最简单,最清晰的解释
转载自https://blog.csdn.net/mieleizhi0522 首先我要吐槽一下,看程序的过程中遇见了yield这个关键字,然后百度的时候,发现没有一个能简单的让我懂的,讲起来真TM的都 ...
- Redis-第十章节-链表
目录 数组和链表 链表 对比 总结 1.数组和链表 数组: 数组会在内存中开辟一块连续的空间存储数据,这种存储方式有利也有弊端.当获取数据的时候,直接通过下标值就可以获取到对应的元素,时间复杂度为O( ...
- 网络地址转换NAT的两种模式(概念浅析)& IP溯源
由于全球IPv4地址越来越少.越来越贵,因此大到一个组织,小到一个家庭一个人都很难获得公网IP地址,所以只能使用内网地址,从而和别人共享一个公网IP地址.在这种情况下,NAT技术诞生. 翻译 NAT( ...
- 《C++ Primer》笔记 第3章 字符串、向量和数组
位于头文件的代码一般来说不应该使用using声明. 如果使用等号(=)初始化一个变量,实际上执行的是拷贝初始化,编译器把等号右侧的初始值拷贝到新创建的对象中去.与之相反,如果不使用等号,则执行的是直接 ...
- kubernetes cpu限制参数说明
docker CPU限制参数 Option Description --cpus=<value> Specify how much of the available CPU resourc ...
- POJ-2236(并查集)
Wireless NetWork POJ-2236 需要注意这里的树的深度需要初始化为0. 而且,find函数需要使用路径压缩,这里的unint合并函数也使用了优化(用一开始简单的合并过不了). #i ...
- ElasticSearch(ES)使用Nested结构存储KV及聚合查询
自建博客地址:https://www.bytelife.net,欢迎访问! 本文为博客同步发表文章,为了更好的阅读体验,建议您移步至我的博客 本文作者: Jeffrey 本文链接: https://w ...