转载自 http://www.cnblogs.com/yangxia-test

目的:对Java程序进行测试

目录

一、核心步骤

二、实例

三、JMeter Java Sampler介绍

四、自带Java Request Sampler

一、核心步骤

1.创建一个Java工程;

2.将JMeter的lib目录下的jar文件添加进此工程的Build Path;

3.创建一个类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写;

  1. public Arguments getDefaultParameters();设置可用参数及的默认值;
  2. public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;
  3. public SampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值;
  4. 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,代码如下:

  1. package com.test.webservice;
  2.  
  3. public class Hello {
  4. public String sayHello()
  5. {
  6. return "Hello";
  7. }
  8. public String sayHelloToPerson(String s)
  9. {
  10. if(s == null || s.equals(""))
  11. s = "nobody";
  12. return (new StringBuilder()).append("Hello ").append(s).toString();
  13. }
  14. public int sum(int a,int b)
  15. {
  16. return a+b;
  17. }
  18. }

4.添加类perftest,并继承AbstractJavaSamplerClient,并添加代码如下:

注意:System.out等的输出会显示在启动JMeter时的命令窗口内,但过多的输出会影响性能的准确性。

  1. package com.test.webservice;
  2.  
  3. import org.apache.jmeter.config.Arguments;
  4. import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
  5. import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
  6. import org.apache.jmeter.samplers.SampleResult;
  7. import com.test.webservice.Hello;
  8.  
  9. public class perftest extends AbstractJavaSamplerClient {
  10. private String a;
  11. private String b;
  12. /** Holds the result data (shown as Response Data in the Tree display). */
  13. private String resultData;
  14.  
  15. // 这个方法是用来自定义java方法入参的。
  16. // params.addArgument("num1","");表示入参名字叫num1,默认值为空。
  17. //设置可用参数及的默认值;
  18. public Arguments getDefaultParameters() {
  19. Arguments params = new Arguments();
  20. params.addArgument("num1", "");
  21. params.addArgument("num2", "");
  22. return params;
  23. }
  24.  
  25. //每个线程测试前执行一次,做一些初始化工作;
  26. public void setupTest(JavaSamplerContext arg0) {
  27. }
  28.  
  29. //开始测试,从arg0参数可以获得参数值;
  30. public SampleResult runTest(JavaSamplerContext arg0) {
  31. a = arg0.getParameter("num1");
  32. b = arg0.getParameter("num2");
  33. SampleResult sr = new SampleResult();
         sr.setSampleLabel( "Java请求哦");
  34. try {
  35. sr.sampleStart();// jmeter 开始统计响应时间标记
  36. Hello test = new Hello();
  37. // 通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。
  38. resultData = String.valueOf(test.sum(Integer.parseInt(a), Integer
  39. .parseInt(b)));
  40. if (resultData != null && resultData.length() > 0) {
  41. sr.setResponseData("结果是:"+resultData, null);
  42. sr.setDataType(SampleResult.TEXT);
  43. }
  44. // System.out.println(resultData);
  45. sr.setSuccessful(true);
  46. } catch (Throwable e) {
  47. sr.setSuccessful(false);
  48. e.printStackTrace();
  49. } finally {
  50. sr.sampleEnd();// jmeter 结束统计响应时间标记
  51. }
  52. return sr;
  53. }
  54.  
  55. //测试结束时调用;
  56. public void teardownTest(JavaSamplerContext arg0) {
  57. // System.out.println(end);
  58. // System.out.println("The cost is"+(end-start)/1000);
  59. }
  60.  
  61. // main只是为了调试用,最后打jar包的时候注释掉。
  62. /*
  63. public static void main(String[] args)
  64. { // TODO Auto-generated method stub
  65. Arguments params = new Arguments();
  66. params.addArgument("num1", "1");//设置参数,并赋予默认值1
  67. params.addArgument("num2", "2");//设置参数,并赋予默认值2
  68. JavaSamplerContext arg0 = new JavaSamplerContext(params);
  69. perftestbbb test = new perftestbbb();
  70. test.setupTest(arg0);
  71. test.runTest(arg0);
  72. test.teardownTest(arg0);
  73. }
  74. */
  75. }

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

执行的先后顺序为:
getDefaultParameters() --> setupTest(JavaSamplerContext context) --> runTest(JavaSamplerContext context) --> teardownTest(JavaSamplerContext context)
 
常用的方法:
①、addArgument("name", "value")    定义参数
②、sampleStart()    定义事务的开始,类似于LR的lr_start_transaction,和LR一样事务间不要放无关代码
③、sampleEnd()    定义事务的结束,类似于LR的lr_end_transaction
④、setSuccessful(true、false)    设置运行结果的成功或失败,Jmeter统计成功失败的次数,在聚合报告中能够体现。
 
 
四、自带Java Request Sampler

JMeter默认实现了两个Java Request Sampler:SleepTest Sampler和JavaTest Sampler。

JavaTest Sampler不向服务器发送数据请求,一般被用作调试目的使用。

 
 

至此,这已讲解完了。

JMeter学习(十五)JMeter测试Java(转载)的更多相关文章

  1. <转>jmeter(十五)函数助手

    jmeter作为一个开源的性能测试工具,作用还是蛮强大的,找到一篇对jmeter中函数助手解释蛮详细的一篇博客,感觉不错,转载过来,希望对大家有所帮助. 由于时间和版本问题,其中有些内容和排版我做了修 ...

  2. jmeter(十五)Jmeter默认报告优化

    一.本文目的: 之前写了两篇文章搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)和ANT批量执行Jmeter脚本,功能实现上都没有什么问题,但是最后生成的报告有一点小问题,虽然不影响使 ...

  3. Jmeter(三十五) - 从入门到精通进阶篇 - 关联(详解教程)

    1.简介 上一篇中介绍了如果想要同时发送多条请求,那么怎样才能让每条数据某些请求参数改变呢.这就用到了jMeter参数化.在实际测试场景中,我们往往还有这样的需求,登录后服务器响应的token作为下次 ...

  4. 强化学习(十五) A3C

    在强化学习(十四) Actor-Critic中,我们讨论了Actor-Critic的算法流程,但是由于普通的Actor-Critic算法难以收敛,需要一些其他的优化.而Asynchronous Adv ...

  5. JMeter学习笔记——认识JMeter(1)

    拿到一个自动化测试工具,我们第一步就应该了解它能提供我们哪方面的功能(最直接的方法就是从官网获取),接下来就是简单的对这个工具进行“功能测试”了,当然这里的功能测试不是让你找它存在的bug,而是让自己 ...

  6. Jmeter学习一:Jmeter性能测试环境搭建(Windows下)

    最近刚开始接触Jmeter性能测试,现总结环境搭建如下: 一.windows安装JDK步骤与环境变量配置: 1.先将下载的JDK安装到其默认目录:C:\Program Files\Java\jdk1. ...

  7. Jmeter学习前提:Jmeter安装

    一.Jmeter下载 1. 前提:已经安装 jdk8+ 1.1 JDK下载 a. 进入jdk8+下载地址:https://www.oracle.com/technetwork/java/javase/ ...

  8. 聊聊高并发(二十五)解析java.util.concurrent各个组件(七) 理解Semaphore

    前几篇分析了一下AQS的原理和实现.这篇拿Semaphore信号量做样例看看AQS实际是怎样使用的. Semaphore表示了一种能够同一时候有多个线程进入临界区的同步器,它维护了一个状态表示可用的票 ...

  9. 用BlazeMeter录制JMeter(三十五)测试脚本(转载)

    转载自 http://www.cnblogs.com/yangxia-test 工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤 ...

  10. Jmeter(二十五)常见问题(转载)

    转载自 http://www.cnblogs.com/yangxia-test 收集工作中JMeter遇到的各种问题   1.  JMeter的工作原理是什么? 向服务器提交请求:从服务器取回请求返回 ...

随机推荐

  1. 【转载】Putty出现 Network error:Software caused connection abort

    一.putty發生 network error 开始菜单进入regedit,尋找 HKEY_CURRENT_USER\Software\SimonTatham 并把这个目录下的子目录全部删除,删除前务 ...

  2. ssm学习的第一个demo---crm(4)

    (1)在crm系统中点击修改弹出了修改的框,这个使用bootstrap做的,然后看jsp代码,找到 用editCustomer,按Ctrl+k找到了次函数,edit.action没有,创建 (2)去持 ...

  3. 机器学习进阶-图像基本操作-边界补全操作 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 ...

  4. css样式表2

    <head> <style type="text/css"> .main { height:42px; width:100%; text-align:cen ...

  5. Python集合的基本操作

    #-*coding:utf-8 -* list =set([2,3,4]) list2 =set([5,3,7]) #交集 #print (list.intersection(list2)) #并集 ...

  6. Tomcat虚拟目录设置

    ssh $host "rm -fr /var/www/$tomcat_name/webapps/*" 远程分发war包部署tomcat项目时,需要先清除项目目录. -------- ...

  7. python小实例一:简单爬虫

    本文所谓的爬虫就是通过本地远程访问url,然后将url的读成源代码形式,然后对源代码进行解析,获取自己需要的数据,相当于简单数据挖掘.本文实现的是将一个网页的图片爬出保存到本地的过程,例子很简单,用的 ...

  8. 一个困扰了我N久的bug , android.enableAapt2=false 无效

    Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT error: c ...

  9. delphi通过TADOConnection组件直接连接MSSQL数据库并读写数据。

    unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...

  10. http://sourceforge.net/projects/rtspdirectshow/

    如何做一个解析rtsp协议的h264压缩的实时视频流播放器,带保存功能,目前我有rtsp协议的h264压缩后的实时视频流,目前想开发一个客户端,来播放该实时视频流,同时保存为视频文件,目前似乎有方案是 ...