Jmeter使用笔记1
1、简介
jmeter 是一款专门用于功能测试和压力测试的轻量级测试开发平台。多数情况下是用作压力测试,该测试工具在阿里巴巴有着广泛的使用。
2、安装
下载apache-jmeter-3.1.rar; 解压。

双击jmeter.bat启动。
3、配置Http请求
参考:https://blog.csdn.net/chenleixing/article/details/43418185

(1)建立一个测试计划:可以自己根据要测试的接口命名
(2)在新建的测试计划右键添加线程组,线程组可以设定要模拟的并发数:

设置200,相当于同时200个并发线程调用接口;可以设置一定循环次数,也可以设置为“永远”,设置为“永远”时候,要配置下方的调度器。
Rame-up Period seconds:隔多长时间启动线程。https://blog.csdn.net/sunwangdian/article/details/50738870
(3)添加Http请求:


(4)添加响应断言(接口返回的结果进行判断是否正确):

(5)添加“查看结果树”:
(6)添加“聚合报告”:会统计压测过程中的结果信息。

关于聚合报告的参数理解:
http://www.360doc.com/content/15/0228/11/20874412_451438418.shtml
4、配置Java请求
当Jmeter提供的Sampler不能满足需求,比如我们测试接口的参数需要自定义生成,或返回的需要较复杂的判断等,可以自定义Java请求,自己编写测试的Java用例。
参考:http://www.cnblogs.com/andashu/p/6296930.html
(1)创建Java测试项目。下图目录是我创建的项目。每个***Test代表对一个接口的测试用例。

(2)引入Jar包。我为了图方便把Jmeter中Lib目录下自带的Jar包都引入了。

(3)编写测试类。
第一,该类必须继承自AbstractJavaSamplerClient类或实现JavaSamplerClient接口,如下图:

需要重写以下方法:
1、public Arguments getDefaultParameters();设置入参,已设置的参数会显示在jmeter GUI的参数列表中。

上图中是该接口需要的入参,注意标红的部分我设置的入参是空,因为这个入参是要针对每次请求随机变化的,所以先设置为空,等稍后用Jmeter跑该Java请求测试时,会通过特殊方式为该入参单独进行设置。
2、public void setupTest(JavaSamplerContext context);初始化方法,用于初始化性能测试的每个线程,每个线程前都会执行一次。

3、public SampleResult runTest(JavaSamplerContext arg0);性能测试的线程运行体,测试执行主体,从arg0中获取参数,并调用被测方法,完成与服务器的交互。该方法是java Sampler实现的重点,执行次数取决于线程数和循环次数。

context中是设置的入参,可以根据自己要测试的接口构造完整的入参,以及提交请求(我的例子是自己编写的http工具类),并对返回的结果做相应的处理。通过result.samepleStart(),result.sampleEnd()来设置计时开始和结束的位置,其差值即为接口的耗时。
4、public void teardownTest(JavaSamplerContext arg0);测试结束时调用,每个线程执行一次。setupTest和teardownTest方法不需要时可以不写。

以上4个方法中只有runTest是必须实现的,其他3个可根据需求去覆盖。这4个方法执行的先后顺序与其前面的序号相对应,分别为:getDefaultParameters()、setupTest(JavaSamplerContext context)、runTest(JavaSamplerContext arg0)、teardownTest(JavaSamplerContext arg0)。
如果需要对多个方法进行性能测试,则需要建多个测试类,多个测试类可以放在同一个包下面,也可以放在单独的包中。
(5)将项目打包成jar包。并放入jmeter的扩展包目录下,即{Jmeter_home}\lib\ext,并将项目的依赖包都放到{Jmeter_home}\lib目录下。

(6)按照构建Http请求类似的方式,构建Java请求。

构建后如图所示:

注意标红框的地方,类名称选择自己构建的Java测试类;可以看见我们在Java测试类中的方法getDefaultParameters设置的入参都显示出来了,而我标红框的几个参数则对应我们之前设置入参的时候,把值预留为空的字段。这几个入参需要我们自定义,我们使用${cusotmerId}这种方式告诉Jmeter这个参数我从外部文件读进来,然后通过CSV Data Set Config设置外部的参数文件。
(7)CSV Data Set Config构建外部的参数文件。

添加的CSV Data Set如下图所示:

主要标明文件的位置,包含的入参以及(多个)入参的分隔符(可以为逗号)。其中入参的名字和步骤(6)中定义的入参(${customerId})保持一致。
CSV Data Set Config同样适用于Http请求。
Jmeter使用笔记1的更多相关文章
- Jmeter使用笔记之断言
前言 Jmeter的断言方式有很多种,由于在工作中经常做的是API接口测试,所以这篇文章主要介绍如何对接口的字段进行解析,如何对解析出来的字段的值断言 了解API接口 Restful API 规范 协 ...
- Jmeter学习笔记TWO
使用非GUI模式运行Jmeter脚本并自动生成测试报告 命令:jmeter -n -t tougu.jmx -l result.jtl -e -o /tmp/ResultReport 这个命令是用于执 ...
- Jmeter学习笔记ONE
最近想学一些关于性能测试方面的知识,其实之前已经初步了解了Jmeter工具,它是一个轻量级的性能测试工具,开源并且免费,相比于Loadrunner来说用起来更简便. JMeter 可以用于对服务器.网 ...
- jmeter使用笔记
接口测试 http协议 接口分成两类,一类是查询功能的接口,一类是保存数据功能的接口. 保存逻辑:数据传入进来,验证通过.保存到数据表中 使用jmeter接口测试的步骤 1.首先添加线程组. 2.配置 ...
- JMeter 学习笔记从不懂慢慢提升(01)
开源已经成为一个趋势,虽然说做测试是一个低端的行业,但是我们也应该在这个低端的行业慢慢提升自己,让自己到达理想的高度. 以前说如果你会使用loadrunner可能别人就会觉得你有一定的水平那么就会拿高 ...
- Jmeter 使用笔记之 html 报告扩展(一)
题记:在用 loadrunner 的时候可以生成一个 HTML 的报告,并且里面包含各种图表,各种详细的数据.而在使用 Jmeter 测试完后并不能直接生成 Html 的报告(无论是用 GUI 还是命 ...
- Jmeter学习笔记
Jmeter安装 Jmeter组件介绍 Jmeter
- jmeter学习笔记(一)
1.添加JSON Path Extractor >>下载地址:http://jmeter-plugins.org/downloads/all/,下载 JMeterPlugins-Extra ...
- Jmeter学习笔记03-元件作用域及执行顺序
Jmeter可以通过鼠标拖拽来随意改变元件之间的顺序以及元件的层级关系,随着元件所在域的不同,在执行时候,会有不同效果 层级关系和元件类型决定了在测试计划中各元件的执行顺序. 1)元件的作用域: jm ...
- JMeter学习笔记02-基础介绍
基本构成 1)负载发生器:产生负载,多线程模拟用户行为 2)用户运行期:脚本运行引擎,用户运行器附加在线程上,根据指定脚本模拟指定的用户行为 3)资源发生器:生成测试过程中服务器.负载机的资源数据 4 ...
随机推荐
- Android 自定义水平进度条的圆角进度
有时项目中需要实现水平圆角进度,如下两种,其实很简单 下面开始看代码,先从主界面布局开始看起: <?xml version="1.0" encoding=" ...
- Jmeter吞吐量控制器
吞吐量控制器 场景: 假如有两个业务分别是A, B在同一线程组内有10并发, 7个做A业务, 3个做B业务,吞吐量控制器比较推荐使用. 添加吞吐量控制器 用法1: Percent Executio ...
- Lumen5.7快速实现Captcha图片验证码功能
公司发送短信注册的接口需要防刷,需要一个图形验证码,不考虑收费产品. Lumen5.7+nginx+mysql 使用了这个作者的扩展包,只讲实现.https://github.com/Youngyez ...
- 设计模式小议:state【转】
转自:https://blog.csdn.net/goodboy1881/article/details/635963 这个模式使得软件可以在不同的state下面呈现出完全不同的特征 不同的theme ...
- adb shell提示“adb server is out of date.” 解决方法
[问题描述] 1.打开运行:window+R,输入cmd回车 2.使用命令 adb shell 无法登录安卓设备,提示如下: adb server is out of date. killing.. ...
- 03导航链接的制作(wx:for循环)和小程序警告request fail url not in domain list
06==>导航链接的制作 <!-- 导航链接 --> <navigator url="../list/list" hover-class="nav ...
- 03-cmake语法-变量,字符串
CMake的基本数据类型是字符串(不区分大小写),一组字符串在一起称为列表(list). 条件判断中的取值情况如下表: 真 1, ON, YES, TRUE, Y, 非0的数 假 0, OFF, N ...
- NOIP 2012 借教室
洛谷 P1083 借教室 https://www.luogu.org/problem/P1083 JDOJ 1783: [NOIP2012]借教室 D2 T2 https://neooj.com/ol ...
- leetcode209. 长度最小的子数组
双指针滑动窗口解法,时间复杂度O(N). 滑动窗口,想象一下,在一个坐标上存在两个指针begin 和i ,begin 代表滑窗的左边框,i代表滑窗的右边框.两者通过分别向右滑动,前者能使窗口之间的和减 ...
- Apex 的 API 简介
Salesforce 数据API分类 Salesforce中提供了四种数据API接口.数据API接口为开发者提供了操作Salesforce数据的能力.它们分别是: REST API:依据RESTful ...