JMeter学习十八JMeter测试Java二

实例:

服务为:将输入的两个参数通过IO存入文件;

1、打开MyEclipse,编写Java代码
服务:
package test;

import java.io.File;
import java.io.PrintWriter;

public class OutputService {
    public static void output(String filename, int a, int b) throws Exception {
        PrintWriter out = new PrintWriter(new File(filename));
        out.write(a + ":" + b);
        out.close();
    }
}

测试类:

package test;

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;

//服务为:将输入的两个参数通过IO存入文件;
public class PerformenceTest implements JavaSamplerClient {
    private SampleResult results;
    private String a;
    private String b;
    private String filename;

    // 设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中
    public Arguments getDefaultParameters() {
        Arguments params = new Arguments();
        params.addArgument("filename", "0");// 设置参数,并赋予默认值0
        params.addArgument("a", "0");// 设置参数,并赋予默认值0
        params.addArgument("b", "0");// 设置参数,并赋予默认值0
        return params;
    }

    // 初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行
    public void setupTest(JavaSamplerContext arg0) {
        results = new SampleResult();
    }

    // 测试执行的循环体,根据线程数和循环次数的不同可执行多次
    public SampleResult runTest(JavaSamplerContext arg0) {
        b = arg0.getParameter("b"); // 获取在Jmeter中设置的参数值
        a = arg0.getParameter("a"); // 获取在Jmeter中设置的参数值
        filename = arg0.getParameter("filename"); // 获取在Jmeter中设置的参数值
        results.sampleStart();// jmeter 开始统计响应时间标记
        try {
            OutputService test = new OutputService();
            test.output(filename, Integer.parseInt(a), Integer.parseInt(b));
            results.setSuccessful(true);
            // 被测对象调用
        } 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("a", "0");// 设置参数,并赋予默认值0
        params.addArgument("b", "0");// 设置参数,并赋予默认值0
        params.addArgument("filename","abc.txt");
        JavaSamplerContext arg0 = new JavaSamplerContext(params);
        PerformenceTest test = new PerformenceTest();
        test.setupTest(arg0);
        test.runTest(arg0);
        test.teardownTest(arg0);
    }
    */
}

生成jar包,放在JMeter_HOME/lib/ext目录下。

2、设置JMeter
以管理员身份打开JMeter,并创建Java Request后,结构如下图所示:
JMeter学习十八JMeter测试Java二
在Java请求中发现了自己新建的测试类:
JMeter学习十八JMeter测试Java二
我们在JMeter中发现参数有三个:
JMeter学习十八JMeter测试Java二
在这里我们使用到了两个函数:
(1)_Random生成随机整数;
(2)_RandomString生成随机字符串;
在线程组中设置并发线程数为5,保存后即可运行;
JMeter学习十八JMeter测试Java二
聚合报告:
JMeter学习十八JMeter测试Java二

结果成功,成功生成了5个文件:

JMeter学习十八JMeter测试Java二

3、遇到的问题

3.1 Export为Jar File导致Java Request的类名称无法找到;
3.2 JMeter java.lang.OutOfMemoryError: PermGen space问题:
在JMeter.bat 中修改:
set HEAP=-Xms512m -Xmx1024m
set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%
set TENURING=-XX:MaxTenuringThreshold=2
set RMIGC=-Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000
set PERM=-XX:PermSize=256m -XX:MaxPermSize=512m
3.3 JMeter需要以管理员身份打开,否则会出现:
JMeter学习十八JMeter测试Java二
更多相关文章
  • JMeter学习十九JMeter测试MongoDB
    JMeter测试MongoDB性能有两种方式,一种是利用JMeter直接进行测试MongoDB,还有一种是写Java代码方式测试MongoDB性能. 第一种方法 1.编写Java代码,内容如下: package com.test.mongodb; import java.io.File; impor ...
  • JMeter学习十四JMeter监控Tomcat性能
    使用jmeter的tomcat监视器功能,可以通过向tomcat的status页面发送get请求,得到资源使用信息,然后转换为只直观的图像方式,这样的话,就可以监视到服务器的资源使用情况,不过需要注意的是,要使用tomcat监视器功能,就必须在要监视的服务器上装有tomcat. 一.  配置$CAT ...
  • 在我们学习spring之前,根据spring的特性,我们来自己来模拟一个spring出来,也就是说不利用spring来实现spring的效果.本实例主要是实现spring的IOC功能.点击下载源码:用力点首先我们把我们用的dao.service.entity定义出来:Student.java :pa ...
  • 二叉树的三种递归遍历: StudentNode root = root.setName("Name1" StudentNode node2 = node2.setName("Name2" StudentNode node3 = node3.setName(&q ...
  •                                     路由映射实战二本篇博文和上一篇是紧密结合的,只是在上个试验的基础上作了改动,达到其他的试验效果. 试验二:在R1上增加一个网段,并发布路由.这里采用三种方法.如下是第一种,是在试验一的基础上直接增加一个网段,发布路由. A(co ...
  • 什么是Unicode(统一码)? Unicode给每个字符提供了一个唯一的数字, 不论是什么平台, 不论是什么程序, 不论是什么语言. 基本上,计算机只是处理数字.它们指定一个数字,来储存字母或其他字符.在创造Unicode之前,有数百种指定这些数字的编码系统.没有一个编码可以包含足够的字符:例如, ...
  • 白话学习MVC(八)Action的执行二
    ) ?; i < aliasedMethods.Length; i++; i < attributeCount; i++; i < attributeCount; i++; i >= ; i-- <; i < providers.Length; i++; i &g ...
  • Win2008学习十八,ADRMS保护office文档
    在上一篇博文中我们成功的部署的AD RMS服务,那么在本篇博文中我们将通过AD RMS服务来保护我们的office文档,下面我演示保护word,当然我们也可以保护ppt,excel,outlook等. 网络拓扑如下图 实验目标:win701上安装了office2010用户Mark创建一个Word,然 ...
一周排行
  • 我GTD的一天
        GTD: Getting Things Done的缩写.来自于David Alle ...
  • 如果你想租用我,QQ:26959368 价格可以详细谈哦, 1. 企业信息化过程中问题的免费咨询: 2. Office 365.Sharepoint Online .Azure 云的咨询服务. 3. SharePoi ...
  • PfSense基于BSD的软件防火墙的安装.配置与应用PfSense是一个FreeBSD下的免费开源的防火墙和路由器软件,他为了在X86平台上面建立一个高集成性的防火墙项目,下面就为大家展示如何配置应用.安装:htt ...
  • 大家千万不要错过这篇文章,毕业三年多了,能看到这篇文章也是一种幸运,真的受益匪浅,对我有很大启迪,这篇文章将会改变我的一生,真的太好了,希望与有缘人分享,也希望对有缘人有所帮助!看完之后有种“相见恨晚”的感觉,特别激 ...
  • 备份是网络管理的一份很重要的工作,不可小看,下面就来谈其方法:DHCP:DHCP的服务器数据库是一个动态数据库,其所有设置均保存在名为DHCP.MDB数据库文件中,该文件位于\windows \system32\ch ...
  • 1,安装字符集    比如安装cp)安装cp936>cd c:\\sybase\charsets\cp936c:\Sybase\charsets\cp936>charset -Usa -Ppas ...
  • 福州.昆明.乌鲁木齐.武汉 会议议程0--5 签到5--0 开场致辞0--0 VMware虚拟化解决方案0--5 VMware案例分析5--15 ...
  • 8-第 04 阶段-部署-基础-环境-动画(录制问题,造成无声音!)8-第 04 阶段-部署-基础-环境(PDF)链接:http://pan.baidu.com/s/1jIxsiC ...
  • 异常处理try:      try_suite  except exception1 as variable1:      exception_suite1  ...  except exceptionN as va ...
  • linuxoracle11gR2安装过程
    环境配置阶段:Memory RequirementsMinimum: 1 GB of RA ...