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 ...
随机推荐
- JavaWeb项目——博客系统
系统介绍 博客是互联网平台上的个人信息交流中心.通常博客就是用来发表文章,所有的文章都是按照年份和日期排列,有些类似斑竹的日记.看上去平淡无奇,毫无可炫耀之处,但它可以让每个人零成本.零维护地创建自己 ...
- leetcode - 链表两两元素交换 + 判断链表有无环
链表两两元素交换 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3->4, 你 ...
- bootstrap搜索栏
/*进行样式预习设置,body预留导航栏位置50px,mylogo样式是给把图表显示出来*/ <style> body{margin-top: 50px; } .my-logo{ disp ...
- Java垃圾回收。
一:如何确定哪些对象应该被回收. 1.引用记数法.在对象中添加一个引用计数器,每当有一个地方引用它时,计数器加一,引用失效时,计数器减一,当计数器为0时,该对象是不可用的. i:缺陷:会产生循环 ...
- ansible服务部署
1.ansible.cfg配置文件 [defaults] #inventory= /home/op/ansible/testing #sudo_user=root remote_port=9122 r ...
- Python从零开始——迭代器与生成器
一:迭代器 二:生成器
- linux设备驱动程序-设备树(1)-dtb转换成device_node
linux设备驱动程序-设备树(1)-dtb转换成device_node 本设备树解析基于arm平台 从start_kernel开始 linux最底层的初始化部分在HEAD.s中,这是汇编代码,我们暂 ...
- Centos7 下安装Redis4.0.6
一.安装redis 第一步:下载redis安装包 wget http://download.redis.io/releases/redis-4.0.6.tar.gz [root@iZwz991stxd ...
- 06webpack-- html-webpack-plugin的2个作用
<!-- 15 html-webpack-plugin的2个作用 下载 cnpm i html-webpack-plugin -D 作用在==>内存中生成页面 在webpack中 导入在内 ...
- Anslble 部署安装
安装文档:https://ansible-tran.readthedocs.io/en/latest/docs/intro_configuration.html https://docs.ansibl ...