关于JMETER的简单整理

JMETER整理

·接口测试原理

-HTTP协议介绍

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件,图片文件,查询结果等)。

HTTP工作原理

HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。

Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTP默认端口号为80,但是你也可以改为8080或者其他端口。

HTTP三点注意事项:

  • HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
  • HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

HTTP消息结构

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line),请求头部(header),空行和请求数据四个部分组成。

服务器端HTTP响应由四个部分组成,分别是:状态行,消息报头,空行和响应正文。

实例一:

客户端请求:

User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi

服务器端响应:

Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

-HTTP状态码介绍

什么是HTTP状态码? 当浏览者访问一个网页时,浏览者的浏览器会向网页所在的服务器发出请求。当浏览器接受并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头,用以响应浏览器的请求。

常见的HTTP状态码:

  • 200 -请求成功

  • 301 -资源被永久转移到其他URL

  • 404 -请求的资源不存在

  • 500 -内部服务器错误

HTTP状态码分类:

  • 1** -信息,服务器收到请求,需要请求者继续执行操作

  • 2** -成功,操作被成功收到并处理

  • 3** -重定向,需要进一步的操作以完成请求

  • 4** -客户端错误,请求包含语法错误或无法完成请求

  • 5** -服务器错误,服务器在处理请求的过程中发生了错误

-浏览器抓包工具

-APP抓包工具

·Jmeter元件

-Java环境变量搭建

JDK下载

甲骨文官网:http://www.oracle.com/technetwork/java/javase/downloads/ 选择Accept License Agreement

关于JMETER的简单整理_第1张图片
oracle下jdk.png

JDK安装

关于JMETER的简单整理_第2张图片
安装jdk.png
关于JMETER的简单整理_第3张图片
安装二.png
关于JMETER的简单整理_第4张图片
安装三.png
关于JMETER的简单整理_第5张图片
安装四.png
关于JMETER的简单整理_第6张图片
安装五.png
关于JMETER的简单整理_第7张图片
安装六.png

JDK环境变量配置

1.新建JAVA_HOME环境变量,JAVA_HOME=C:\Java\jdk1.8.0_144

2.修改path环境变量,在path变量尾部添加%JAVA_HOME%\bin

3.新建classpath环境变量,classpath=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\tools.jar

关于JMETER的简单整理_第8张图片
配置一.png
关于JMETER的简单整理_第9张图片
配置二.png
关于JMETER的简单整理_第10张图片
配置三.png
关于JMETER的简单整理_第11张图片
配置四.png
关于JMETER的简单整理_第12张图片
配置五.png
关于JMETER的简单整理_第13张图片
配置六.png
关于JMETER的简单整理_第14张图片
配置七.png
关于JMETER的简单整理_第15张图片
配置八.png
关于JMETER的简单整理_第16张图片
配置九.png

验证java环境变量

关于JMETER的简单整理_第17张图片
效果一.png
关于JMETER的简单整理_第18张图片
效果二.png

-Jmeter部署

jmeter官网下载:https://jmeter.apache.org/download_jmeter.cgi

关于JMETER的简单整理_第19张图片
jmeter官网截图.png

WINDOWS系统下打开:
在jemter所在文件夹下的bin文件夹下,用管理员身份打开jmeter.bat文件
关于JMETER的简单整理_第20张图片
JMETER开始.png

jmeter打开成功界面如下:
关于JMETER的简单整理_第21张图片
jmeter开始界面.png

-Jmeter界面功能介绍

-Jmeter工作原理

原理概要:

向服务器提交请求,从服务器取回请求返回的结果。JMETER是浏览器于WEB服务器之间的代理网关,模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载 条件下的总性能情况。

基本原理:

建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言来验证结果的正确性,可以通过监听记录测试结果。

运行原理:

  • 通过线程组来驱动多个线程的方式运行。
  • 运行在JVM虚拟机上。
  • 可以进行分布式测试(分为控制机和负载机)
    • 控制机:运行负载测试、管理远程多台负载机;
    • 负载机:运行负载测试,向控制机发送测试结果。
    • 运行逻辑:启动Agent----》控制机连接负载机----》控制机发送运行指定----》负载机运行并回传测试结果----》控制机收集测试结果

-Jmeter三种不同线程组

Jmeter有三个线程组分类:Thread Group、setUp Thread Group、tearDown Thread Group,如图


关于JMETER的简单整理_第22张图片
jmeter线程组界面.png
  • thread group(线程组):通常运行的线程。通俗的讲,一个线程组,可以看成是一个虚拟用户组,线程组的每个线程可以理解成一个虚拟用户。
  • setUp thread group:一种特殊的ThreadGroup,可以执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这类线程执行测试前进行定期线程组的执行,测试开始时的初始化工作。
  • teardown thread group:一种特殊类型的ThreadGroup的,可执行测试后动作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组;测试结束时进行回收工作。

-Jmeter-GET请求

1.创建测试计划

默认启动jmeter时候会加载一个测试技术模板,保持测试计划 :修改名称,点击保存,选择保持路径。保存之后的操作步骤,每次添加或修改,软件并不会自动保存到jmx文件中,所以每次有修改后,如果需要保存本次修改内容,都需要手动到“文件”菜单中保存一次。

关于JMETER的简单整理_第23张图片
测试组.png

2.添加线程组

右键左边树中的测试计划“TestPlan"节点,添加--Threads--线程组

关于JMETER的简单整理_第24张图片
测试组1.png

关于JMETER的简单整理_第25张图片
测试组2.png

3.添加HTTP请求默认值

右键“线程组”,选择 “添加”--“配置元件”--“HTTP请求默认值”,点击“HTTP请求默认值”,添加成功后,线程组节点下会新增"HTTP请求默认值"

关于JMETER的简单整理_第26张图片
默认值.png

4.添加HTTP信息头管理器

非必须项。 右键“线程组”,选择“添加”--“配置元件”--“HTTP信息头管理器。

关于JMETER的简单整理_第27张图片
信息头.png

5.添加HTTP请求

右键“线程组”,选择“添加”--“Sample”--“HTTP请求”

关于JMETER的简单整理_第28张图片
请求.png
关于JMETER的简单整理_第29张图片
请求1.png

6.添加监听器

右键“线程组”,选择“添加”--“监听器”--“对应的监听器”,常用的监听器有:图形结果,查看结果树,聚合报告

关于JMETER的简单整理_第30张图片
监听.png
关于JMETER的简单整理_第31张图片
监听1.png

7.执行和结果分析

专业术语解析

  • Label:每个JMeter中的element都有一个name属性

  • # Samples:表示当前测试中一共发送了多少请求。如果模拟10个用户,循环10次,显示的是100

  • Average:平均响应时间--默认单个请求的平均响应时间

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

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

  • Min:最小响应时间

  • Max:最大响应时间

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

  • Throughput:吞吐量--默认表示每秒完成的请求数

  • KB/Sec:每秒从服务器端接收到的数据量

-Jmeter-POST请求

-Jmeter-JSON请求

  • 创建测试计划--添加测试组--添加HTTP信息头管理器--添加HTTP请求--添加结果监听“查看结果树”
  • 添加HTTP信息头管理器上,要做修改
关于JMETER的简单整理_第32张图片
json信息头设置.png
  • 点击“添加”后,在“名称”列上添加 Content-Type, 在“值”列上添加“application/json"

-Jmeter-header处理

  • 测试计划--线程组--配置元件--HTTP信息头管理器
名称
Content-Type application/json
Accept text/html,application/xhtml+html,application/xml;q=0.9,/;q=0.8
Accept-Language fr,fr-fr;q=0.8,en-us;q=0.5,en;
Accept-Encoding gzip,feflate

-Jmeter超时处理

  • 测试计划-线程组-HTTP Request Defaults -Advanced

  • Connect:连接超时设置,以毫秒为单位

  • Response:响应超时设置

关于JMETER的简单整理_第33张图片
超时设置.png

-Jmeter响应断言

  • 测试计划--线程组-断言-响应断言

  • Apply to :一般选择 Main sample only

  • Field to Test:一般选择Text Response,实例只简单判断,所以选择Response Headers

  • Pattern Matching Rules:匹配规则,一般选择Contains

关于JMETER的简单整理_第34张图片
断言.png

-Jmeter-JSON断言

·Jmeter参数化和结果分析

Jmeter查看结果树

  • 测试计划--线程组--添加--监听器-查看结果树
关于JMETER的简单整理_第35张图片
查看结果树.png

数据说明:

  • 左侧结果表

1.通常执行成功的请求在左侧显示绿色,执行失败的显示红色。

2.没有添加断言时,显示的绿色并不一定是测试结果的成功,只能代表响应码是200或者300系列,显示红色说明响应码是400或500系列。所以在判断请求返回是否测试结果,必须加上断言,只有断言成功的才会显示绿色。

  • 右侧结果表

1.显示的信息如下:

Thread Name:线程组名称

Sample Start:启动开始时间

Load time:加载时长,是测试常用的时间,也是整个请求的消耗时间

Latency:等待时长,不常用。表示请求发送到刚开始接收响应时的时间

Size in bytes:发送的数据总大小

Headers size in bytes:发送头大小

Body size in bytes:发送数据的其余部分大小

Sample Count:发送请求数统计

Error Count:交互错误统计

Response code: 返回码

Response message:返回信息

Response headers: 返回的头部信息

HTTPSampleResult:其他附加的请求信息

Jmeter参数化

  • 依赖Jmeter自带的函数助手
  • CSV Data Set Config
  • 用户定义变量
  • 正则表达式提取器获取
  • 从数据库中提取

Jmeter随机参数化

  • Tools--函数助手对话--__Random
关于JMETER的简单整理_第36张图片
函数助手.png
关于JMETER的简单整理_第37张图片
引用函数助手.png
关于JMETER的简单整理_第38张图片
函数助手结果.png
  • 测试计划--线程组--添加--配置元件--随机变量
关于JMETER的简单整理_第39张图片
随机.png

关于JMETER的简单整理_第40张图片
随机变量引用.png

关于JMETER的简单整理_第41张图片
随机变量结果.png

Jmeter唯一参数化

Jmeter日期参数化

Jmeter-CSV文件参数化

Jmeter聚合报告分析

Jmeter-Top响应时间分析

·Jmeter高级应用

Jmeter实时性能数据展示插件

Jmeter文件随机参数化

Jmeter扩展函数插件

Jmeter性能监控插件

Jmeter-if控制器

Jmeter-循环控制器

  • 循环控制有两处可以设置:
  • 1.一个是线程组里可以测试对整个线程组的循环次数设置
  • 2.逻辑控制器里的循环控制器也可以设置循环次数

循环次数(Loop Count):在输入框中输入的循环的次数,控制器下的子项会循环相应的次数。forever会一直循环下去

关于JMETER的简单整理_第42张图片
线程组中的循环.png
关于JMETER的简单整理_第43张图片
循环控制器.png

Jmeter-foreach控制器

Jmeter仅一次控制

  • 测试计划-线程组-添加-逻辑控制器-仅一次控制器
  • 仅一次控制器,会使该控制器下的子项每个线程只运行一次
关于JMETER的简单整理_第44张图片
仅一次控制器.png

Jmeter-cookie处理器

Jmeter-Json提取器

Jmeter-正则提取器

Jmeter定时器

·Jmeter场景测试

Jmeter上传场景测试

Jmeter下载场景测试

Jmeter登录COOKIE处理场景

Jmeter登录TOKEN处理场景

Jmeter-JDBC请求

Jmeter加密场景测试

Jmeter-webservice接口测试

·Jmeter扩展BeanShell

Beanshell介绍

Beanshell内置变量

Beanshel逻辑判断

Beanshell调用外部java文件

Beanshell断言

Beanshell写数据到文件

·Jmeter命令行模式

Jmeter命令行-单机

  • Jmeter除了界面窗口编写脚本外,还有一种命令行操作方式。一般情况下,界面使用在编写调试脚本,GUI模式进行压测,本身所需要的资源很高

命令介绍:

jmeter -n -t -l

示例:jmeter -n -t testplan.jmx -l test.jtl

示例说明:表示开始运行testplan.jmx文件,并输出监听日志文件test.jtl

命令行参数介绍:

-h 帮助 :打印出有用的信息并退出

-n 非GUI模式:在非GUI模式下运行Jmeter

-t 测试文件: 要运行的Jmeter测试脚本文件

-l 日志文件:记录结果的文件

-r 远程运行:在Jmeter.properties文件中指定的所有远程服务器

-H 代理主机:设置Jmeter使用的代理主机

-P 代理端口:设置Jmeter使用的代理主机的端口号

查看日志文件:


关于JMETER的简单整理_第45张图片
jtl日志查看.png

Jmeter命令行-分布式

分布式测试的处理过程如下:

  • 1.调度机master启动以后,会拷贝jmx文件分发到远程的slave机器上
  • 2.slave机器拿到脚本以后启动命令行模式去执行脚本,对于每台slave机器,拿到的脚本都是一样的。如果脚本为50个线程跑3分钟,有3个slave机器,那么总线程是150个线程并行跑3分钟
  • 3.执行时,slave会把执行获得的数据结果传到master机器,master机器会收集所有slave机器的信息并汇总,这样master机器上存有一份所有slave机器汇总的结果

使用分布式式测试时注意事项:

  • 1.测试的jmx脚本是从master机器传到slave机器上的,所以不需要每个slave机器上分别上传文件
  • 2.参数化文件:使用参数化文件时,需要把参数文件在每台slave机器上拷贝一份,且路径也要一致
  • 3.调度机和执行机最好分开,由于master需要发送信息给slave机器并且接收slave机器回传的测试数据,会消耗master自身资源
  • 4.保证每台机器的jmeter版本和插件版本一致
  • 分布式测试总样本数=线程数 * 循环次数 * 执行机总数

调度机master配置:

调度机的bin目录下打开jmeter.properties文件,修改remote_hosts,后面增加远程负载机的IP和端口,添加多个,用逗号分隔开
实例: remote_hosts=192.168..:1099,192.168..**:1099

执行机slave配置:

在slave机器上的jmeter.properties文件中添加
server_port=1099
server_rmi_localport=1099
slave机器上执行jmeter-server文件

分布式测试运行步骤:

  • 步骤一:修改调度机器jmeter.properties文件中的IP
  • 步骤二:确认调度机与执行机以及执行机之间jmeter版本一致,部署路径相同
  • 步骤三:修改执行机器jmeter.properties配置文件中的端口
  • 步骤四:启动执行机上的jmeter-server文件
  • 步骤五:启动调度机上的jmeter.bat文件
  • jmeter -n -t test.jmx -r -l testlog.jtl
  • 命令意思:表示非GUI模式下启动所有远程代理,并运行test.jmx文件,日志记录到testlog.jtl中
  • jmeter -n -t slave.jmx -R xx.xx.xx.xx:1098, xx.xx.xxx.xx:1099 -l test.jtl
  • 命令解释:运行指定的远程代理机器

Jmeter命令行-实时数据分析

Jmeter命令行-结果文件分析

Jmeter命令行-HTML报表

Jmeter命令错误排查

你可能感兴趣的:(关于JMETER的简单整理)