JMeter学习(十五)JMeter测试Java(转载)
转载自 http://www.cnblogs.com/yangxia-test
目的:对Java程序进行测试
目录
一、核心步骤
二、实例
三、JMeter Java Sampler介绍
四、自带Java Request Sampler
一、核心步骤
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() |
JMeter默认实现了两个Java Request Sampler:SleepTest Sampler和JavaTest Sampler。
JavaTest Sampler不向服务器发送数据请求,一般被用作调试目的使用。
至此,这已讲解完了。
JMeter学习(十五)JMeter测试Java(转载)的更多相关文章
- <转>jmeter(十五)函数助手
jmeter作为一个开源的性能测试工具,作用还是蛮强大的,找到一篇对jmeter中函数助手解释蛮详细的一篇博客,感觉不错,转载过来,希望对大家有所帮助. 由于时间和版本问题,其中有些内容和排版我做了修 ...
- jmeter(十五)Jmeter默认报告优化
一.本文目的: 之前写了两篇文章搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)和ANT批量执行Jmeter脚本,功能实现上都没有什么问题,但是最后生成的报告有一点小问题,虽然不影响使 ...
- Jmeter(三十五) - 从入门到精通进阶篇 - 关联(详解教程)
1.简介 上一篇中介绍了如果想要同时发送多条请求,那么怎样才能让每条数据某些请求参数改变呢.这就用到了jMeter参数化.在实际测试场景中,我们往往还有这样的需求,登录后服务器响应的token作为下次 ...
- 强化学习(十五) A3C
在强化学习(十四) Actor-Critic中,我们讨论了Actor-Critic的算法流程,但是由于普通的Actor-Critic算法难以收敛,需要一些其他的优化.而Asynchronous Adv ...
- JMeter学习笔记——认识JMeter(1)
拿到一个自动化测试工具,我们第一步就应该了解它能提供我们哪方面的功能(最直接的方法就是从官网获取),接下来就是简单的对这个工具进行“功能测试”了,当然这里的功能测试不是让你找它存在的bug,而是让自己 ...
- Jmeter学习一:Jmeter性能测试环境搭建(Windows下)
最近刚开始接触Jmeter性能测试,现总结环境搭建如下: 一.windows安装JDK步骤与环境变量配置: 1.先将下载的JDK安装到其默认目录:C:\Program Files\Java\jdk1. ...
- Jmeter学习前提:Jmeter安装
一.Jmeter下载 1. 前提:已经安装 jdk8+ 1.1 JDK下载 a. 进入jdk8+下载地址:https://www.oracle.com/technetwork/java/javase/ ...
- 聊聊高并发(二十五)解析java.util.concurrent各个组件(七) 理解Semaphore
前几篇分析了一下AQS的原理和实现.这篇拿Semaphore信号量做样例看看AQS实际是怎样使用的. Semaphore表示了一种能够同一时候有多个线程进入临界区的同步器,它维护了一个状态表示可用的票 ...
- 用BlazeMeter录制JMeter(三十五)测试脚本(转载)
转载自 http://www.cnblogs.com/yangxia-test 工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤 ...
- Jmeter(二十五)常见问题(转载)
转载自 http://www.cnblogs.com/yangxia-test 收集工作中JMeter遇到的各种问题 1. JMeter的工作原理是什么? 向服务器提交请求:从服务器取回请求返回 ...
随机推荐
- 【转载】Putty出现 Network error:Software caused connection abort
一.putty發生 network error 开始菜单进入regedit,尋找 HKEY_CURRENT_USER\Software\SimonTatham 并把这个目录下的子目录全部删除,删除前务 ...
- ssm学习的第一个demo---crm(4)
(1)在crm系统中点击修改弹出了修改的框,这个使用bootstrap做的,然后看jsp代码,找到 用editCustomer,按Ctrl+k找到了次函数,edit.action没有,创建 (2)去持 ...
- 机器学习进阶-图像基本操作-边界补全操作 1.cv2.copyMakeBoder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_REPLICATE) 进行边界的补零操作 2.cv2.BORDER_REPLICATE(边界补零复制操作)...
1.cv2.copyMakeBoder(img, top_size, bottom_size, left_size, right_size, cv2.BORDER_REPLICATE) 参数说明: i ...
- css样式表2
<head> <style type="text/css"> .main { height:42px; width:100%; text-align:cen ...
- Python集合的基本操作
#-*coding:utf-8 -* list =set([2,3,4]) list2 =set([5,3,7]) #交集 #print (list.intersection(list2)) #并集 ...
- Tomcat虚拟目录设置
ssh $host "rm -fr /var/www/$tomcat_name/webapps/*" 远程分发war包部署tomcat项目时,需要先清除项目目录. -------- ...
- python小实例一:简单爬虫
本文所谓的爬虫就是通过本地远程访问url,然后将url的读成源代码形式,然后对源代码进行解析,获取自己需要的数据,相当于简单数据挖掘.本文实现的是将一个网页的图片爬出保存到本地的过程,例子很简单,用的 ...
- 一个困扰了我N久的bug , android.enableAapt2=false 无效
Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT error: c ...
- delphi通过TADOConnection组件直接连接MSSQL数据库并读写数据。
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...
- http://sourceforge.net/projects/rtspdirectshow/
如何做一个解析rtsp协议的h264压缩的实时视频流播放器,带保存功能,目前我有rtsp协议的h264压缩后的实时视频流,目前想开发一个客户端,来播放该实时视频流,同时保存为视频文件,目前似乎有方案是 ...