jmeter性能测试脚本的编写 | 您所在的位置:网站首页 › 脚本接口是什么样的 › jmeter性能测试脚本的编写 |
一、http请求的脚本编写 以线上打款接口为例: 1、启动jmeter,建立一个测试计划。 启动:打开jmeter文件夹,bin文件→jmeter.bat(Windows执行文件)文件,就可以启动jmeter了 2、添加用户定义参数,定义IP和端口号 3、添加Http信息头管理器 4、添加Http Cookie管理器 5、添加逻辑控制器及登录http接口的请求 6、添加线上打款Http接口的请求 7、添加聚合报告查看结果 二、Java请求的脚本编写 ?perfOpenApiTest.rar 以扫码支付接口为例:目的:对开放平台的加密接口进行测试 (1)、核心步骤 1.创建一个Java maven工程;
2.将JMeter的lib目录下的jar文件添加进此工程的POM.xml中 cn.hutool hutool-all 4.1.8 com.google.guava guava 21.0-rc1 org.apache.jmeter ApacheJMeter_java 5.0
3.创建一个类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写; public Arguments getDefaultParameters();设置可用参数及的默认值; public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作; public SampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值; public void teardownTest(JavaSamplerContext arg0):测试结束时调用; 4.打包成Runnable Jar File; mvn install 5.将此jar包放入JMETER_HOME\lib\ext目录; 6.以管理员身份打开JMeter; 7.创建线程组、Java Request、查看结果树,进行测试; (2)、实例 public class perfOrderScan implements JavaSamplerClient { private SampleResult results; private String type; private String total_fee; private String store_id; private String cashier_id; // 设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中 public Arguments getDefaultParameters() { Arguments params = new Arguments(); params.addArgument("type", "0");// 设置参数,并赋予默认值0 params.addArgument("total_fee", "0");// 设置参数,并赋予默认值0 params.addArgument("store_id", "0");// 设置参数,并赋予默认值0 params.addArgument("cashier_id", "0");// 设置参数,并赋予默认值0 return params; } // 初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行 public void setupTest(JavaSamplerContext arg0) { results = new SampleResult(); } // 测试执行的循环体,根据线程数和循环次数的不同可执行多次 public SampleResult runTest(JavaSamplerContext arg0) { type = arg0.getParameter("type"); // 获取在Jmeter中设置的参数值 total_fee = arg0.getParameter("total_fee"); // 获取在Jmeter中设置的参数值 store_id = arg0.getParameter("store_id"); // 获取在Jmeter中设置的参数值 cashier_id = arg0.getParameter("cashier_id"); // 获取在Jmeter中设置的参数值 results.sampleStart();// jmeter 开始统计响应时间标记 try { String method = "openapi.payment.order.scan"; String merchant_order_sn = RandomUtil.simpleUUID(); Map content = Maps.newHashMap(); content.put("merchant_order_sn", merchant_order_sn); content.put("type",type); content.put("total_fee",total_fee); content.put("store_id",store_id); content.put("cashier_id",cashier_id); String biz_content = JSONUtil.toJsonStr(content); JSONObject response = ATSBaseTest.postOpenapiRequest(method,biz_content,null,null); // 通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。 if (response != null && response.size() > 0) { results.setResponseData("结果是:"+response, null); results.setDataType(SampleResult.TEXT); } results.setSuccessful(true); // System.out.println(response); // 被测对象调用 } catch (Throwable e) { results.setSuccessful(false); e.printStackTrace(); } finally { results.sampleEnd();// jmeter 结束统计响应时间标记 } return results; } // 结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行 public void teardownTest(JavaSamplerContext arg0) { } //调试代码 // public static void main(String[] args) { // // TODO Auto-generated method stub // Arguments params = new Arguments(); // params.addArgument("type", "1");// 设置参数,并赋予默认值0 // params.addArgument("total_fee", "0.01");// 设置参数,并赋予默认值0 // params.addArgument("store_id","7771"); // params.addArgument("store_id","1512948"); // JavaSamplerContext arg0 = new JavaSamplerContext(params); // perfOrderScan test = new perfOrderScan(); // test.setupTest(arg0); // test.runTest(arg0); // test.teardownTest(arg0); // } }(3)、JMeter Java Sampler介绍 Arguments getDefaultParameters() 用于获取界面的参数 SampleResult runTest(JavaSamplerContext context) 类似于LR的Action,result.sampleStart()一个事务开始,result.sampleEnd()一个事务 结束 void setupTest(JavaSamplerContext context) 初始化方法,类似于LR的init和Junit中的setUp() void teardownTest(JavaSamplerContext context) 类似于LR的end和Junit中的tearDown() 执行的先后顺序为: getDefaultParameters() --> setupTest(JavaSamplerContext context) --> runTest(JavaSamplerContext context) --> teardownTest(JavaSamplerContext context)
常用的方法: ①、addArgument("name", "value") 定义参数 ②、sampleStart() 定义事务的开始,类似于LR的lr_start_transaction,和LR一样事务间不要放无关代码 ③、sampleEnd() 定义事务的结束,类似于LR的lr_end_transaction ④、setSuccessful(true、false) 设置运行结果的成功或失败,Jmeter统计成功失败的次数,在聚合报告中能够体现。 (4)、添加线程组和Java Request
|
CopyRight 2018-2019 实验室设备网 版权所有 |