关闭

jmeter调用jar包实现多线程

标签: jmeter调用jar包实现多线程
1911人阅读 评论(0) 收藏 举报
分类:

因为编写了接口测试代码,领导要求打包jar放入jmeter中进行多线程压力测试,所以我使用了将数据参数化,在jmeter中调用并设置参数。找了一篇比较有用的文章,内容如下:


参考:http://www.cnblogs.com/yangxia-test/p/4019541.html


一、核心步骤

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目录;

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不向服务器发送数据请求,一般被用作调试目的使用。




0
0
查看评论

使用jmeter实现对jar包的调用

一.前言 在我们测试接口的过程中,可能有时需要用到第三方jar包来生成一些测试数据(如有时需要对参数的输入值使用第三方jar包进行加密操作),涉及到这种的情况,普遍做法是:手动调用jar包获得需要的值,再把这些值赋值给jmeter中的某一个参数。这样的做法是繁琐的,而jmeter有调用jar包的功能...
  • dushu990
  • dushu990
  • 2016-06-20 11:36
  • 10161

如何在Jmeter中使用外部的java文件

感觉在Jmeter中使用外部的java文件比较方便,语法一样,而且可以直接引用,所以个人觉得这个功能还是蛮重要的,特别是在使用Jmeter的过程中,可能需要结合一定的业务场景进行判断等,那使用Jmeter带有的函数可能并不能够满足自己的测试需求,在这时候,使用自己编写的函数就可以很好的满足自己的需求...
  • quiet_girl
  • quiet_girl
  • 2016-02-26 10:11
  • 4300

JMeter中引入外部的JAR包给bean shell 使用(提供三种方法)

在JMeter中在bean shell中可能要引用外部的JAR包,这里给出三种方法。
  • timchen525
  • timchen525
  • 2017-07-21 22:55
  • 1578

如何在Jmeter中使用外部的java文件

转载地址:http://blog.csdn.net/quiet_girl/article/details/50747666 感觉在Jmeter中使用外部的java文件比较方便,语法一样,而且可以直接引用,所以个人觉得这个功能还是蛮重要的,特别是在使用Jmeter的过程中,可能需要结...
  • wanglha
  • wanglha
  • 2016-03-02 17:17
  • 3825

使用Apache Jmeter进行并发压力测试

http://blog.jassassin.com/2014/04/17/tools/jmeter/ 引文 最近工作需要通过Apache Jmeter对HBase的写入性能进行压力测试。本文主要介绍了Jmeter的基本使用,Jmeter相关扩展插件的简单使用! 概述 Apache...
  • hshl1214
  • hshl1214
  • 2016-01-31 16:52
  • 23962

Jmeter 中使用Beanshell来引用第三方jar包

Jmeter 中使用Beanshell来引用第三方jar包
  • DreamTL
  • DreamTL
  • 2016-06-28 13:45
  • 9027

JMeter+Maven 进行压力测试时候发生的包引用问题的解决方法

如果在JMeter中使用Maven打的包,有时候会出现某些jar包找不到异常; 然后再做各种配置调整后,重新打包,还是会出现同样的异常; 这时候,最好的办法就是,将使用的jar包,直接copy到JMeter的lib库内,问题立刻解决。
  • leeo1010
  • leeo1010
  • 2012-12-18 11:59
  • 1253

jmeter之加载依赖jar包

jmeter依赖包加载方式很多的 常规方法 jmeter_home/lib,这里可以放依赖包,重启jmeter生效,但是这样不便于包管理点击测试计划根节点,右下角有”Add directory or jar to classpath“,可以选择需要加载的jar包,相对前一种方法有所改善
  • u012338364
  • u012338364
  • 2015-12-09 11:26
  • 10169

JMeter学习(十七)JMeter测试Java

目的:对Java程序进行测试   目录 一、核心步骤 二、实例 三、JMeter Java Sampler介绍 四、自带Java Request Sampler   一、核心步骤 1.创建一个Java工程; 2.将JMeter的lib目录下的jar文件添加...
  • n8765
  • n8765
  • 2015-04-01 18:13
  • 625

jmeter3.0 http接口测试 每个线程且每次请求发送不同的数据

HTTP请求中将动态数据参数化加${}如:${notificationId} 增加CSV Data Set Config,见图片,注意variable names 参数不需要加${}
  • kaka20099527
  • kaka20099527
  • 2016-12-07 17:11
  • 1882
    个人资料
    • 访问:104361次
    • 积分:1815
    • 等级:
    • 排名:千里之外
    • 原创:72篇
    • 转载:42篇
    • 译文:0篇
    • 评论:7条
    最新评论