信步漫谈之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

原文地址:https://www.cnblogs.com/alfredinchange/p/13296081.html