Bootstrap

Jmeter 性能测试入门

目录

一、Jmeter 简介

二、Jmeter 安装

2.1、JDK安装

2.2、Jmeter 安装

三、Jmeter 性能测试

3.1、接口地址

3.2、请求参数

3.3、返回结果

四、Jmeter  脚本编写

4.1、添加线程组

4.2、添加HTTP请求

4.3、添加查看结果树

4.4、添加用户自定义变量

4.5、添加断言

4.6、添加断言结果

4.7、添加聚合报告

五、Jmeter 性能测试执行

5.1、配置线程组

5.2、执行测试

六、测试报告分析

七、总结


一、Jmeter 简介

Jmeter是Apache组织开发的基于Java的压力测试工具。Jmeter被广泛应用到测试领域,可做接口测试、压力测试、性能测试等。本文介绍Jmeter性能测试

二、Jmeter 安装

2.1、JDK安装

安装后配置系统环境变量,参考这一篇DOS窗口下运行HelloWorld显示错误:找不到或无法加载主类文章配置

2.2、Jmeter 安装

Jmeter 安装参考这一篇Jmeter 中文版安装指南(零基础)文章配置

三、Jmeter 性能测试

用常见的百度接口作为例子

3.1、接口地址

http://www.baidu.com/s?ie=utf-8&wd=jmeter性能测试

复制地址去浏览器试一下,OK。

3.2、请求参数

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

3.3、返回结果

搜索结果,我们可以通过校验结果中是否含有搜索词wd来判断本次请求成功或失败

四、Jmeter  脚本编写

步骤在上两篇博文已有介绍,学会的同学可以快速过

4.1、添加线程组

测试计划,右键添加->线程(用户)->线程组

这里可以配置线程组名称,线程数,准备时长(Ramp-Up Period(in seconds))循环次数,调度器等参数:

 

线程组参数解释:
       1、线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
       2、Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为10,准备时长为2,那么需要2秒钟启动10个线程,也就是每秒钟启动5个线程。
       3、循环次数:每个线程发送请求的次数。如果线程数为10,循环次数为100,那么每个线程发送100次请求。总请求数为10*100=1000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
       4、Delay Thread creation until needed:直到需要时延迟线程的创建。
       5、调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)
       持续时间(秒):测试持续时间,会覆盖结束时间
       启动延迟(秒):测试延迟启动时间,会覆盖启动时间
       先使用默认配置,进行接口调试。执行性能测试的时候再进行配置
       接口测试前面的博文已写

4.2、添加HTTP请求

线程组,右键添加->取样器->HTTP请求

对于我们的接口http://www.baidu.com/s?ie=utf-8&wd=jmeter性能测试,可以参考下图填写: 

Http请求主要参数解释:
       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
       同请求一起发送参数
       在请求中发送的URL参数,用户可以将URL中所有参数设置在本表中,表中每行为一个参数(对应URL中的 name=value),注意参数传入中文时需要勾选“编码” 

4.3、添加查看结果树

线程组,右键添加->监听器->查看结果树

点击启动

 这时,我们运行Http请求,修改响应数据格式为“HTML Source Formatted”,可以看到本次搜索返回结果页面标题为”百度安全验证“。

 咦,不应该是返回结果页面标题为”jmeter性能测试_百度搜索“吗?这是因为百度现在不允许做压测了,可以添加一个参数tn ,值为monline_4_dg(模拟http请求)

再次点击运行就有返回值了

4.4、添加用户自定义变量

线程组,右键添加->配置元件->用户定义的变量

 新增一个变量wd,存放搜索词

并在Http请求中使用该参数,语法为:${wd}

4.5、添加断言

前面的博文已有详细的记录,不会的再看着做一遍。HTTP请求,右键添加->断言->响应断言

我们校验返回的文本中是否包含搜索词,添加参数${wd}到要测试模式中

4.6、添加断言结果

HTTP请求,右键添加->监听器->断言结果

这时,再点击运行一次就可以看到断言结果成功或失败了

       断言成功

断言失败 (注意这里可以把匹配模式改一下就会失败,如下)

 结果失败了

4.7、添加聚合报告

线程组,右键添加->监听器->聚合报告,用来存放性能测试报告

 于是,第一次编写的第一个的完整http接口的jmeter性能测试脚本完成

五、Jmeter 性能测试执行

5.1、配置线程组

点击线程组,配置本次性能测试相关参数:线程数,循环次数,持续时间等,这里我们配置并发用户数为10,持续时间为60s

5.2、执行测试

匹配模式改回去

 执行测试前点击扫把,清除之前的结果,再点击运行

六、测试报告分析

等待一会,打开聚合报告

 聚合报告参数解释

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

2、#样本(Samples):请求数——表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100

3、平均值(Average):平均响应时间(单位:ms)——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,以Transaction 为单位显示平均响应时间

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

5、90% 百分位(90% Line):90% 用户的响应时间

6、最小值(Min):最小响应时间

7、最大值(Max):最大响应时间

8、异常%(Error%):错误率——错误请求数/请求总数

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

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

一般而言,性能测试中我们需要重点关注的数据有: #Samples 请求数,Average 平均响应时间,Min 最小响应时间,Max 最大响应时间,Error% 错误率及Throughput 吞吐量

七、总结

性能测试是软件测试工程师必知必会的内容,在面试中面试官经常会提问你会不会性能测试,性能测试怎么测,用的什么性能测试工具,性能测试常用指标有哪些等等。通过本节课的练习,发现性能测试入门也是很简单的,只不过在不了解的人眼里,觉得性能测试很高大上,特别是对于刚转行的人来说。希望大家能好好学习,做一个优秀的软件测试工程师

2020年4月23日

 

;