java测试脚本怎么写_Jmeter测试脚本编写(初学者熟悉篇)
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测试脚本编写(初学者熟悉篇)相关推荐
- python自动化测试脚本怎么写_自动化测试脚本一般用什么语言写
1. 自动化测试脚本一般用什么语言写 我主要是做web测试的,最近也在研究自动化测试. 自动化测试主流的工具应该是QTP吧,这个你可以去51testing论坛搜到很多相关的资料.QTP是一个商业软件. ...
- linux gdb 脚本,如何写gdb命令脚本
作为UNIX/Linux下使用广泛的调试器,gdb不仅提供了丰富的命令,还引入了对脚本的支持:一种是对已存在的脚本语言支持,比如python,用户可以直接书写python脚本,由gdb调用python ...
- 订单流失总金额怎么算_抖音直播脚本怎么写?直播脚本创作必备的7大要素
你直播时,是不是也遇到过这样的问题: 抖音直播脚本 不知道如何讲解产品:不知道如何回答粉丝的问题:不知道在讲述什么重点又是什么:面对一些粉丝的尖锐问题会手举无措:没有话题强行尬聊-- 近年来,随着抖音 ...
- 路由器运行python脚本_写个Python脚本来登录小米路由器
这个脚本写起来难度并不是很大,博主还是一步步的分析下,这样思路会比较清晰,下次遇到类似系统脚本写起来也更快速.好了,一起来分析分析. 首先看下小米路由器的登录界面 可以看到只需要输入密码即可登录,博主 ...
- linux脚本怎么写的,linux脚本怎么写条件语句卡密卡密
)-> 如果我们在funcb调用语句的后面在加一个无效语句,执行时会弹出错误msg框,说明函数体内的On error resume Next不能作用到函数体外很简单的,现在就尝试一下吧 strC ...
- html如何调用短视频文件,短视频脚本怎么写?3种短视频脚本的创意写作方法干货分享!...
短视频的崛起给了很多人发挥才能.自主创业的机会.而要想从短视频流量巨海中脱颖而出,除了本身所具备的才能外,还要求我们在短视频内容创作时有令人惊叹的创意. 其中,短视频脚本创作就是一个关键环节. 那么, ...
- linux开发板测试,Linux 开发板常规测试
[正点原子]I.MX6U用户快速体验V1.2.pdf 1. LED 与蜂鸣器测试 LED 测试 echo none > /sys/class/leds/sys-led/trigger # 改变 ...
- Java实战:Robot脚本自动写博客
Java实战:Robot脚本自动写博客 Java实战:Robot脚本自动写博客 Robot类 常用API 鼠标: 键盘 屏幕 控制 小技巧 实战代码 先上代码: 用法: 注意: 效果: Java实战: ...
- python并发测试脚本语言_python并发测试脚本
这两天要做性能测试,自己没事用python写了个脚本,用于压力测试 # -*- coding: utf8 -*- # code by Shurrik import threading, time, h ...
- python刷新网页脚本_python语言如何测试实现页面下拉刷新
2017-05-10 回答 对于各种驱动接口,python来编写测试用例的好处是:由于python不需要编译,你所执行的也就是你所编写的,当发生异常的时候,你无须打开集成开发环境,加载测试工程.并调试 ...
最新文章
- 如何在notebook中的markdown中插入截取的图片_96编辑器教你如何在文章中插入图片、视频、音频!...
- XSZD00982 流向屏闭
- .NET Core 使用 nlog 进行日志记录
- 旗帜鲜明的反对李彦宏当选院士!
- IPC-----消息队列
- 与指定数字相同的数的个数(信息学奥赛一本通-T1102)
- hbase的2.2.4版本支持哪个版本的hadoop_2019 年,Hadoop 还是数据处理的可选方案吗?...
- StarlingMVC:为Starling量身打造的MVC框架
- 拓端tecdat|R语言资产配置: 季度战术资产配置策略研究
- 有关使用seajs和template模板的总结
- NPM ---- 安装yarn
- 网络技术与技术革命周末随想
- NOIP2004提高组 合唱队形
- 腾讯王卡运营坑之一:web容器优雅停机缓慢
- Python_Dataframe_去除重复数据
- 吐血分享:QQ群霸屏技术教程2017(维护篇)
- 【MySQL】MySQL用 limit 为什么会影响性能?
- 猝灭剂BHQ-1 amine/1308657-79-5/BHQ-2 氨基/1241962-11-7者相关的物理性质还是有一定的区别,整理以下相关的数据进行对比。
- XStream 简介
- 网友感到担忧!iOS 17支持第三方应用商店:这下跟安卓没区别了
热门文章
- 局域网、城域网IEEE802(LAN/MAN)标准——【局域网、城域网网络知识基础篇】
- 统计数字会撒谎-读书笔记
- 使用 Calibre Web 搭建私人电子图书馆
- 绕过卡巴斯基dump进程lsass.exe内存
- ccsk matlab,一种CCSK解调预处理方法与流程
- AI 医生“战疫”在前线
- 2018年的43个最佳网络监控工具
- floppy计算机专业术语,计算机专业术语解释
- tomato 无线打印服务器,转一篇关于Tomato无线设置的文章
- HDU 5478 Can you find it (卡常数)2015 ACM/ICPC Asia Regional Shanghai Online