[转]jmeter 自定义测试脚本
http://blog.csdn.net/kash_chen007/article/details/37690411
http://wangym.iteye.com/blog/731729
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目录,其他依赖的jar包可以放到lib下。
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() |
JMeter默认实现了两个Java Request Sampler:SleepTest Sampler和JavaTest Sampler。
JavaTest Sampler不向服务器发送数据请求,一般被用作调试目的使用。
至此,这已讲解完了。
[转]jmeter 自定义测试脚本的更多相关文章
- JMeter性能测试基础 (4)-使用JMeter录制测试脚本
在进行压力测试时,由于很多web页面包含了Ajax异步请求等内容,为模拟用户真实输入,除了对html的访问外,还需要将其它的访问考虑入内,这时最好的办法就是对实际访问过程中的所有请求进行录制. 例如, ...
- 用BlazeMeter录制JMeter测试脚本
工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤: 以上工具准备好以后就可以录制JMeter的测试脚本了, 在Chrome中点击 ...
- 菜鸟教程之工具使用(十)——用BlazeMeter录制JMeter测试脚本
工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤: 以上工具准备好以后就可以录制JMeter的测试脚本了, 在Chrome中点击 ...
- 用BlazeMeter录制JMeter(三十五)测试脚本(转载)
转载自 http://www.cnblogs.com/yangxia-test 工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤 ...
- jmeter压力测试笔记- HTTP协议
一.目标 使用jmeter进行HTTP接口压力测试: 命令行方式运行,方便在linux环境运行: 二.面临的问题 支持多环境测试(开发.测试.生产环境) 支持用户数据.线程数.循环次数等配置在运行时自 ...
- 【NO.11】Jmeter - 构建1个可供Linux使用的Jmeter测试脚本 - 共3个步骤
在Linux使用Jmeter做性能测试需要4个前提条件,这4个前提条件已经在之前的文档里提到了,重复一下加深印象: (1) 在本地已安装xshell 参考<SecureCRT-转换密钥-Xshe ...
- JMeter http(s)测试脚本录制器的使用
JMeter http(s)测试脚本录制器的使用 by:授客 QQ:1033553122 http(s) Test Script Recorder允许Jmeter在你使用普通浏览器浏览web应用时,拦 ...
- 【jmeter】jMeter使用Badboy录制Web测试脚本
JMeter 是纯Java编写的软件功能和性.能测试工具,其录制脚本过于笨拙和复杂.而Badboy是用C++开发的动态应用测试工具,其拥有强大的屏幕录制和回放 功能,同时提供图形结果分析功能,刚好弥补 ...
- 使用JMeter代理录制app测试脚本
准备条件:JMeter.手机app 上一篇介绍过录制Web测试脚本的方式有两种,使用代理和使用第三方工具.本篇录制app测试脚本只讨论使用代理的方式,其他方式以后有机会再补充.其实Web和app使用代 ...
随机推荐
- php阿里云oss文件上传
php的文件上传 文件上传 php的文件上传放在了$_FILES数组里,单文件和多文件上传的区别在于$_FILES['userfile']['name']是否为数组, 不熟悉的可以读一下官方文档 单文 ...
- 为什么hash作为内存使用的经典数据结构?
听到这样说法:hash是内存中使用的经典数据结构.内存是典型的随机访问设备. 为什么hash这种数据结构很适合内存使用呢?如何理解内存是随机访问设备呢? 因为我想知其所以然,如何理解背后的原因,我花费 ...
- InstallShield脚本事件
脚本事件主要有三大类:Before Move Data(安装数据前).Move Data(安装数据过程中).After Move Data(安装数据后). OnBegin:在初始化后,被调用 OnFi ...
- python 文件 IO 操作
Python 的底层操作 * 其实Python的文件IO操作方法,和Linux底层的差不多 打开 f = open(filename , "r") 后面的 "r" ...
- SD卡镜像烧写--树莓派为例
SD烧写镜像都要先擦除SD卡内容,然后用image烧写工具烧写镜像. SD卡标准官网:www.sdcard.org,提供标准的擦除工具sdformatter. windows下镜像烧写工具可选用Win ...
- WCF安全:通过 扩展实现用户名密码认证
在webSservice时代,可以通过SOAPHEADER的方式很容易将用户名.密码附加到SOAP header消息头上,用户客户端对调用客户端身份的验证.在WCF 时代,也可以通过Operation ...
- error TRK0002: Microsoft Visual Studio 10.0\VC\bin\link.exe Access is denied.
When you compile project, visual studio 2010 prompts “…link.exe … Access is denied” This below is I ...
- 基于Cookie的购物车
var Cookies = {}; Cookies.set = function (name, value) { var argv = arguments; var argc = arguments. ...
- 【C】——strtok()和strtok_r()
下面的说明摘自于最新的Linux内核2.6.29,说明了strtok()这个函数已经不再使用,由速度更快的strsep()代替 /** linux/lib/string.c** Copyright ( ...
- 《C++程序设计教程——给予Visual Studio 2008》读书笔记3章
CLR(Common Language Runtime,通用运行时),负责在执行时管理代码,提供内存管理和线程管理等核心服务,同时又确保代码的安全性和准确性.