Jmeter软件测试总结

为期2个月的软件测试实习即将结束,值此时刻我想记录一下这两个月的收获,也为以后的复习做准备。

Jmeter

Jmeter是这次实习使用最多的软件了,现已达到熟练水平。
现在我将从安装开始,重新梳理一遍Jmeter的使用方法。

什么是Jmeter

Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具。用于对软件做压力测试,它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter 允许使用正则表达式创建断言。
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl 脚本,java 对象,数据库和查询,FTP 服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
Jmeter的工作原理如图
Jmeter软件测试总结_第1张图片

下载Jmeter

登录官网Jmeter下载,得到压缩包,下载地址http://jmeter.apache.org/download_jmeter.cgi
Jmeter软件测试总结_第2张图片如图所示,jmeter是需要java环境的,所以需要先有Java8.0以上的JRE,JRE的下载和配置方法这里不再赘述。
截至目前Jmeter的最新版本是5.4.1,下载zip后解压到任意目录下。

Jmeter目录

Jmeter软件测试总结_第3张图片

  • bin 包含启动、配置等相关命令
  • docs 官方本地文档目录
  • extras 辅助库
  • lib 核心库,包含 JMeter 用到的各种基础库和插件
  • licenses 包含 non-ASF 软件的许可证
  • printable_docs 可打印版本文档目录
  • LICENSE JMeter 许可说明
  • NOTICE JMeter 简单信息说明
  • README.md JMeter 官方基本介绍

下面我们重点看下 bin 目录,如图,有几个重点文件需要关注Jmeter软件测试总结_第4张图片

  • jmeter.properties JMeter 核心配置文件,各种配置基本在这完成

  • log4j.conf JMeter 日志配置管理

  • jmeter.log JMeter 运行日志记录,什么输出信息、警告、报错都在这里进行了记录

  • jmeter.bat windows 下 jmeter 启动文件

  • shutdown.cmd windows 下 jmeter 关闭文件

  • stoptest.cmd windows 下 jmeter 测试停止文件

  • jmeter-server.bat windows 下 jmeter 服务器模式启动文件

注:每一个.cmd 文件都对应一个.sh 文件,.sh 是 linux 下的对应功能的文件

Jmeter.properties的个性化配置

Jmeter的默认配置有一些不太方便的地方,自己可以修改配置。在Windows上可以用记事本或者markdown编辑器打开,在macOS上可以先复制一个.txt文件,修改后改后缀再替换原文件,或者直接用vim编辑。

  • 中文GUI配置
#language=en
language=zh_CN #简体中文
  • GUI图标放大比例设置

JMeter GUI界面布局
当JMeter以GUI模式运行时,窗口主要由三部分构成:
1.功能区
上方菜单栏,下方工具栏。菜单栏展示了JMeter提供的功能菜单,而工具栏中的图标
是常见功能的快捷方式。
2.视图区
以树状结构呈现JMeter元素,其中“Test Plane”是树的根节点,每一个节点就是一个JMeter元素。
在此区域可以添加、删除节点或者通过拖曳调整节点的位置。
3.内容区
当在视图区选中一个JMeter元素节点时,内容区则会相应地显示该元素的内容。
这时可以对其内容进行查看、设置等操作。

Jmeter软件测试总结_第5张图片
GUI图标放大比例设置

jmeter.hidpi.mode=true #开启视网膜模式,2k以上分辨率屏幕适用
jmeter.hidpi.scale.factor=1.2 #将图标放大1.2倍

功能区工具栏图标大小设置

#工具栏图标默认size: 22x22
#可用size: 22x22, 32x32, 48x48
jmeter.toolbar.icons.size=32x32

视图区目录树图标大小设置

#目录树图标默认size: 19x19
#可用size: 19x19, 24x24, 32x32, 48x48
jmeter.tree.icons.size=24x24

内容区编辑字体设置

#调整JMeter内容区的编辑字体
jsyntaxtextarea.font.family=consolas #默认Hack,太难看,使用经典的consolas
jsyntaxtextarea.font.size=18 #这两个配置项必须同时设置才有效
  • 响应数据编码设置
#响应数据编码默认为ISO-8859-1(即Latin-1)
sampleresult.default.encoding=UTF-8 #设置为UTF-8,避免出现乱码
  • 远程主机配置

配置远程主机的 IP,默认为本机。用逗号","可以设置多个远程主机

remote_hosts=127.0.0.1

多个远程主机指定示例如下,其中:后为端口

remote_hosts=127.0.0.1:1099,127.0.0.1:1200,127.0.0.1:1300
  • 日志管理配置

设置日志格式

log_format_type=default

设置日志输出级别

log_level.jmeter=INFO

设置 junit 日志输出级别

log_level.jmeter.junit=DEBUG

设置日志输出目标文件,默认为 jmeter.log

log_file=jmeter.log
  • jmeter.bat 关键配置修改

为了更优化的使用 jmeter,需要对 jmeter.bat 中的一些配置根据当前机器的配置进行优化,这里进行关键配置项说明,大家根据自己的机器的配置来进行修改。jvm 相关配置,大概在 80 行左右,找到这些配置,对其中的数值根据当前机器的硬件配置来修改。

	set HEAP=-Xms2048m -Xmx2048m
	set NEW=-XX:NewSize=512m -XX:MaxNewSize=512m
	set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%
	set TENURING=-XX:MaxTenuringThreshold=2
	if %current_minor% LEQ "8" (rem Increase MaxPermSize if you use a lot of Javascript in your Test Plan :
	set PERM=-XX:PermSize=512m -XX:MaxPermSize=1024m)

Jmeter接口测试脚本

打开Jmeter后如图所示
Jmeter软件测试总结_第6张图片
首先新建一个线程组
Jmeter软件测试总结_第7张图片
线程组是一系列线程的集合,每一个线程代表着一个正在使用应用程序的用户。在 jmeter 中,每个线程意味着模拟一个真实用户向服务器发起请求。

在 jmeter 中,线程组组件运行用户设置线程数量、初始化方式等等配置。例如,如果你设置线程数为 100,那么 jmeter 将创建并模拟测试100 个用户请求到服务器端。

Jmeter软件测试总结_第8张图片
线程数表示一次测试所用的线程个数。
Ramp-Up时间表示若干个线程的启动时间,假设有100个线程数,Ramp-Up时间设置为1,就表示1秒钟内启动100个线程去测试。
循环次数控制测试数量,如果勾选“永远”,则测试会一直进行下去,知道出错或手动结束,一般“永远”会搭配下面的调度器一起使用,持续时间表示这次测试会持续多少秒。
Jmeter一般用于压力测试或者接口测试。压力测试就需要很多线程数量在一段时间内一起启动,考察服务器的抗压能力,而接口测试一般只需要一个线程一次循环,查看返回值是否正确即可。

接下来添加一个HTTP请求
Jmeter软件测试总结_第9张图片
Jmeter软件测试总结_第10张图片

比如现在有一个接口,网址是http://127.0.0.1:8080/test/getname/,作用是返回服务器中的name。
那么Http请求写http,ip写127.0.0.1,端口号写8080,http请求是rest服务,我们要从服务器读取数据,自然是Get,路径就是/test/getname/,如果请求内容有中文内容编码一般写UTF-8。
有时我们还需要随请求一起上传一写参数,可以以键值对的方式一个一个添加
Jmeter软件测试总结_第11张图片
也可以用json格式的数据,点击消息体数据直接编写。
Jmeter软件测试总结_第12张图片
接下来我们要查看这个请求的结果正确与否,添加一个“查看结果树”。
Jmeter软件测试总结_第13张图片
点击上方的绿色箭头开始一次测试,可以在“查看结果树”中看到每次请求的结果是否正确,每次的请求内容和每次的响应数据。“查看结果树”只能判断请求的数据返回是否成功,并不能判断返回的数据是不是正确的,因此需要做断言判断。
Jmeter软件测试总结_第14张图片
如果你的程序有规范的返回信息格式的话(比如json返回请求结果成功或失败),那么可以添加Json断言,以返回的json中是否含有“success”作为接口功能正常的依据。

注意: 默认下载的 jmeter 是不支持该方式的,需要安装 json plugins,在选项-Plugins Manager-Available Plugins 找到 JSON Plugins 安装好即可。下面对 json path assertion 进行说明
Jmeter软件测试总结_第15张图片
如果有多个http请求,每一次都要填写ip,端口,十分麻烦,那么可以添加“http请求默认值”。
Jmeter软件测试总结_第16张图片
Jmeter软件测试总结_第17张图片
他的内容和http请求基本相同,只要设置一次,那么“http请求默认值”的所有子节点http请求就都默认使用设置好的了。

在某些情况下,我们可以设置一些用户定义的变量,比如端口号就可能会改变,如果一次改变我们就要把脚本中的所有端口号都要找到改正,那很麻烦,因此对于某些经常改变的值,或者需要用户自定义的值,我们可以设置,类似于全局变量,所有的调用都是对他的引用。
Jmeter软件测试总结_第18张图片
Jmeter软件测试总结_第19张图片
比如说我们定义了localhost的值为127.0.0.1。那么在http请求的地方,我们只需要使用${localhost},就能直接调用了。

Jmeter性能测试脚本

同样,还是先新建一个线程组,若干个http请求,性能测试主要考虑服务器的响应时间和正确率,所以查看单次请求成功与否的“查看结果树”意义就不大,我们需要“汇总报告”或者“聚合报告”。
Jmeter软件测试总结_第20张图片
在这里插入图片描述
汇总报告有几个参数:
样本:这次测试的所有样本数量
平均值:响应的平均时间
最小值:响应的最小时间
最大值:响应的最大时间
标准偏差:响应的标准差
异常:错误响应的比例
吞吐量:每小时服务器处理的响应数量
接受:服务器接受数据的带宽
发送:服务器发送数据的带宽
平均字节数:服务器响应的结果的平均字节数


聚合报告有几个参数:
样本:这次测试的所有样本数量
平均值:响应的平均时间
中位数:响应时间的中位数
90%百分位:响应时间分布在90%处的值
95%百分位:响应时间分布在95%处的值
99%百分位:响应时间分布在99%处的值
最小值:响应的最小时间
最大值:响应的最大时间
异常:错误响应的比例
吞吐量:每小时服务器处理的响应数量
接受:服务器接受数据的带宽
发送:服务器发送数据的带宽

Jmeter自动录制脚本

如果我们要测一个网页打开速度,网页有很多个请求,这时我们就可以把这些请求自动录制下来。
首先新建一个http代理服务器。选择好本地ip和端口号,还有目标控制器。
Jmeter软件测试总结_第21张图片
接着打开浏览器的http代理,配置代理服务器和端口与jmeter中设置的一致。
然后在jmeter中点击启动,在浏览器中执行打开网页。
此时就能在jmeter中看见打开网页时发送和接收时所有请求,录制成功。
最后,关闭录制和浏览器代理。

你可能感兴趣的:(软件测试,测试工程师,软件测试,扫描测试工具)