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. Python3返回函数

    函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = ...

  2. 汇编push,pop

    版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明.2019-08-24,00:40:12作者By-----溺心与沉浮----博客园 1.BASE,TOP是2个32位的通用寄存器,里面存储的 ...

  3. 【AI测试】也许这有你想知道的人工智能 (AI) 测试--第二篇

    概述此为人工智能 (AI) 测试第二篇 第一篇主要介绍了 人工智能测试.测试什么.测试数据等.第二篇主要介绍测试用例和测试报告.之后的文章可能具体介绍如何开展各项测试,以及具体项目举例如何测试.测试用 ...

  4. LeetCode——Employees Earning More Than Their Managers

    The Employee table holds all employees including their managers. Every employee has an Id, and there ...

  5. MAC盗版软件下载网站黑名单

    上面有大量的开源软件或者免费软件,拒绝盗版从我做起, 下面被删除的网站提供大量破解软件下载,欢迎大家监督它们. 玩转苹果:http://www.ifunmac.com Mac软件下载站:http:// ...

  6. 【洛谷P3749】[六省联考2017]寿司餐厅(网络流)

    洛谷 题意: 给出\(n\)份寿司,现可以选取任意多次连续区间内的寿司,对于区间\([l,r]\),那么贡献为\(\sum_{i=l}^r \sum_{j=i}^rd_{i,j}\)(对于相同的\(d ...

  7. 2019面向对象程序设计(Java) 第17周-18周学习指导及要求

    2019面向对象程序设计(Java)第17周-18周学习指导及要求 (2019.12.20-2019.12.31)   学习目标 (1) 理解和掌握线程的优先级属性及调度方法: (2) 掌握线程同步的 ...

  8. echars vue 封装全局组件 曲线 柱状图 同v-chars绿色系 配置样式

    Echars vue封装 ,曲线图 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  9. O2O场景下的推荐排序模型:

    推荐系统遇上深度学习(五)--Deep&Cross Network模型理论和实践 发表: 2018-04-22 推荐系统遇上深度学习系列:推荐系统遇上深度学习(一)--FM模型理论和实践:ht ...

  10. 求职-如何选择offer

    如何选择offer呢?下面我们从这几部分一起聊聊: HR问你目前拿到哪几个offer了怎么回答好? 选择小公司还是大公司? 为什么刚入行不要去没有人带的部门? 正式员工.合同工和外包人员有什么区别? ...