JMeter学习(十七)JMeter测试Java

摘要:
//params.addArgument;表示入参名字叫num1,默认值为空。//设置可用参数及的默认值;publicArgumentsgetDefaultParameters(){Argumentsparams=newArguments();params.addArgument;params.addArgument;returnparams;}//每个线程测试前执行一次,做一些初始化工作;publicvoidsetupTest{}//开始测试,从arg0参数可以获得参数值;publicSampleResultrunTest{a=arg0.getParameter;b=arg0.getParameter;SampleResultsr=newSampleResult();sr.setSampleLabel;try{sr.sampleStart();//jmeter开始统计响应时间标记Hellotest=newHello();//通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。

目的:对Java程序进行测试

目录

一、核心步骤

二、实例

三、JMeter Java Sampler介绍

四、自带Java Request Sampler

一、核心步骤

1.创建一个Java工程;

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

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

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

4.Export为Runnable Jar File;

5.将此jar包放入JMETER_HOMElibext目录;

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

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

二、实例

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

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

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

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

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

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

packagecom.test.webservice;
importorg.apache.jmeter.config.Arguments;
importorg.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
importorg.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
importorg.apache.jmeter.samplers.SampleResult;
importcom.test.webservice.Hello;
public class perftest extendsAbstractJavaSamplerClient {
    privateString a;
    privateString b;
    /**Holds the result data (shown as Response Data in the Tree display). */
    privateString resultData;
    //这个方法是用来自定义java方法入参的。
    //params.addArgument("num1","");表示入参名字叫num1,默认值为空。
    //设置可用参数及的默认值;
    publicArguments getDefaultParameters() {
        Arguments params = newArguments();
        params.addArgument("num1", "");
        params.addArgument("num2", "");
        returnparams;
    }
    //每个线程测试前执行一次,做一些初始化工作;
    public voidsetupTest(JavaSamplerContext arg0) {
    }
    //开始测试,从arg0参数可以获得参数值;
    publicSampleResult runTest(JavaSamplerContext arg0) {
        a = arg0.getParameter("num1");
        b = arg0.getParameter("num2");
        SampleResult sr = newSampleResult();
sr.setSampleLabel( "Java请求哦");
try{ sr.sampleStart();//jmeter 开始统计响应时间标记 Hello test = newHello(); //通过下面的操作就可以将被测方法的响应输出到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 结束统计响应时间标记 } returnsr; } //测试结束时调用; public voidteardownTest(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_HOMElibext目录;

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

JMeter学习(十七)JMeter测试Java第1张

JMeter学习(十七)JMeter测试Java第2张

三、JMeter Java Sampler介绍

Arguments

getDefaultParameters()用于获取界面的参数

SampleResult

runTest(JavaSamplerContextcontext) 类似于LR的Action,result.sampleStart()一个事务开始,result.sampleEnd()一个事务结束

void

setupTest(JavaSamplerContextcontext)初始化方法,类似于LR的init和Junit中的setUp()

void

teardownTest(JavaSamplerContextcontext)类似于LR的end和Junit中的tearDown()

执行的先后顺序为:
getDefaultParameters() -->setupTest(JavaSamplerContextcontext) -->runTest(JavaSamplerContextcontext) -->teardownTest(JavaSamplerContextcontext)
常用的方法:
①、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不向服务器发送数据请求,一般被用作调试目的使用。

JMeter学习(十七)JMeter测试Java第3张

至此,这已讲解完了。

免责声明:文章转载自《JMeter学习(十七)JMeter测试Java》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇log4j配置项1044 火星数字 (20分)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Jmeter(二)

1.简介 上一篇中宏哥已经教你把JMeter的测试环境搭建起来了,那么这一篇我们就将JMeter启动起来,一睹其芳容,首先宏哥给大家介绍一下如何来创建一个测试计划(Test Plan)。 2.创建一个测试计划(Test Plan) 测试计划(Test Plan)描述了一系列Jmeter运行时将要执行的一系列步骤。完整的测试计划包含一个或者多个线程组,逻辑控...

jmeter(21)逻辑控制器 之 if控制器

一. 如果(If)控制器 实践操作可参考博文:https://testerhome.com/topics/12300  使用if控制器有两种方式:1.不勾选“interpret condition as variable expression”直接输入我们需要判断的表达式即可,判断表达式为真时,执行if控制器下的请求,例如“1!=2”,则一定会执行下面的...

Jmeter发送https请求

需要通过浏览器将证书导出,通过Java中的keytool ,将cer格式的证书文件转换成.store格式的文件,上传到Jmeter中 步骤: 1、点击证书 2、选择详细信息,点击复制文件 3、点击下一步 4、选项默认,点击下一步 5、指定要导出的文件名,点击下一步 6、点击完成 7、在D盘中显示,导出的文件 8、将证书转换成.store格式的...

Jmeter参数化、检查点、集合点教程

在使用Jemeter做压力测试的时候,往往需要参数化用户名,密码以到达到多用户使用不同的用户名密码登录的目的,这个时候我们就可以使用参数化登录。 一、badboy录制需要的脚本、也可以用fiddler进行抓包或jmeter自带录制(较乱,请求比较多) 二、开始进入jmeter参数化; 1.将badboy录制的脚本,导入jmeter,添加查看结果树、聚合报告...

jmeter循环读取数据库表中的数据

先创建一个jdbc请求 请求在结果树正确后,添加一个循环控制器,循环次数定义数据库表查询的数量 variables names设置为col,那么如下变量会被设置为:   col_#=2 (总行数)  col_1=第1列, 第1行  col_2=第1列, 第2行 添加一个计数器用来坐变量拼接 添加请求引用N,使用函数助手 查看结果 jdbc...

Jmeter(三) 从上传图片来入门Jmeter

用Jmeter上传用户头像到人人网 先用抓包工具Fiddler把上传操作的报文抓取下来 开启Jmeter,在测试计划中创建一个线程组,取名为“图片上传” 再在线程组中创建一个HTTP请求 在请求报文中可以看到有一个<file>的参数,其实就是图片名称。 在Jmeter的文件上传中把图片路径配置上去 配置上传参数,接口URL,请求方式...