#引言

性能测试某种程度上会比自动化更难搞定。代码、运维、计算机原理、数据库、业务等等,你都要搞懂。写脚本或者执行都还好,难的是性能分析和调优。当然如果这个阶段你对自己的要求还不是很高,那么掌握性能测试的基本流程和简单的性能分析就可以了。更多的比如搭建压测环境、监控性能指标等等,还是要在实战中去积累经验的。

#Jmeter压测场景

  • 基准测试:单用户,初步了解下该交易的响应时间和TPS

单场景负载测试:80用户并发,压测10分钟左右,考查单个负载情况。这个场景容易测试出来响应时间慢或者服务器资源利用率高的问题

混合场景容量测试:以客户要求的最低并发数为基准,以一定的梯度递增并发用户数压测混合交易,直至系统出现性能拐点。这个场景主要是考察系统最大的处理能力是多少。

浪涌场景:以系统最优处理能力(资源使用率接近75%-80%,响应时间和tps达标)的并发用户数为最大并发,以系统的资源使用率在20%-30%左右的并发用户数为最小并发,最小并发和最大并发交替运行,每个梯度运行10分钟,共运行一个小时。这个场景考察突然增大或者减少用户数,系统资源会不会上升或下降,主要是看用户数忽然减少时,资源利用率会不会下降。

稳定性测试:确定系统在满足性能指标的前提下长时间运行(12H)是否稳定运行,混合场景下检查各个接口响应时间,吞吐量,应用内存是否存在异常。并发量设置为最优并发量*50%。

  • #工具优点

高性能/提供测试数据分析/各种报表数据图形展示

#快速开始

一、下载安装JDK

1. 下载JDK

2. 安装JDK

3. 配置Java安装环境的系统变量

  • 高级系统设置中新建环境变量

  • 系统设置中新建环境变量JAVA_HOME,变量值选择你的JDK安装目录

  • 系统变量中寻找 Path变量,不要新建覆盖,新建追加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
  • 新建CLASSPATH系统变量,变量值填写为.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点)

  • 验证JDK是否安装成功,打开cmd,运行java –version,能得到下面的输出就表示配置正确了

 二、下载安装Jmeter

1. 下载Jmeter

  • Binaries是可执行版,直接下载解压就可以拿来用的,他已经给你编译好的版本
  • Source 是源代码版,需要自己编译成可执行软件

2. 配置环境变量

  • 同样,高级系统配置中,新建JMETER_HOME,变量值为Jmeter安装路径

  • 追加CLASSPATH,变量值填写%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;

3. Jmeter启动成功

  • 在JMeter安装路径bin文件夹下,找到jmeter.bat文件,双击启动。
  • 启动之后会有两个窗口,Jmeter的命令窗口和Jmeter的图形操作界面,不可以关闭命令窗口

 三、实现性能自动化测试

#场景

测试20个用户,10秒钟,循环5次,访问百度网址查询功能,在负载达到30QPS时的平均响应时间

URL:https://www.baidu.com/s?ie=utf-8&wd=jmeter 

QPS:Query Per Second 每秒查询率。(一台查询服务器每秒能够处理的查询次数,作为域名服务器的性能经常用每秒查询率来衡量

1. 添加线性组

右击test plan ->Add -->Threads(Users)-->Thread Group

输入线程数,准备时长,循环次数

10秒钟启动20个线程,循环次数为5,那么每个线程发送5次请求,总请求数为20*5=100

2. 添加HTTP请求

Thread Group ->Add->Sampler->HTTP Request

  • 在请求中发送的URL参数,用户可以将URL中所有参数设置在本表中,表中每行为一个参数(对应URL中的 name=value),注意参数传入中文时需要勾选“编码

3. 设置QPS限制

Jmeter提供了一个非常有用的定时器,常数吞吐量定时器(Constant Throughput Timer),可控制给定的取样器发送请求的吞吐量

Thread Group ->Add->Timer->Constant Throughput Timer

4. 添加查看结果树

Http->Add->Listener->View Results Tree

  • 修改响应数据格式为HTML Source Formatted

5. 添加用户自定义变量

Thread Group->Add->Config Element->User Defined Variables

6. 添加断言

http ->Add->Assertions->Response Assertion

7. 添加断言结果

http->Add->Listener->Assertion Results

8. 添加聚合报告

http->Add->Listener->Aggregate Report

9. http->Add->Listener->Aggregate Graph

  • 添加Aggregate Graph聚合图表,这个组件是在聚合报告(Aggregate report)的基础之上增加了图形化展示,把数据转化成柱状图的形式展示,并且可以编辑图形展示的样式

10. http->Add->Listener->Response Time Graph

  • 添加Response Time Graph,相应时间图表,这个listener把请求响应时间以折线图的方式展示出来,方便查看
  •  就完成了一个完整Http接口的JMeter性能测试脚本编写,点开始执行测试

10. 执行后结果

  • 先清空,再执行

  •  查看结果树

  • 查看断言结果

  • 查看断言结果聚合报告

  • Aggregate Graph聚合图表

 

  • Response Time Graph响应时间图表

  •  其中聚合报告页面参数详解: 
  • 1)Label:每个Jmeter的element都有一个Name属性,这里显示的就是Name属性的值
  • 2)#Sample:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100
  • 3)Average:平均响应时间-默认情况下是单个Request的平均响应时间当使用了Transaction Controller 时,也可以以Transaction为单位显示平均响应时间
  • 4)Median:中位数,50%用户的响应时间
  • 5)90%Line:90%用户响应时间
  • 6)Min:最小响应时间
  • 7)Max:最大响应时间
  • 8)Error%:本次测试中出现错误的请求的数量/请求的总数
  • 9)Throughput:吞吐量-默认情况下表示每秒的请求数
  • 10)Received KB/sec----每秒从服务器端接收到的数据量
  • 11)Sent KB/sec----每秒从客户端发送的请求的数量

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐