• 14
  • 14
分享
  • Jmeter接口测试-MD5加密-请求验签——软件测试圈
  • 恬恬圈 2021-03-05 10:28:16 字数 2724 阅读 3438 收藏 14

第一部分:先准备好Jmeter

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

  1. Jmeter需要java运行环境,所以需要下载JDK,JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html(最好使用 JDK 8  以上的版本,上述链接下可以下载最新的 JDK 版本)

  2. 安装JDK,请参考百度教程:https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html(注意java环境变量一定要配置正确)

  3. 下载安装Jmeter,Jmeter下载地址:http://jmeter.apache.org/download_jmeter.cgi。Jmeter安装流程(参考百度教程):https://jingyan.baidu.com/article/acf728fd68e7bef8e510a3cb.html(注意Jmeter5.0版本的需要要配置环境变量,且要JDK 8 及以上才行)

  4. 引入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了。

  5. 永久汉化Jmeter。找到Jmeter安装路径下的jmeter.properties:D:\apache-jmeter-5.0\apache-jmeter-5.0\bin\jmeter.properties。用编辑器打开(右键用记事本打开也可以):找到  #language=en  ,在下面添加:language=zh_CN 保存并重启Jmeter

1.png

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

2.png

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

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

    3.png

  2. 线程组下添加一个 前置处理器 BeanShell PreProcessor:线程组——添加——前置处理器——BeanShell PreProcessor(BeanShell PreProcessor 主要是用来完成加密字符串的拼接和MD5 加密)

    4.png

  3. 线程组下面添加一个 HTTP信息头管理器 :线程组——添加——配置元件——HTTP信息头管理器。用于设置请求信息头里面的参数。

    5.png

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

    6.png

  5. 最后添加 察看结果树 和 聚合报告  :线程组——添加——监听器—— 察看结果树 / 聚合报告察看结果树的目的是用于:查看我们的请求是否访问成功,已经请求内容和返回内容是否正确聚合报告:主要是用于统计总的请求数,平均请求时间,响应时长,Err 数,Err率等数据。

    7.png

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

  • 在前置处理器 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外部组件引用

8.png

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

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

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

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

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

9.png

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

10.png

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

11.png

 第三部分:执行脚本

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

12.png

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

13.png

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

14.png

15.png

 

作者:影动心定

原文链接:https://www.cnblogs.com/haoBo956/p/10221156.html


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 软件测试职业发展方向,大体上可以分为管理路线、技术路线、管理+技术路线。软件测试,是技术主导的职业;不管选择哪条发展路线,都是需要一定的技术沉淀,只是相对来说,管理路线对技术方面要求不高而已。那么我们就先挑重头的技术路线展开讨论。一般来说,一个普通的测试工程师刚入行,3个月左右熟悉企业的工作流程和模式,那么今后的工作内容趋于平稳。然而社会是残酷的!如果单单停留在测试工程师的阶段,若干年后,相信你再也竞争不过那个时候的应届毕业生,当你的工作技能和职业素质趋于与那些朝气蓬勃的年轻人相当时,企业会毫不留情的选择他们,而release你,因为你的成本消耗要比他们高,这是大实话!然而现实又是公平的!因为...
            15 15 1283
            分享
          •   说起这个数字比较,这是我这几年测试生涯中踩的第一个坑,至今印象深刻,使得从那以后在遇到数字比较的测试,我都会特别关注这个点,记得那还是第一次接触数据库数字比较的测试,按照设计测试用例的惯例,进行了用例设计。  记得当时这个需求的背景是业务要求做一个功能:  根据版本号,比较产品中的两个参数的大小,暂时我们就给它叫做参数1和参数2吧,当版本号满足大于给定的版本号‘32’时,比较参数1和参数2的大小,当参数1大于等于参数2时,就把这个产品的相关信息发送邮件给相关的业务人员,给出警示,大致功能流程图如下:  开发实现的方案是:版本号由前台数值传到后台接收,然后代码直接进行比较,参数1和参数2,分...
            12 13 1810
            分享
          • 9 月 9 日消息,Google Fi 今天推出了三项更新,重点关注 MVNO 在旅行时的国际体验,首先是针对 iPhone 用户的 Wi-Fi 呼叫功能。这也意味着,在多年只支持 Android 手机业务后,Google Fi 终于也支持了苹果 iPhone 机型的 Wi-Fi 通话功能。如果 Wi-Fi 和移动数据都可用,谷歌表示它将“将您的呼叫转移到为您提供最佳连接的任何一个”。此外,Google FI 还带来了灵活和无限 Plus 计划,iPhone 现已支持国际热点网络共享功能。随着新功能的上线,Google FI 对 iOS 设备的支持越来越好,虽然它仍然不提供美国本土的 5G 服...
            0 0 1290
            分享
          • 1、按严重程度分类:是指bug对软件质量的破坏程度,即此bug的存在将对软件的功能和性能产生什么样的影响。崩溃(Blocker):系统无法正常运行。阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环、导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。如:代码错误、死循环、数据库发生死锁、重要的一级菜单功能不能使用等(该问题在测试中较少出现,一旦出现应立即中止当前版本测试)。严重(Critical):很明显的错误性的bug。系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。功能设计与需求严重不符模块无法启动或调用,程序重...
            14 13 3717
            分享
          • 接上文,下面继续介绍Jmeter的测试元件。3. 控制器         JMeter有两种类型的控制器:取样器和逻辑控制器。         取样器指示JMeter向一个服务器发送请求。例如,如果你想让JMeter发送HTTP请求,那么添加一个HTTP请求器。你可以向一个取样器中添加一个或多个配置元件来定制请求。        逻辑控制...
            0 0 1340
            分享
      • 51testing软件测试圈微信