JMeter 内置函数、Jmeter 访问 MySQL 数据库、Jmeter测试 Java 程序
1、JMeter 内置函数
以两个下划线开头。 区分大小写。
![](https://img2020.cnblogs.com/blog/1993414/202101/1993414-20210123164925350-46988077.png)
ResponseMessage="${__char(97,98,99,100)}"; //ResponseMessage="abcd";
ResponseMessage="${__machineIP()}"; ResponseMessage="${__machineIP(CIP)}"; ${__threadNum()}; ${__time(y/MM/dd)}; ResponseMessage="${__UUID}"; ResponseMessage="${__Random(1,10)}"; ResponseMessage="${__RandomString(6,abcdefgh12345678)}"; ResponseMessage="${__RandomString(6,abcdefgh12345678,ran)}";
Jmeter 访问 MySQL 数据库
1) 加载数据库驱动包
点击测试计划-->点击中间底部"浏览"-->选中 mysql 驱动 jar 包-->打开
2)配置数据库连接参数 配置元件→JDBC Connection Configuration
3)添加 JDBC Request
测试 Java 程序
Eclipse 导入包
被测程序
package com; public class Add { public int sum(int a,int b) { return a+b; } public static void main(String args[]){ Add math = new Add(); System.out.println(math.sum(1, 2)); } }
测试程序
package com; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; import org.apache.jmeter.samplers.SampleResult; public class JavaTest extends AbstractJavaSamplerClient { private Add test = null; private String a; private String b; private String result; // 定义参数 public Arguments getDefaultParameters() { Arguments params = new Arguments(); params.addArgument("num1", "");// 参数 num1,初值为空,jmeter 可更改此值 params.addArgument("num2", ""); return params; } // 每个线程测试前执行一次,做一些初始化工作,取参数值 public void setupTest(JavaSamplerContext arg0) { test = new Add(); a = arg0.getParameter("num1");// 获取参数值 b = arg0.getParameter("num2"); } // 开始测试,从 arg0 参数可以获得参数值 public SampleResult runTest(JavaSamplerContext arg0) { SampleResult sr = new SampleResult();// 取样器 sr.setSamplerData("请求参数 num1:" + a + "\n 请求参数 num2:" + b);// 发送请求 try { sr.sampleStart();// 类似于事务,开始统计响应时间 result = String.valueOf(test.sum(Integer.parseInt(a), Integer.parseInt(b))); if (result != null && result.length() > 0) { // 下面的操作将响应数据输出到 Jmeter 的察看结果树中 sr.setResponseData("结果是:" + result, "utf-8"); sr.setDataType(SampleResult.TEXT); sr.setResponseCode("200"); sr.setResponseOK(); } sr.setSuccessful(true); } catch (Throwable e) { sr.setSuccessful(false); e.printStackTrace(); } finally { sr.sampleEnd(); // 结束统计响应时间标记 } return sr; } // 测试结束时调用,只执行一次 // public void teardownTest(JavaSamplerContext arg0) { // } // 必须加入下面的 main 方法编译,导出代码时,必须禁用 main // public static void main(String[] args) { // Arguments pms = new Arguments(); // pms.addArgument("num1", "1");// 设置参数,赋值 1 // pms.addArgument("num2", "2");// 设置参数,赋值 2 // JavaSamplerContext arg0 = new JavaSamplerContext(pms); // JavaTest test = new JavaTest(); // test.setupTest(arg0); // test.runTest(arg0); // test.teardownTest(arg0); // } }
导出包
- 右击项目→导出→Java→可运行的 JAR 文件(忽略错误,找不到 main 方法)
- 导出目标 ,必须放在\apache-jmeter-3.0\lib\ext 目录中,名字可与类名不同
Jmeter导入包
-->测试计划→Add directory or jar to classpath 处:浏览
-->添加线程组 ,添加-- Java 请求
-->添加查看结果树并运行
测试 BeanShell 请求
1)添加 BeanShell Sample
2)添加BeanShell Sample获取参数
3)添加 Debug Sampler
4)添加结果树看结果