Jmeter的Sampler用来模拟向被测试系统发起请求的,Jmeter会记录取样的结果,也就是TPS、响应时间等性能指标。接下来就是使用Java请求进行一个接口测试。

大致流程

1、导入jar包:导入Jmeter相关jar包

2、编写脚本:使用Eclipse或者IntelliJ IDEA,进行Java测试脚本的编写

3、导出为jar包:使用Eclipse或者IntelliJ IDEA将测试脚本编译打包为jar包导出

4、配置Jmeter:使用自编译的jar包,以及一些相关配置进行性能测试

5、选择自编写jar包:自编译jar包

6、Jmeter运行:开始运行

实战操作

一、核心步骤(以我实际操作为例)

1.创建工程

使用IntelliJ IDEA创建一个Java工程,取名为JmeterTest;

2.添加依赖

2.1lib及子目录依赖

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

注意:此处有坑,不能只添加lib这个大目录,还需要添加lib目录下的ext和junit目录,否则无法调用相关jar包

lib目录下两个两个子目录

2.2IDEA操作

1、打开 File -> Project Structure (Ctrl + Shift + Alt + S)或者使用快捷键

Project Structure

快捷键

Models添加依赖

3.脚本编写

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

public Arguments getDefaultParameters():设置可用参数及的默认值;

public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;

public SampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值;

public void teardownTest(JavaSamplerContext arg0):测试结束时调用;

3.1服务

package test;

import java.io.File;

import java.io.PrintWriter;

/**

* Created by April_Chou on 2018/4/10.

*/

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

}

}

3.2测试类:

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;

/**

* Created by April_Chou on 2018/4/10.

*/

public class PerformenceTestimplements JavaSamplerClient {

private SampleResultresults;

private Stringa;

private Stringb;

private Stringfilename;

// 设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中

public ArgumentsgetDefaultParameters() {

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

}

}

4.Export为Runnable Jar File

打开IDEA的file -> Project Structure或者快捷方式,进入项目配置页面。如下图:

Artifacts

点击Artifacts,进入Artifacts配置页面,点击 + ,选择如下图的选项

Artifacts

创建

说明:

第一步选择Main函数执行的类,可以进行自动搜索。

第二步选择如图的选项,目的是对第三方Jar包打包时做额外的配置,如果不做额外的配置可不选这个选项(但不保证打包成功)

第三步需要在测试类的目录下,新建一个resources目录,将MANIFEST.MF文件保存在这里面,因为如果用默认缺省值的话,在IDEA12版本下会有bug。

点击OK之后,出现如下图界面,右键点击output root,点击Create Directory,创建一个libs,将所有的第三方JAR放进libs目录下,成功之后,如下图所示:

libs

放入之后,点击我们要打成的jar的名字,这里面是JmeterTest.jar,选择classpath进行配置

classpath

添加libs/

最后点击配置页面的OK,完成配置。回到IDEA,点击Build->Build Artifacts,选择build

build

就会生成我们需要的jar包。其位置在项目目录的out目录下

jar包成功

5.Jmeter导入

将此jar包放入JMETER_HOME\lib\ext目录

6.打开Jmeter

建议以管理员身份打开JMeter

7.配置Jmeter

创建线程组、Java请求、图形结果、查看结果树、聚合报告、用表格察看结果,进行测试

注意:

这样的Java请求值需要你在相应的盘创建一个文件夹,否则会运行失败,我这里是D盘创建了一个test的文件夹。

界面

Java请求里的参数可以使用函数助手进行填充,如下图:

函数助手

函数助手

函数助手

线程组设置

8.运行结果

图形结果

用表格察看结果

察看结果树

聚合报告

参考:

java测试脚本怎么写_Jmeter测试脚本编写(初学者熟悉篇)相关推荐

  1. python自动化测试脚本怎么写_自动化测试脚本一般用什么语言写

    1. 自动化测试脚本一般用什么语言写 我主要是做web测试的,最近也在研究自动化测试. 自动化测试主流的工具应该是QTP吧,这个你可以去51testing论坛搜到很多相关的资料.QTP是一个商业软件. ...

  2. linux gdb 脚本,如何写gdb命令脚本

    作为UNIX/Linux下使用广泛的调试器,gdb不仅提供了丰富的命令,还引入了对脚本的支持:一种是对已存在的脚本语言支持,比如python,用户可以直接书写python脚本,由gdb调用python ...

  3. 订单流失总金额怎么算_抖音直播脚本怎么写?直播脚本创作必备的7大要素

    你直播时,是不是也遇到过这样的问题: 抖音直播脚本 不知道如何讲解产品:不知道如何回答粉丝的问题:不知道在讲述什么重点又是什么:面对一些粉丝的尖锐问题会手举无措:没有话题强行尬聊-- 近年来,随着抖音 ...

  4. 路由器运行python脚本_写个Python脚本来登录小米路由器

    这个脚本写起来难度并不是很大,博主还是一步步的分析下,这样思路会比较清晰,下次遇到类似系统脚本写起来也更快速.好了,一起来分析分析. 首先看下小米路由器的登录界面 可以看到只需要输入密码即可登录,博主 ...

  5. linux脚本怎么写的,linux脚本怎么写条件语句卡密卡密

    )-> 如果我们在funcb调用语句的后面在加一个无效语句,执行时会弹出错误msg框,说明函数体内的On error resume Next不能作用到函数体外很简单的,现在就尝试一下吧 strC ...

  6. html如何调用短视频文件,短视频脚本怎么写?3种短视频脚本的创意写作方法干货分享!...

    短视频的崛起给了很多人发挥才能.自主创业的机会.而要想从短视频流量巨海中脱颖而出,除了本身所具备的才能外,还要求我们在短视频内容创作时有令人惊叹的创意. 其中,短视频脚本创作就是一个关键环节. 那么, ...

  7. linux开发板测试,Linux 开发板常规测试

    [正点原子]I.MX6U用户快速体验V1.2.pdf 1. LED 与蜂鸣器测试 LED 测试 echo none > /sys/class/leds/sys-led/trigger # 改变 ...

  8. Java实战:Robot脚本自动写博客

    Java实战:Robot脚本自动写博客 Java实战:Robot脚本自动写博客 Robot类 常用API 鼠标: 键盘 屏幕 控制 小技巧 实战代码 先上代码: 用法: 注意: 效果: Java实战: ...

  9. python并发测试脚本语言_python并发测试脚本

    这两天要做性能测试,自己没事用python写了个脚本,用于压力测试 # -*- coding: utf8 -*- # code by Shurrik import threading, time, h ...

  10. python刷新网页脚本_python语言如何测试实现页面下拉刷新

    2017-05-10 回答 对于各种驱动接口,python来编写测试用例的好处是:由于python不需要编译,你所执行的也就是你所编写的,当发生异常的时候,你无须打开集成开发环境,加载测试工程.并调试 ...

最新文章

  1. 如何在notebook中的markdown中插入截取的图片_96编辑器教你如何在文章中插入图片、视频、音频!...
  2. XSZD00982 流向屏闭
  3. .NET Core 使用 nlog 进行日志记录
  4. 旗帜鲜明的反对李彦宏当选院士!
  5. IPC-----消息队列
  6. 与指定数字相同的数的个数(信息学奥赛一本通-T1102)
  7. hbase的2.2.4版本支持哪个版本的hadoop_2019 年,Hadoop 还是数据处理的可选方案吗?...
  8. StarlingMVC:为Starling量身打造的MVC框架
  9. 拓端tecdat|R语言资产配置: 季度战术资产配置策略研究
  10. 有关使用seajs和template模板的总结
  11. NPM ---- 安装yarn
  12. 网络技术与技术革命周末随想
  13. NOIP2004提高组 合唱队形
  14. 腾讯王卡运营坑之一:web容器优雅停机缓慢
  15. Python_Dataframe_去除重复数据
  16. 吐血分享:QQ群霸屏技术教程2017(维护篇)
  17. 【MySQL】MySQL用 limit 为什么会影响性能?
  18. 猝灭剂BHQ-1 amine/1308657-79-5/BHQ-2 氨基/1241962-11-7者相关的物理性质还是有一定的区别,整理以下相关的数据进行对比。
  19. XStream 简介
  20. 网友感到担忧!iOS 17支持第三方应用商店:这下跟安卓没区别了

热门文章

  1. 局域网、城域网IEEE802(LAN/MAN)标准——【局域网、城域网网络知识基础篇】
  2. 统计数字会撒谎-读书笔记
  3. 使用 Calibre Web 搭建私人电子图书馆
  4. 绕过卡巴斯基dump进程lsass.exe内存
  5. ccsk matlab,一种CCSK解调预处理方法与流程
  6. AI 医生“战疫”在前线
  7. 2018年的43个最佳网络监控工具
  8. floppy计算机专业术语,计算机专业术语解释
  9. tomato 无线打印服务器,转一篇关于Tomato无线设置的文章
  10. HDU 5478 Can you find it (卡常数)2015 ACM/ICPC Asia Regional Shanghai Online