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,然 ...
一周排行
  • UltraEdit打开中文乱码
     UltraEdit很强大,但是今天发现在打开含有中文的文本时会乱码,还是在配置里找找相关 ...
  • 我将提供两种方法来安装smokeping,一种是大家常用的普通安装,另一种是用脚本下自动化安装的,仅供大家学习,参考!普通安装:centos 5.4下安装smokeping需要的软件:(1)httpd(2)rrdto ...
  • Samba做为Linux系统的文件服务器,有着广泛的应用,设置起来也是比较简单.主要关注的地方有四个地方(我的版本是3.0的,可能同以前的版本有些不同): 1.在全局配置下设置用户访问的权限.# ---------- ...
  •   轻博客的始祖是Tumblr,Tumblr目前有超过2800万的独立博客,平均每天这些博客可以发布超过1000万条的博文.截至目前,轻博客Tumblr博文数超过100亿,每月页面浏览量 120 亿.据相关媒体报道, ...
  • 对信息的加密是用的DES(具体加密方法的选用,可自行选择) public class DESUtil {           public static final String KEY_STRING = " ...
  •  Oracle Shared Server比较适合一些小而快的事务连接,这些事务的特点就是事务比较短,操作和返回的数据量比较少.而对于一些数据仓库而言,显然是不适合建成 Shared Server模式.下面说一下Sh ...
  • OpenWrt资料汇总
    上周末折腾了一下OpenWrt,打算把Facebook的网络模拟工具部署到上面,最终以失败 ...
  • [目标] 1.完成下图所示的View,View中的图片.文字数据从app.list文件读出. 2.思考代码哪里可以进行优化.              [分析] 1.创建控件 整个View分12个部分,其中包含一个  ...
  • C#使用QQ邮箱发送邮件
    首先要开通QQ邮箱的STMP服务.QQ邮箱——设置——账户——开启SMTP服务. 需要引用 ...
  • <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text ...