博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]jmeter 自定义测试脚本
阅读量:7221 次
发布时间:2019-06-29

本文共 4622 字,大约阅读时间需要 15 分钟。

http://wangym.iteye.com/blog/731729

 

1.创建一个Java工程;

2.将JMeter的lib目录下的jar文件添加进此工程的Build Path;

3.创建一个类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写;

public Arguments getDefaultParameters();设置可用参数及的默认值;public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;public SampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值;public void teardownTest(JavaSamplerContext arg0):测试结束时调用;

4.Export为Runnable Jar File;

5.将此jar包放入JMETER_HOME\lib\ext目录;

6.以管理员身份打开JMeter;

7.创建线程组、Java Request、查看结果树,进行测试;

 

二、实例

1.在eclipse里面新建一个工程:JavaForJMeter

2.把{Jmeter_home}\lib目录下的所有jar添加进此工程的Build Path;

3.添加类Hello,代码如下:

package com.test.webservice;public class Hello {    public String sayHello()    {        return "Hello";    }    public String sayHelloToPerson(String s)    {        if(s == null || s.equals(""))            s = "nobody";        return (new StringBuilder()).append("Hello ").append(s).toString();    }    public int sum(int a,int b)    {        return a+b;    }}

4.添加类perftest,并继承AbstractJavaSamplerClient,并添加代码如下:

注意:System.out等的输出会显示在启动JMeter时的命令窗口内,但过多的输出会影响性能的准确性。

package com.test.webservice;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;import com.test.webservice.Hello;public class perftest extends AbstractJavaSamplerClient {    private String a;    private String b;    /** Holds the result data (shown as Response Data in the Tree display). */    private String resultData;    // 这个方法是用来自定义java方法入参的。    // params.addArgument("num1","");表示入参名字叫num1,默认值为空。    //设置可用参数及的默认值;    public Arguments getDefaultParameters() {        Arguments params = new Arguments();        params.addArgument("num1", "");        params.addArgument("num2", "");        return params;    }    //每个线程测试前执行一次,做一些初始化工作;    public void setupTest(JavaSamplerContext arg0) {    }    //开始测试,从arg0参数可以获得参数值;    public SampleResult runTest(JavaSamplerContext arg0) {        a = arg0.getParameter("num1");        b = arg0.getParameter("num2");        SampleResult sr = new SampleResult();      sr.setSampleLabel( "Java请求哦");        try {            sr.sampleStart();// jmeter 开始统计响应时间标记            Hello test = new Hello();            // 通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。            resultData = String.valueOf(test.sum(Integer.parseInt(a), Integer                    .parseInt(b)));            if (resultData != null && resultData.length() > 0) {                sr.setResponseData("结果是:"+resultData, null);                sr.setDataType(SampleResult.TEXT);            }            // System.out.println(resultData);            sr.setSuccessful(true);        } catch (Throwable e) {            sr.setSuccessful(false);            e.printStackTrace();        } finally {            sr.sampleEnd();// jmeter 结束统计响应时间标记        }        return sr;    }    //测试结束时调用;    public void teardownTest(JavaSamplerContext arg0) {        // System.out.println(end);        // System.out.println("The cost is"+(end-start)/1000);    }        // main只是为了调试用,最后打jar包的时候注释掉。    /*      public static void main(String[] args)       { // TODO Auto-generated method stub          Arguments params = new Arguments();           params.addArgument("num1", "1");//设置参数,并赋予默认值1           params.addArgument("num2", "2");//设置参数,并赋予默认值2          JavaSamplerContext arg0 = new JavaSamplerContext(params);           perftestbbb test = new perftestbbb();           test.setupTest(arg0);           test.runTest(arg0);          test.teardownTest(arg0);       }     */}

 

5.Export为Runnable Jar File:hello.jar

6.将此hello.jar(测试用例)包放入JMETER_HOME\lib\ext目录,其他依赖的jar包可以放到lib下。

7.打开JMeter,添加线程组,添加Java请求,查看结果树。

 

三、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统计成功失败的次数,在聚合报告中能够体现。
 
 
四、自带Java Request Sampler

JMeter默认实现了两个Java Request Sampler:SleepTest Sampler和JavaTest Sampler。

JavaTest Sampler不向服务器发送数据请求,一般被用作调试目的使用。

 
 

至此,这已讲解完了。

转载地址:http://jyhym.baihongyu.com/

你可能感兴趣的文章
SetupDiGetDeviceInterfaceDetail 函数
查看>>
Elasticsearch Kibana安装与使用
查看>>
我的友情链接
查看>>
TODO:这是一个我的自媒体
查看>>
conn堡垒机-日志审计和录像审计
查看>>
windows server 2008 r2系统搭建wamp环境
查看>>
docker学习笔记-批量删除停止运行的容器
查看>>
linux添加用户操作日志
查看>>
lvs 持久连接 80 和443 端口iptables mangle
查看>>
Docker的CPU限制限制
查看>>
linux 系统下 snmp 服务配置
查看>>
作为一名网络工程师,我们应该如何定位自己的方向呢?
查看>>
脱口而出-特定情景下的美语反应
查看>>
条件控制语句
查看>>
HTTPS安全访问的原理及其应用
查看>>
笔记本wifi×××
查看>>
haproxy高可用web和mysql配置实例
查看>>
构建Maven工程(2)---MyEclipse安装maven插件
查看>>
rhel5.6 sssd配置方法。
查看>>
Zabbix篇三:windows批量安装客户端Zabbix-agent
查看>>