zoukankan      html  css  js  c++  java
  • 信步漫谈之Jmeter—引入外部函数加解密报文

    一、环境

    1)Jmeter版本:apache-jmeter-5.2.1

    2)JDK版本:JDK1.8

    二、场景

    通过Jmeter发送报文进行测试,目标场景为:发送报文前,对报文数据进行加密,且加密需要依赖原报文的参数(原报文是 xml 格式数据)

    报文格式:<HeartBeat ID=”sign01”></HeartBeat>
    加密方式:通过自定义加密方式,此处模拟带参数加密返回信息,返回数据为“报文ID值 Hello”

    三、外部函数

    package com.alfred.test;
    
    import com.alfred.util.Dom4jTool;
    import org.dom4j.Document;
    
    /**
     * @Author: alfred
     */
    public class HelloWorld {
    
        public static String sayHello(String xml){
            Document doc = Dom4jTool.xmlString2Doc(xml);
            String id = doc.getRootElement().attributeValue("ID");
            return id+" Hello";
        }
    
    }
    

    四、Jmeter配置

    1)在 Jmeter 测试计划中,新增如下项目

    BeanShell 取样器:用于指定外部函数处理

    HTTP 请求:HTTP 请求的参数设置

    CSV 数据文件设置:报文的数据源

    查看结果数、聚合报告:报文发送结果分析

    image

    2)在 “CSV 数据文件设置” 中设置数据变量名为 data,在 “HTTP 请求” 中,设置消息体数据为{myData}

    image

    3)在 “BeanShell 取样器” 中配置从源数据 ${data} 到目标数据 ${myData} 的转换,转换代码如下:

    import com.alfred.test.HelloWorld;
    String myData=HelloWorld.sayHello("${data}");
    vars.put("myData",myData)

    image

    4)将 “外部函数” 打包成 jar 包,和所依赖的其他 jar 包(例如:dom4j 的包)一起放到 jmeter 的 lib 目录下,重启 jmeter 即可。

    5)最终发送的报文是 sign01 Hello

  • 相关阅读:
    获得Coclor的色值(小技巧)
    如何禁止IIS缓存静态文件(png,js,html等)(转)
    风投最关心的问题
    Repeater一行显示数据库中多行表记录
    c# int Int32 Int64 的区别
    动车实名制了
    学习,积累,10000小时定律
    映射路由器到内网ip和端口
    《轮环》故事大纲整理
    .Net读取xlsx文件Excel2007
  • 原文地址:https://www.cnblogs.com/alfredinchange/p/13296081.html
Copyright © 2011-2022 走看看