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

实例:

服务为:将输入的两个参数通过IO存入文件;

1、打开MyEclipse,编写Java代码
服务:
  1. package test;
  2.  
  3. import java.io.File;
  4. import java.io.PrintWriter;
  5.  
  6. public class OutputService {
  7. public static void output(String filename, int a, int b) throws Exception {
  8. PrintWriter out = new PrintWriter(new File(filename));
  9. out.write(a + ":" + b);
  10. out.close();
  11. }
  12. }

测试类:

  1. package test;
  2.  
  3. import org.apache.jmeter.config.Arguments;
  4. import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
  5. import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
  6. import org.apache.jmeter.samplers.SampleResult;
  7.  
  8. //服务为:将输入的两个参数通过IO存入文件;
  9. public class PerformenceTest implements JavaSamplerClient {
  10. private SampleResult results;
  11. private String a;
  12. private String b;
  13. private String filename;
  14.  
  15. // 设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中
  16. public Arguments getDefaultParameters() {
  17. Arguments params = new Arguments();
  18. params.addArgument("filename", "0");// 设置参数,并赋予默认值0
  19. params.addArgument("a", "0");// 设置参数,并赋予默认值0
  20. params.addArgument("b", "0");// 设置参数,并赋予默认值0
  21. return params;
  22. }
  23.  
  24. // 初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行
  25. public void setupTest(JavaSamplerContext arg0) {
  26. results = new SampleResult();
  27. }
  28.  
  29. // 测试执行的循环体,根据线程数和循环次数的不同可执行多次
  30. public SampleResult runTest(JavaSamplerContext arg0) {
  31. b = arg0.getParameter("b"); // 获取在Jmeter中设置的参数值
  32. a = arg0.getParameter("a"); // 获取在Jmeter中设置的参数值
  33. filename = arg0.getParameter("filename"); // 获取在Jmeter中设置的参数值
  34. results.sampleStart();// jmeter 开始统计响应时间标记
  35. try {
  36. OutputService test = new OutputService();
  37. test.output(filename, Integer.parseInt(a), Integer.parseInt(b));
  38. results.setSuccessful(true);
  39. // 被测对象调用
  40. } catch (Throwable e) {
  41. results.setSuccessful(false);
  42. e.printStackTrace();
  43. } finally {
  44. results.sampleEnd();// jmeter 结束统计响应时间标记
  45. }
  46. return results;
  47. }
  48.  
  49. // 结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行
  50. public void teardownTest(JavaSamplerContext arg0) {
  51. }
  52.  
  53. /*
  54. public static void main(String[] args) {
  55. // TODO Auto-generated method stub
  56. Arguments params = new Arguments();
  57. params.addArgument("a", "0");// 设置参数,并赋予默认值0
  58. params.addArgument("b", "0");// 设置参数,并赋予默认值0
  59. params.addArgument("filename","abc.txt");
  60. JavaSamplerContext arg0 = new JavaSamplerContext(params);
  61. PerformenceTest test = new PerformenceTest();
  62. test.setupTest(arg0);
  63. test.runTest(arg0);
  64. test.teardownTest(arg0);
  65. }
  66. */
  67. }

生成jar包,放在JMeter_HOME/lib/ext目录下。

2、设置JMeter
以管理员身份打开JMeter,并创建Java Request后,结构如下图所示:
在Java请求中发现了自己新建的测试类:
 
我们在JMeter中发现参数有三个:
在这里我们使用到了两个函数:
(1)_Random生成随机整数;
(2)_RandomString生成随机字符串;
 
在线程组中设置并发线程数为5,保存后即可运行;
 
聚合报告:

结果成功,成功生成了5个文件:

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(二)(转载)的更多相关文章

  1. Java进阶(三十六)深入理解Java的接口和抽象类

    Java进阶(三十六)深入理解Java的接口和抽象类 前言 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太 ...

  2. JMeter学习(十五)JMeter测试Java(转载)

    转载自 http://www.cnblogs.com/yangxia-test 目的:对Java程序进行测试 目录 一.核心步骤 二.实例 三.JMeter Java Sampler介绍 四.自带Ja ...

  3. jmeter(十六)Jmeter之Bean shell使用(二)

    上一篇Jmeter之Bean shell使用(一)简单介绍了下Jmeter中的Bean shell,本文是对上文的一个补充,主要总结下常用的几种场景和方法,相信这些基本可以涵盖大部分的需求.本节内容如 ...

  4. jmeter(十六)Jmeter之Bean shell使用(一)

    一.什么是Bean Shell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; BeanShell是一种松散类型的脚本语言(这点和JS类似); BeanS ...

  5. 【转】使用JMeter 完成常用的压力测试(二)

    使用JMeter 完成常用的压力测试 Login.jsp 和welcome.jsp.其中 login.jsp 负责生成 User 对象,并调用 User 的login.当 login 返回为 true ...

  6. 性能测试工具JMeter 基础(六)—— 测试元件: 线程组

    线程组的定义: 线程组是测试计划执行的入口,所有的逻辑控制器和取样器都必须在线程组下,其他的元件根据位置的不同作用域是不同的. 线程组是每个线程都是独立运行测试脚本,一个线程组就等于一个用户,通过多个 ...

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

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

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

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

  9. Jmeter学习前提:Jmeter安装

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

  10. 强化学习(十六) 深度确定性策略梯度(DDPG)

    在强化学习(十五) A3C中,我们讨论了使用多线程的方法来解决Actor-Critic难收敛的问题,今天我们不使用多线程,而是使用和DDQN类似的方法:即经验回放和双网络的方法来改进Actor-Cri ...

随机推荐

  1. 8.2.1.2-MySQL如何优化 WHERE 语句

    这一章节讨论能够在WHERE处理语句中使用的优化. 样例使用SELECT 语句, 但是同样适用于DELETE,UPDATE语句中的WHERE语句. 注意 因为MYSQL优化器在不断的发展,MySQL执 ...

  2. Windows2008R2安装Exchange 2010前必须要做的准备工作

    由于WindowsServer2008R2已经包含了KB979099.KB982867.KB979744.KB983440.KB977020这些补丁的内容,所以无须另外下载安装. 详见https:// ...

  3. Maven上传jar包到私服

    1.认证,在M2_HOME/conf/settings.xml配置用户名密码 <server> <id>releases</id> <username> ...

  4. Maven运行的方式

    1.运行父工程(父工程将各个子模块聚合到一起) 2.直接运行子模块(Web工程)

  5. spark 练习

    scala> import org.apache.spark.SparkContext import org.apache.spark.SparkContext scala> import ...

  6. JavaScript 函数与对象的 简单区别

    直接上例子 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <met ...

  7. PHP AES加密解密。

    <?php namespace app\models; class AES{ public $key; //构造函数,用密钥初始化 function Prpcrypt( $k ) { $this ...

  8. UEditor 在ie中报console未定义解决方案

    解决办法:                  1.注释掉该代码               2.或者加入如下代码即可,本人已经测试过,没有问题. window.console = window.con ...

  9. spring cloud之路(1)

    1.各个功能 springcloud 注册中心 Eureka负载均衡 Ribbon路由网关 Zuul断路器 Hystrix分布式配置 config服务调用跟踪 sleuth日志输出 elk 认证集成 ...

  10. xlwt模块

    python使用xlwt模块操作Excel 该模块安装很简单 $ pip install xlwt 语法 import xlwt # 创建一个workbook 设置编码 workbook = xlwt ...