JMeter入门(4):Java Request实例

目的:对Java程序进行测试

  一、核心步骤

  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、结果树,进行测试;

  二、实例

  利用JMeter对服务进行性能测试,服务为:将输入的两个参数通过IO存入文件;

  1、编写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();

}

}

  测试类:(见最后的测试类)

2、设置JMeter

  以管理员身份打开JMeter,并创建Java Request后,结构如下图所示:

  在Java请求中发现了自己新建的测试类:

  我们在JMeter中发现参数有三个:

  我们在响应的数值中填入:

  大家一定很奇怪,怎么会有一些看不懂的东西,这是JMeter提供的函数,我们可以在

  因为我们要做的是性能测试,因此我们需要开多个线程并发测试,因此随机数很重要;

  常用的函数为:

  (1)_Random生成随机整数;

  (2)_RandomString生成随机字符串;

  在线程组中设置并发线程数为10000,保存后即可运行;

  图形结果如下所示:

聚合报告:

  表格查看结果:

  结果成功,成功生成了接近10000个文件:

  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需要以管理员身份打开,否则会出现:


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;

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();

}

// 测试执行的循环体,根据线程数和循环次数的不同可执行多次

@Override

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

JavaSamplerContext arg0 = new JavaSamplerContext(params);

PerformenceTest test = new PerformenceTest();

test.setupTest(arg0);

test.runTest(arg0);

test.teardownTest(arg0);

}

}

Export 为 Runnable Jar File;

时间: 2024-10-08 00:29:35

JMeter入门(4):Java Request实例的相关文章

Thrift入门及Java实例演示<转载备用>

Thrift入门及Java实例演示 作者: Michael 日期: 2012 年 6 月 14 日 •概述 •下载配置 •基本概念 1.数据类型 2.服务端编码基本步骤 3.客户端编码基本步骤 4.数据传输协议 •实例演示(java) 1. thrift生成代码 2. 实现接口Iface 3.TSimpleServer服务模型 4.TThreadPoolServer 服务模型 5.TNonblockingServer 服务模型 6.THsHaServer服务模型 7.异步客户端 [一].概述 T

Spring MVC注解配置结合Hibernate的入门教程及其代码实例

原文:Spring MVC注解配置结合Hibernate的入门教程及其代码实例 源代码下载地址:http://www.zuidaima.com/share/1787210045197312.htm 1.概述 本文旨在搭建Spring MVC+Hibernate开发框架,通过一个简单的demo讲解Spring MVC的相关配置文件,以及通过注解方式实现简单功能. 开发框架:Spring+Spring MVC+Hibernate(Spring所用的版本为3.0.5). 数据库:MySQL(数据库名称

【转】JMeter入门

一.JMeter概述 JMeter就是一个测试工具,相比于LoadRunner等测试工具,此工具免费,且比较好用,但是前提当然是安装Java环境: JMeter可以做 (1)压力测试及性能测试: (2)数据库测试: (3)Java程序的测试: (4)HTTP及FTP测试: (5)Web Service测试: 等等: 和JMeter一起使用的可能是JDK自带的测试工具JConsole,位于JDK\bin\JConsole,此工具主要观察堆.JVM.CPU的使用情况,界面如下: 二.JMeter安装

webservice的Axis2入门教程java版

本文转自百度文库 Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物.Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的REST WebService,同时还支持Spring.JSON等技术.这些都将在后面的系列教程中讲解.在本文中主要介绍了如何使用Axis2开发一个不需要任何配置文件的WebService,并在客户端使用Java和C#调用这个WebService. 一.Axis2的下载和安装 读者可以从如下的网址下载Axis2的最新版本:

JMeter入门教程2:录制1

介绍录制功能开始前,大家有没有想过为什么要录制?原因无非是以下几种: 1.不会写代码 2.场景过于庞大 3.节约时间 其实大家能想到的,Apache都帮大家想到了.对于Jmeter而言,提供给大家非常多的可视化图形组件,帮助大家轻而易举地编辑脚本,并且最关键的是能够简单地把操作录制下来,同时录制功能非常的智能.这个我们在后面会慢慢介绍. 开始介绍录制之前聊一下我的体会,因为大家百度会发现不少关于jmeter录制功能的文章.而这些文章大部分还停留在原始社会即使用badboy进行录制.badboy是

RPC学习----Thrift快速入门和Java简单示例

一.什么是RPC? RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据.在OSI网络通信模型中,RPC跨越了传输层和应用层.RPC使得开发包括网络分布式多程序在内的应用程序更加容易. 二.什么是Thrift? thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和

JMeter入门使用指南

初识JMeter 最近开始接触和使用JMeter进行性能测试,也是因为工作需要,不得不学习更多新技能,在此之前一直使用LR进行WEB系统的压力测试,但是在ZK开发的WEB系统,我选择使用JMeter. 主要是因为ZK脚本安全性在代码中产生的随机值太多,LR关联起来太麻烦.JMeter就不同了, ZK官方针对这个问题,专门为JMeter工具写了测试插件,所有生成的随机码(dtid.uuid)都能自动关联上.既然官方已有插件的支持,为何要盯着代码在LR中做体力活呢(还不一定有效果至少目前在网上能搜到

零基础入门学习java,应该如何快速打好Java基础?

零基础入门学习java,应该如何快速打好Java基础?从大学到现在,我使用Java已经将近20年,日常也带实习生,还在公司内部做training,所以可以分享下我的经验,希望对你有用. 创一个小群,供大家学习交流聊天如果有对学java方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学习一起进步呀.也希望大家对学java能够持之以恒java爱好群,如果你想要学好java最好加入一个组织,这样大家学习的话就比较方便,还能够共同交流和分享资料,给你推荐一个学习的组织:快乐学习java组织

JMeter入门介绍

目录 概述 下载&安装 实战JMetetr 测试计划简述 准备测试计划 编写测试计划 录制测试脚本 执行性能测试 单机测试 分布式测试 分析测试报告 APDEX 响应时间和吞吐量统计 测试结果详细报表 常用插件及扩展 Q&A 概述 作为一名后端开发人员,熟练掌握一款性能测试工具非常有必要,这样有利于在技术选型时做一些参考. 常见的性能测试工具有:ab,JMeter,LoadRunner,他们都有各自的特点和应用场景: ab是Apache的一个工具组件,专门用于HTTP服务器测试. JMet