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的更多相关文章

  1. Jmeter使用笔记之断言

    前言 Jmeter的断言方式有很多种,由于在工作中经常做的是API接口测试,所以这篇文章主要介绍如何对接口的字段进行解析,如何对解析出来的字段的值断言 了解API接口 Restful API 规范 协 ...

  2. Jmeter学习笔记TWO

    使用非GUI模式运行Jmeter脚本并自动生成测试报告 命令:jmeter -n -t tougu.jmx -l result.jtl -e -o /tmp/ResultReport 这个命令是用于执 ...

  3. Jmeter学习笔记ONE

    最近想学一些关于性能测试方面的知识,其实之前已经初步了解了Jmeter工具,它是一个轻量级的性能测试工具,开源并且免费,相比于Loadrunner来说用起来更简便. JMeter 可以用于对服务器.网 ...

  4. jmeter使用笔记

    接口测试 http协议 接口分成两类,一类是查询功能的接口,一类是保存数据功能的接口. 保存逻辑:数据传入进来,验证通过.保存到数据表中 使用jmeter接口测试的步骤 1.首先添加线程组. 2.配置 ...

  5. JMeter 学习笔记从不懂慢慢提升(01)

    开源已经成为一个趋势,虽然说做测试是一个低端的行业,但是我们也应该在这个低端的行业慢慢提升自己,让自己到达理想的高度. 以前说如果你会使用loadrunner可能别人就会觉得你有一定的水平那么就会拿高 ...

  6. Jmeter 使用笔记之 html 报告扩展(一)

    题记:在用 loadrunner 的时候可以生成一个 HTML 的报告,并且里面包含各种图表,各种详细的数据.而在使用 Jmeter 测试完后并不能直接生成 Html 的报告(无论是用 GUI 还是命 ...

  7. Jmeter学习笔记

    Jmeter安装 Jmeter组件介绍 Jmeter

  8. jmeter学习笔记(一)

    1.添加JSON Path Extractor >>下载地址:http://jmeter-plugins.org/downloads/all/,下载 JMeterPlugins-Extra ...

  9. Jmeter学习笔记03-元件作用域及执行顺序

    Jmeter可以通过鼠标拖拽来随意改变元件之间的顺序以及元件的层级关系,随着元件所在域的不同,在执行时候,会有不同效果 层级关系和元件类型决定了在测试计划中各元件的执行顺序. 1)元件的作用域: jm ...

  10. JMeter学习笔记02-基础介绍

    基本构成 1)负载发生器:产生负载,多线程模拟用户行为 2)用户运行期:脚本运行引擎,用户运行器附加在线程上,根据指定脚本模拟指定的用户行为 3)资源发生器:生成测试过程中服务器.负载机的资源数据 4 ...

随机推荐

  1. JavaWeb项目——博客系统

    系统介绍 博客是互联网平台上的个人信息交流中心.通常博客就是用来发表文章,所有的文章都是按照年份和日期排列,有些类似斑竹的日记.看上去平淡无奇,毫无可炫耀之处,但它可以让每个人零成本.零维护地创建自己 ...

  2. leetcode - 链表两两元素交换 + 判断链表有无环

    链表两两元素交换 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3->4, 你 ...

  3. bootstrap搜索栏

    /*进行样式预习设置,body预留导航栏位置50px,mylogo样式是给把图表显示出来*/ <style> body{margin-top: 50px; } .my-logo{ disp ...

  4. Java垃圾回收。

    一:如何确定哪些对象应该被回收.  1.引用记数法.在对象中添加一个引用计数器,每当有一个地方引用它时,计数器加一,引用失效时,计数器减一,当计数器为0时,该对象是不可用的.   i:缺陷:会产生循环 ...

  5. ansible服务部署

    1.ansible.cfg配置文件 [defaults] #inventory= /home/op/ansible/testing #sudo_user=root remote_port=9122 r ...

  6. Python从零开始——迭代器与生成器

    一:迭代器 二:生成器

  7. linux设备驱动程序-设备树(1)-dtb转换成device_node

    linux设备驱动程序-设备树(1)-dtb转换成device_node 本设备树解析基于arm平台 从start_kernel开始 linux最底层的初始化部分在HEAD.s中,这是汇编代码,我们暂 ...

  8. Centos7 下安装Redis4.0.6

    一.安装redis 第一步:下载redis安装包 wget http://download.redis.io/releases/redis-4.0.6.tar.gz [root@iZwz991stxd ...

  9. 06webpack-- html-webpack-plugin的2个作用

    <!-- 15 html-webpack-plugin的2个作用 下载 cnpm i html-webpack-plugin -D 作用在==>内存中生成页面 在webpack中 导入在内 ...

  10. Anslble 部署安装

    安装文档:https://ansible-tran.readthedocs.io/en/latest/docs/intro_configuration.html https://docs.ansibl ...