一.简介

Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率。

**开源,他是一款开源的免费软件,使用它你不需要支付任何费用,

**小巧,相比LR的庞大(最新LR11将近4GB),它非常小巧,不需要安装,但需要JDK环境,因为它是使用java开发的工具。

**功能强大,jmeter设计之初只是一个简单的web性能测试工具,但经过不段的更新扩展,现在可以完成数据库、FTP、LDAP、WebService等方面的测试。因为它的开源性,当然你也可以根据自己的需求扩展它的功能。

 

环境搭建:

jemter安装地址:http://jmeter.apache.org/

jemter官方学习地址:http://jmeter.apache.org/index.html

 

二.使用jemter做接口测试:

这里我们要注意有两种接口方式是很常用的:get和post,

下面来演示两者的不同。为了更好的区分,我在这里先简单的演示下它的不同:

get请求:http://localhost:8080?username=anqi&password=123456

post请求:http://localhost:8080

这样看是不是清楚多了

1.找到你安装的文件夹,找到bin文件夹,运行jemter.bat.打开jemter

 

2.新建一个线程组:

 
 

线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。

准备时长: 设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。

循环次数:每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送100次请求。总请求数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。

(这里要做接口测试,所以各个参数为均1。)

3.添加一个http请求:

 

4.例子:我要发送一个get方法的http

 

(这里顺路说一下用post请求跟get请求有什么区别,同样是图片来说明)

我要发送一个post方法的http

 

(这里对比一下就很容易看出区别了,get请求直接填就好了,post请求需要添加值)


get请求和post请求的区别:

1.get请求的后缀在地址栏里提交,post请求在webfroms中显示,以表单形式提交

2.get请求数据比较小,post请求数据比较大。

3.post请求相对比较安全


名称:本属性用于标识一个取样器,建议使用一个有意义的名称。

注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。

服务器名称或IP:HTTP请求发送的目标服务器名称或IP地址。

端口号:目标服务器的端口号,默认值为80 。

协议:向目标服务器发送HTTP请求时的协议,可以是http或者是https ,默认值为http 

方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。(一般使用get和post)

Content encoding:内容的编码方式,默认值为iso8859

路径:目标URL路径(不包括服务器地址和端口)

自动重定向:如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter 自动重定向到新的页面。

Use keep Alive: 当该选项被选中时,jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信,默认选中。

Use multipart/from-data for HTTP POST:当发送HTTP POST 请求时,使用Use multipart/from-data方法发送,默认不选中。

同请求一起发送参数: 在请求中发送URL参数,对于带参数的URL ,jmeter提供了一个简单的对参数化的方法。用户可以将URL中所有参数设置在本表中,表中的每一行是一个参数值对(对应RUL中的 名称1=值1)。

5.点击运行按钮,查看其结果。

 

除了使用查看结果树,我们常用的查看数据的方法还有添加聚合报告查看结果。

 

得到以下结果页面。

 

Label:每个JMeter的element(例如HTTP Request)都有一个Name属性,这里显示的就是Name属性的值

Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100

Average:平均响应时间——默认情况下是单个Request的平均响应时间,当使用了Transaction Controller时,也可以以Transaction为单位显示平均响应时间

Median:中位数,也就是50%用户的响应时间

90% Line:90%用户的响应时间

Note:关于50%和90%并发用户数的含义,请参考下文

http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html

Min:最小响应时间

Max:最大响应时间

Error%:本次测试中出现错误的请求的数量/请求的总数

Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了Transaction Controller时,也可以表示类似LoadRunner的Transaction per Second数

KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec

6.添加断言:右键点击HTTP请求“添加”-->“断言”-->“响应断言”。

对于自动化测试来说,断言必须要有的,如果没有断言我们只能人眼对比对接口返回的数据,有了断言功能,就会简化这个过程。Jmeter提供了丰富的断言方法来帮助我们完成这个工作。

 
 

要测试的响应字段:响应文本、Document(text)、URL样本、响应信息、Response Headers、Lgnore Staus等选项。虽然接口返回的是Json格式的数据,但对于Jmeter来说返回数据为文本,所以,这里可以勾选“响应文本”

模式匹配规则:包括、匹配、Equals、Substring。这里只需要验证返回数据中是否包含主要的关键字,所以,这里勾选“包括”。

要测试的模式:其实就是断言的数据。点击“添加”按钮,输入要断言的数据。

运行测试:

再次清除测试数据,点击启动测试,查看结果树,如下图。

 

这是个简单的接口测试,适合初学者。

jemter简单测试方式的更多相关文章

  1. Hyperledger Fabric:最简单的方式测试你的链码

    一直以来,写完链码进行测试都要先搭建一个Fabric环境,然后安装链码进行测试,实际上Fabric提供了最为简单的方式可以允许我们对编写的应用链码进行功能测试,不需要搭建一个完整的Fabeic环境.而 ...

  2. struts2+hibernate+spring注解版框架搭建以及简单测试(方便脑补)

    为了之后学习的日子里加深对框架的理解和使用,这里将搭建步奏简单写一下,目的主要是方便以后自己回来脑补: 1:File--->New--->Other--->Maven--->M ...

  3. struts2+hibernate+spring配置版框架搭建以及简单测试(方便脑补)

    为了之后学习的日子里加深对框架的理解和使用,这里将搭建步奏简单写一下,目的主要是方便以后自己回来脑补: 1:File--->New--->Other--->Maven--->M ...

  4. [20190423]简单测试latch nowilling等待模式.txt

    [20190423]简单测试latch nowilling等待模式.txt --//我对这个问题的理解就是如果参数willing=0,表示无法获取该latch,直接退出,再寻找类似的latch.--/ ...

  5. MyBatis简单使用方式总结

    MyBatis简单使用方式总结 三个部分来理解: 1.对MyBatis的配置部分 2.实体类与映射文件部分 3.使用部分 对MyBatis的配置部分: 1.配置用log4J显式日志 2.导入包的别名 ...

  6. Docker安装canal、mysql进行简单测试与实现redis和mysql缓存一致性

    一.简介 canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费. 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求 ...

  7. TODO:Golang UDP连接简单测试慎用Deadline

    TODO:Golang UDP连接简单测试慎用Deadline UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interco ...

  8. .net orm比较之dapper和Entity Framework6的简单测试比较

    .net orm比较之dapper和Entity Framework6的简单测试比较

  9. java最简单的方式实现httpget和httppost请求

    java实现httpget和httppost请求的方式多种多样,个人总结了一种最简单的方式,仅仅需几行代码,就能够完美的实现. 此处须要用到两个jar包,httpclient-4.3.1.jar.ht ...

随机推荐

  1. __proto__ VS. prototype in JavaScript

    __proto__ VS. prototype in JavaScript http://dmitrysoshnikov.com/ecmascript/javascript-the-core/#a-p ...

  2. loj#6034 「雅礼集训 2017 Day2」线段游戏

    分析 区间李超树板子题 代码 #include<bits/stdc++.h> using namespace std; #define db double const int inf = ...

  3. VASP学习笔记--简单的VASP运行实例:CrI3做非磁的优化

    一.总体思路 1)写入INCAR: 2)写入POSCAR,就是坐标文件: 3)写入KPOINTS文件,就是K点的选择: 4)写入POTCAR,写入POTCAR(找到势文件,然后按照POSCAR中的元素 ...

  4. WPF DevExpress Chart控件 需要引用的类库

    DevExpress.Charts.v16.1.Core.dll DevExpress.Data.v16.1.dll DevExpress.Mvvm.v16.1.dll DevExpress.Xpf. ...

  5. npm link的作用

    语法: 1. 在一个包目录下npm link (把当前的包目录软连接到global folder里面,把二进制文件也软连接到global的bin里面  这个prefix可以用npm config ls ...

  6. Apache hadoop namenode ha和yarn ha ---HDFS高可用性

    HDFS高可用性Hadoop HDFS 的两大问题:NameNode单点:虽然有StandbyNameNode,但是冷备方案,达不到高可用--阶段性的合并edits和fsimage,以缩短集群启动的时 ...

  7. maven dependency中scope=compile 和 provided区别

    问题再现: 上次这边朋友问我一个问题,就是他们在pom.xml中的dependency中,看到有一些是<scope>provided</scope>的情况,比如如下: < ...

  8. tensorflow2.0 numpy.ndarray 与tenor直接互转

    1.代码参考 import numpy as npimport tensorflow as tf a = np.random.random((5,3)) b = np.random.randint(0 ...

  9. 20191127 Spring Boot官方文档学习(9.1-9.3)

    9."使用方法"指南 9.1.Spring Boot应用程序 9.1.1.创建自己的FailureAnalyzer FailureAnalyzer被包装在FailureAnalys ...

  10. 基于 Timer是一种定时器工具

    没有依赖 通过Timer中的schedule方法启动定时任务 一般不采用此方法 /** * ------------------------------------------------------ ...