Web应用的性能测试

前言

针对 Web 服务器的性能测试,可以直接通过发送 HTTP 数据包来施加负载,根据所学到的知识和业务特点,选定关键业务来进行负载模拟,完成不同的负载、负载模式的性能测试,获得主要的性能指标数据,包括系统响应时间、数据吞吐量、系统资源(CPU、内存等)使用效率等。
Web 性能测试工具有很多,以 JMeter、 Gatling、 nGrinder、 WebLoad、 LoadRunner 等为代表,本实验选择大家熟悉的、开源的 JMeter 作为本次实验的性能测试工具,建议大家以后可以尝试选择 Gatling、 nGrinder 等作为性能测试工具。

JMeter下载与安装

官方网站:http://jmeter.apache.org/download_jmeter.cgi

下载完成后解压,进入bin文件夹,运行jmter.bat,进入JMeter主界面。
Web应用的性能测试_第1张图片
  Web应用的性能测试_第2张图片

注:jmeter需要Java8+的环境变量,若没有相关环境需提前配置。

编写性能测试脚本

我们在使用百度搜索的时候,细心的同学可以发现搜索栏中会出现wd和ie的字样

wd为搜索词,ie表示编码方式,默认为utf-8。

如何编写性能测试脚本?

1.添加线程。右键点击界面左侧的“TestPlan(测试计划)” ->“添加” ->“线程(用户)” ->“线程组”:
Web应用的性能测试_第3张图片
  Web应用的性能测试_第4张图片

注:

(1)线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
(2)Ramp-Up 时间(秒):设置的虚拟用户数需要多长时间全部启动。如果线程数为 10,准备时长为 2,那么需要 2 秒钟启动 10 个线程,也就是每秒钟启动 5 个线程。
(3)循环次数:每个线程发送请求的次数。如果线程数为 10,循环次数为 100,那么每个线程发送 100 次请求。总请求数为 10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
(4)延迟创建线程直到需要:直到需要时延迟线程的创建。
(5)调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)。
持续时间(秒):测试持续时间,会覆盖结束时间
启动延迟(秒):测试延迟启动时间,会覆盖启动时间
启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。
结束时间:测试结束时间,持续时间会覆盖它。
*** 创建进程时均使用默认设置,待测试时配置。

2.添加HTTP请求。右键点击“线程组” -> “添加” -> “取样器” -> “HTTP请求”:

Web应用的性能测试_第5张图片

对HTTP请求进行配置:

Web应用的性能测试_第6张图片

注:

(1) Web 服务器
协议:向目标服务器发送 HTTP 请求协议,可以是 HTTP 或 HTTPS,默认为 HTTP。
服务器名称或 IP : HTTP 请求发送的目标服务器名称或 IP。
端口号:目标服务器的端口号,默认值为 80。
(2) HTTP 请求
方法:发送 HTTP 请求的方法,可用方法包括 GET、 POST、 HEAD、 PUT、 OPTIONS、 TRACE、DELETE 等。
路径:目标 URL 路径(URL 中去掉服务器地址、端口及参数后剩余部分)。
Content encoding :编码方式,默认为 ISO-8859-1 编码,这里配置为 utf-8。
(3)同请求一起发送参数
在请求中发送的 URL 参数,用户可以将 URL 中所有参数设置在本表中,表中每行为一个参数(对应 URL 中的 name=value),注意参数传入中文时需要勾选“编码”。

3.添加察看结果树。右键点击“线程组” ->“添加” ->“监听器” ->“察看结果树”:
Web应用的性能测试_第7张图片

运行HTTP请求:
在这里插入图片描述

修改响应数据格式为“HTML Source Formatted”,可以看到本次搜索返回结果页面标题为“软件测试software test”:
Web应用的性能测试_第8张图片

4.添加用户自定义变量。 右键点击“线程组”->“添加” ->“配置元件” ->“用户定义的变量”:
Web应用的性能测试_第9张图片

新增一个参数 wd,存放搜索词:
在这里插入图片描述

HTTP请求中使用该参数,${wd}:

Web应用的性能测试_第10张图片

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

Web应用的性能测试_第11张图片

添加参数${wd}到要测试的模式中:
Web应用的性能测试_第12张图片

6.添加断言结果。右键点击“HTTP 请求” ->“添加” ->“监听器” ->“断言结果”:

Web应用的性能测试_第13张图片

运行,查看断言结果:

Web应用的性能测试_第14张图片

7.添加聚合报告。右键点击“线程组” ->“添加” ->“监听器” ->“聚合报告”,用以存放性能测试报告:
Web应用的性能测试_第15张图片

以上,完成性能测试脚本编写。

执行性能测试

点击线程组,配置本次性能测试相关参数:线程数,循环次数,持续时间等,这里配置并发用户数为 10,持续时间为 60s:
Web应用的性能测试_第16张图片

点击运行,进行测试。待性能测试执行完成后,打开聚合报告可以看到如下内容:
Web应用的性能测试_第17张图片

注:

(1) Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
(2) #样本:请求数表示这次测试中一共发出了多少个请求,如果模拟 10 个用户,每个用户迭代 10 次,那么这里显示100
(3) 平均值:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间
(4)中位数:也就是 50% 用户的响应时间
(5) 90% Line: 90% 用户的响应时间
(6)最小值:最小响应时间
(7)最大值:最大响应时间
(8)异常%:错误率——错误请求数/请求总数
(9)吞吐量:默认情况下表示每秒完成的请求数( Request per Second),当使用了Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数。

数据可视化:添加“图形结果”,内容如下:
Web应用的性能测试_第18张图片

以上。

你可能感兴趣的:(软件测试,知识总结)