首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >通过案例带你轻松玩转JMeter连载(36)

通过案例带你轻松玩转JMeter连载(36)

作者头像
顾翔
发布于 2021-12-01 12:15:32
发布于 2021-12-01 12:15:32
63100
代码可运行
举报
运行总次数:0
代码可运行

7.4 断言 1 JSON断言 如果返回的结果是JSON格式,可以使用JSON断言元件进行断言。通过右键在弹出菜单中选择“添加->断言->JSON断言”。如图26所示。

图26 JSON断言

  • Assert JSON Path exists:需要断言的JSON表达式。
  • Additionally assert value:是否需要根据值去断言。
  • Match as regular expression:是否需要根据正则表达式去断言。
  • Expect Value:期望匹配的断言内容。
  • Expect null:是否期望是 null。
  • Invert assertion(will fail if above condition met):结果取反。

判断方式如下。

  • 如果响应结果不是JSON格式的,断言失败。
  • 如果JSON Path找不到元素,断言失败。
  • 如果JSON Path找到元素,没有设置条件,断言成功。
  • 如果JSON Path找到元素,但不符合条件,断言失败。
  • 如果 JSON Path找到元素,且符合条件,断言成功。
  • 如果 JSON Path返回的是一个数组,会迭代判断是否有元素符合条件,有则断言成功,否则断言失败。

8 总结 本章我们对查询商品、新旧2版的查看商品详情、添加购物车和查看购物车几个功能书写了测试脚本。通过学习添加购物车和查看购物车两个功能如何建立脚本,对于JMeter如何处理cookie有了进一步的认识。接下来我们学习了

  • 逻辑控制器:仅一次控制器。
  • 函数助手:random函数和CSVRead函数。
  • 后置处理器:CSS/JQuery提取器、JOSN提取器和JSON JMSPath提取器。
  • 断言:JSON断言。

共6个元件进行了学习。并且在最后比较了JOSN提取器和JSON JMSPath提取器2个提取器。

JMeter的二次开发

对于一些复杂的逻辑,使用JMeter自带的元件来搭建接口测试脚本可能就力不从心了。比如一个安全性较高的软件系统,所有数据在传输过程前,根据数据的特征,采用自定义的各种不同的加密手段后再进行传输。由于JMeter自身是一个开源软件,所以可以只通过二次开发来解决这个问题。 为了大家的学习方便,我们假设JMeter中没有函数助手mdash;mdash;digest函数。我们使用二次开发的方式自己来开发一个与digest等同的功能。我们仍旧以电子商务登录为例给大家进行介绍。 1 利用BeanShell调用外部jar文件 1)在Eclipse中建立项目,在包com.jerry下面建立java文件myDigest.java。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.jerry;


import java.io.UnsupportedEncodingException;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;



public class myDigest {

   public static String getSHA256StrJava(String str){

      MessageDigest messageDigest;

      String encodeStr = "";

      try {

       messageDigest = MessageDigest.getInstance("SHA-256");

       messageDigest.update(str.getBytes("UTF-8"));

       encodeStr = byte2Hex(messageDigest.digest());

       } catch (NoSuchAlgorithmException e) {

       e.printStackTrace();

       } catch (UnsupportedEncodingException e) {

       e.printStackTrace();

       }

       return encodeStr;

       }


    public static String byte2Hex(byte[] bytes){

       StringBuffer stringBuffer = new StringBuffer();

       String temp = null;

       for (int i=0;i<bytes.length;i++){

         temp = Integer.toHexString(bytes[i] & 0xFF);

         if (temp.length()==1){

         //1得到一位的进行补0操作

         stringBuffer.append("0");

         }

         stringBuffer.append(temp);

         }

         return stringBuffer.toString();

         }            

}

注意:这里的文件必须为static。 2)在Eclipse点击菜单“File->Export”。 3)选择java下面的JAR file。如图1所示。

图1 选择java下面的JAR file

4)点击【Next>】按键。

5)在下面的窗口中,选择刚才建立的java文件所在的项目,如图2所示。

图2 选择java文件所在的项目

6)点击【Finish】按键。 7)将建好的jar文件存入到:%JMETER_HOME%/ lib\ext目录下。 8)右击登录HTTP请求,在弹出菜单中选择“添加->前置处理器->BeanShell 预处理程序”。 9)修改名字:获取加密后的password,然后把下面代码写入Script中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import com.jerry.myDigest;

String password = vars.get(&quot;pram_g1&quot;);
String username = vars.get(&quot;pram_g2&quot;);
String newpassword = myDigest.getSHA256StrJava(password);
vars.put(&quot;password_shell&quot;,newpassword);
vars.put(&quot;username_shell&quot;,username)

如图3所示。

图3 获取加密后的password

10)在商品列表HTTP请求中username的值改为username_shell;password的值改为password_shell。 11)运行测试脚本,观察参数username_shell和password_shell,并且保证运行结果正确。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
通过案例带你轻松玩转JMeter连载(37)
2函数助手的二次开发 1)下载JMeter源代码,并且把它导入到Eclipse中。然后导入JMeter产品代码中lib目录下的所有jar包(ext目录下的不要管)和JUunt5。(虽然项目中有许多红叉叉,但是只要保证src/function/src/main/java和src/function/src/test/java下没有红叉叉即可)。如图4所示。
顾翔
2021/12/09
3780
通过案例带你轻松玩转JMeter连载(37)
通过案例带你轻松玩转JMeter连载(38)
3 利用Java 请求实现 这里我们以新版本的电子商务登录作为例子。 1)在Eclipse中建立项目,在这个项目中建立api和utils两个包。 2)在包api下建立IHRMLogin.java,内容如下。
顾翔
2021/12/13
3280
通过案例带你轻松玩转JMeter连载(38)
通过案例带你轻松玩转JMeter连载(25)
6.3 断言 1响应断言 所谓断言,就是希望测试得到的结果与预期的结果是否一致的行为,在软件测试中,断言是一种非常重要的活动。响应断言,通过获得HTTP请求报文和响应报文的信息来进行断言。通过右键点击菜单,选择“添加->断言->响应断言”而获得。其界面如图35所示。
顾翔
2021/11/12
6770
通过案例带你轻松玩转JMeter连载(25)
【JMeter系列-6】JMeter BeanShell Sampler与JMeter BeanShell断言
BeanShell是一种完全符合Java语法规范的脚本语言,但又拥有一些独有的语法和方法。(当然,也有一些不一样的地方,比如 BeanShell就不支持Java中的泛型,当初也是一个深坑)。
云深i不知处
2020/09/16
2.9K2
通过案例带你轻松玩转JMeter连载(19)
5.3.2 商品列表断言 1 使用响应断言 1)右键点击商品列表HTTP请求,选择“添加->后置处理器->正则表达式提取器”。按照图15进行设置。
顾翔
2021/11/02
5650
通过案例带你轻松玩转JMeter连载(21)
4.2通过MySQL参数化步骤 JMeter提供对数据库的访问,我们可以用数据库来进行参数化。 1)在MySQL中的某个数据库中建立表,在表中插入参数化的数据,如图25所示。
顾翔
2021/11/02
3730
通过案例带你轻松玩转JMeter连载(31)
4 查看新版本中商品详情接口测试脚本操作步骤 在新的电子商务被测软件,商品详情是用读入json文件来实现的。格式如下。
顾翔
2021/11/19
6940
通过案例带你轻松玩转JMeter连载(31)
jmeter(四十五)常用Beanshell脚本
利用beanshell获取到json响应,然后通过JSONObject 和JSONArray 将数组解析,遍历数组的length之后,提取参数值
飞天小子
2019/05/15
2.1K0
玩转Jmeter进行性能测试
时逢6.18钉钉应用大促,为避免高负载下钉钉微应用的稳定性问题,遂赶工赶时完成钉钉方要求的稳定性压测,以此为楔,深探Jmeter,事后总结,是以成文。不愿窃为私有,分享给诸位QA同学,以期遇坑绕之,少些弯路。
晴空SunnySky
2023/09/26
3.5K0
通过案例带你轻松玩转JMeter连载(41)
4试图查看别人的信息 1)通过浏览器,用Peter的账号登录系统。 2)点击Peter,进入查看用户信息。 3)显示Peter的邮件地址Email:peter@126.com。。 4)添加商品进入购物车。 5)查看购物车。 6)点击【生成订单】按键。 7)选择收货地址。 8)点击【下一步】按键。 9)记录当前的url为/view_order/577/。 10)查看所有订单。 11)再往购物车里添加几个商品。 12)在JMeter建立测试片段“试图查看别人的信息”。 13)拷贝暴力破解测试片段下的登录HTTP请求和查看商品列表HTTP请求到试图查看别人的信息测试片段下。 14)修改查看商品列表HTTP请求下的username值为jerry,password为${__digest(SHA-256,654321,,,)}。 15)建立查看用户信息HTTP请求,url值为/user_info/。 16)在查看用户信息HTTP请求下建立响应断言,测试模式中选择字符串和否,响应字符为Email:peter@126.com。 17)建立查看购物车HTTP请求,url值为/view_chart/。 18)在查看购物车HTTP请求下建立响应断言,测试模式中选择字符串和否,响应字符为:移除</a></td>。 19)建立查看单个订单HTTP请求,url值为/view_order/577/。 20)在查看单个订单HTTP请求下建立响应断言,测试模式中选择字符串和否,响应字符为:生成时间:。 21)建立查看全部订单HTTP请求,url值为/view_all_order/。 22)在查看全部订单HTTP请求下建立响应断言,测试模式中选择字符串和否,响应字符为:删除</a>。 23)在模块控制器中选择试图查看别人的信息,运行测试。 24)根据测试结果判断是否存在安全隐患,在图10中,jerry用户登录系统可以看见peter建立的第577号订单信息,存在安全隐患。
顾翔
2021/12/27
3700
通过案例带你轻松玩转JMeter连载(41)
通过案例带你轻松玩转JMeter连载(23)
6相关元件介绍 6.1函数助手 1散列函数 函数助手mdash;mdash;散列函数通过点击图标 ,打开函数助手,选择digest得到。 如图31所示。
顾翔
2021/11/02
5530
Jmeter(十六)_beanshell实现字符串加密
 Jmeter内置的没有MD5加密方法,所以需要写一些java代码实现加密功能,以下是具体操作:
飞天小子
2018/08/31
1.8K0
Jmeter(十六)_beanshell实现字符串加密
Jmeter使用BeanShell的四种场景
大家在使用jmeter时,应该经常会见到BeanShell的出现,取样器、前置处理器、后置处理器、断言、定时器中都支持BeanShell操作。
muntainyang
2020/10/23
1.5K0
Jmeter使用BeanShell的四种场景
Jmeter:Beanshell调用java代码的三种方式
props.get("START.YMD"); //获取属性 START.YMD 的值(脚本启动日期)
BUG弄潮儿
2020/06/15
2.1K0
Jmeter:Beanshell调用java代码的三种方式
通过案例带你轻松玩转JMeter连载(29)
其他功能的接口测试脚本 将上一章保存的ebusiness_interface.jmx下进行更深入的拓展,本章我们将在这个文件上进行扩展。 1 将登录与商品列表放入仅一次控制器 由于登录功能在ebussine_login.jmx可以测试。这里我们的关注点不是登录和商品列表。 1)右键点击循环控制器,在弹出菜单中选择“添加->逻辑控制器->仅一次控制器”。按照图1中进行设置。
顾翔
2021/11/15
2880
通过案例带你轻松玩转JMeter连载(29)
通过案例带你轻松玩转JMeter连载(16)
1 建立密码SHA-256散列步骤 上一章案例中,我们对于密码采用SHA-256进行散列,需要输入类似于“8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92rdquo;一大长串字符,是不是非常的麻烦。这节我们通过函数助手来解决这个问题。 1)点击图标 ,打开函数助手。 2)选择digest函数,算法摘要中输入:SHA-256,String to be hashed中输入:123456,点击【生成】按钮。如图1所示。
顾翔
2021/10/20
3430
通过案例带你轻松玩转JMeter连载(39)
4 相关元件介绍 4.1 前置处理器 1 BeanShell预处理程序 BeanShell预处理程序为取样器运行设置初始化的脚本文件。通过右键在弹出菜单中选择“添加–>前置处理器–>BeanShell 预处理程序”,如图11所示。
顾翔
2021/12/15
8990
通过案例带你轻松玩转JMeter连载(39)
Jmeter性能测试<第一讲>
今天分享的内容是如何使用jmeter进行性能测试,就拿我经历过的一个项目为例进行讲解。
Wu_Candy
2022/07/04
5940
Jmeter性能测试<第一讲>
通过案例带你轻松玩转JMeter连载(4)
不管是通过Badboy录制脚本还是通过JMeter本身录制脚本都是比较麻烦的,特别是通过JMeter本身录制,并且在录制完毕还要进行调整,如果你不了解JMeter的基本功能也是很难调整的。JMeter的录制功能对于初学者一般是有帮助的,但是一旦用久了,都喜欢自己建立测试脚本。本节仍旧以电子商务被测软件来介绍如何自己建立测试脚本。
顾翔
2021/09/10
2780
通过案例带你轻松玩转JMeter连载(4)
通过案例带你轻松玩转JMeter连载(34)
1 CSS/JQuery提取器 CSS提取器或JQuery提取器是JMeter支持的两种语法提取器。 CSS提取器参考表1。JQuery提取器参考表6-2。 表1 CSS提取器
顾翔
2021/12/01
9050
通过案例带你轻松玩转JMeter连载(34)
相关推荐
通过案例带你轻松玩转JMeter连载(37)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档