一、前言
Jmeter可以用来模拟多用户来访问http(s)请求,并返回访问结果,而地图服务归根结底仍是个http(s)请求。所以我们可以使用Jmeter对地图服务进行压力测试。
当然地图服务也有着它的特殊性,对于一般的网页服务用户是打开,浏览,跳转,关闭这些步骤。而对于一个地图服务来说用户除了以上的操作外还会不停的去放大缩小、拖拽地图。因此页面上的数据也会不停的改变所以我们要充分考虑其特殊性来设计压力测试。
同时,在这我准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看,或者直接关注VX公众号:互联网杂货铺,这份测试文档资料也打包在里面啦,免费领取!
软件测试视频教程观看处:
软件测试工程师大忌!盲目自学软件测试真的会毁终生,能救一个是一个......
二、测试步骤
1.创建一个测试计划,自定义其名称和注释,并将测试计划文件保存在文件目录下
2.添加线程(组),设置线程组参数。线程组模板多样而且支持插件拓展,本文选取steping thread group作为例子
JMeter是由Java实现的,并且使用一个Java线程来模拟一个用户,因此线程组(Thread Group)就是指一组用户的意思,换句话说一个线程组就是一组虚拟用户(virtualusers),这些虚拟用户用来模拟访问被测试系统。
名称:线程组的名称
注释:线程组注释
采样器错误后执行的动作:分为继续、开始下一个进程循环、停止线程、停止测试、立刻停止测试五种。常用的为继续和停止测试两种。
继续:报错,并进行本线程组的下一个线程测试。
开始下一个进程循环:报错并停止本线程组的测试进入下一个线程组的测试。
停止线程:报错并停止所有的线程组测试。
停止测试:报错并停止测试任务,包括测试数据的收集器的工作。
立刻停止测试:立刻停止jmter向服务器收发请求。
在Steping Thread Group线程组中一下参数需要设置:
This group will start: 本次测试中将启动的最大线程数。
First wait for: 启动第一个线程之前等待的时间。
Then start: 第一次启动的线程数。
Next add: 启动后每次增加的线程数。
Threads every: 两次增加线程数的时间间隔。
Using ramp-up: 增加线程数的时间。
Then hold load for: 增加到最大线程数后持续的时间。
Finally stop: 停止过程中每次减小的线程数。
Threads every: 两次减小线程数的时间间隔。
3.添加测试请求,并设置参数
测试请求是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元。在ArcGIS Server中指通客户机过一次HTTP(S)向服务端一次请求返回的结果。
协议:http(s)
服务器名称或IP:填写ArcGIS server对应的服务器名称或IP地址,要保证测试客户机和服务器网络通畅。
端口:所测试http(s)请求的端口号。在ArcGIS Server中http对应6080,https对应6443。
路径:填写测试的http(s)服务端口号后的部分。
4.设置ArcGIS自定义参数
同请求一起发送的参数:
F:返回类型,支持html | json | image | kmz四种格式,我们请求的是图片,选择f=image即可;
Bbox:地图的左下角坐标和右上角坐标,排列顺序是<xmin>,<ymin>, <xmax>, <ymax>
。例如bbox=-104,35.6,-94.32,41;
Size:返回图片的大小,宽度和长度,例如:size=600,550;
imageSR:请求图片的坐标系统;
format:请求图片的格式,有以下几种:png | png8 | png24 |jpg | pdf | bmp | gif | svg | png32
layers:请求图片的图层,有四个关键词:show(显示)hide(隐藏)include(包括)exclude(不包括);例如:show:1(表示显示第一层数据),同样hide:1(表示隐藏第一层数据);
layer Definitions:表示获取满足当前条件的数据,相当于where条件或者是Filter;例如:layerdefs=0:COM1='COPPER'(表示第0层,字段COM1中的值等于“COPPER”的所有要素);
transparent:透明度,只对png格式有效;
5.通过Bbox参数,模拟用户移动、放大缩小地图。
Bbox参数可以随http请求发送一个矩形范围,来让服务器返回对应矩形范围内的数据。通过Bbox参数传入不同大小的矩形范围和不用位置的矩形范围来模拟用户不断的放大缩小和拖拽地图。Bbox中参数为地图的左下角坐标和右上角坐标,排列顺序是<xmin>,<ymin>, <xmax>, <ymax>
。首先需要一个生成的随机矩形范围的数据,可以是txt或者csv。
填写随机网格数据配置参数
变量名称:CSV文件中的表头名称,用英文逗号隔开
忽略首行:选择true
在设置请求中添加Bbox参数,将四个坐标参数使用${}
引用,填写格式为${XMin},${YMin},${XMax},${YMax}
。勾选编码选项
6.添加监听器收集测试结果
监听器是用来对测试结果数据进行处理和可视化展示的一系列元件,如图形结果、查看结果树、聚合报告等都是常用的监听器。由于Jmeter是开源软件,社区中共享了大量的监听器用于测试结果的可视化,此处只介绍最常见的三种其他的有待大家去探索。
添加监听器,配置监听器输出的文件路径。
启动jmeter,查看测试结果。
三、PerfMon环境配置
压力测试过程中,也需要对被测服务器的负载情况进行监控,以便分析出服务器的性能瓶颈。这里要讲的就是Jmeter提供的PerfMon插件,通过PerfMon,你可以对服务器的CPU、内存、Swap、磁盘I/O、网络I/O等进行监控。
1.为Jmeter安装PerfMon插件
首先给Jmeter安装插件管理器,复制到Jmeter文件夹的lib/ext路径下,重启Jmeter后,在选项菜单中就可以看到plugins-manager了,然后打开插件管理器,查找PerfMon勾上勾选。
2.重启Jmeter,在监听器中打开PerfMon
3.下载到服务器端,windows的服务器,运行文件夹中的startAgent.bat,linux的服务器是运行startAgent.sh(需要jar环境支持)
Jmeter ProfMon ServerAgent下载:
https://github.com/undera/perfmon-agent
4.在Jmeter中配置监控参数
Host/IP : 填写被监控服务器的IP或域名。
Port :固定为4444。
Metric to collect :选择要监控的性能指标。包括CUP、内存、网络、IO吞吐等。
5.选择监控结果文件存放的路径,运行测试脚本
四、生成测试报告
可以将测试结果生产HTML格式的测试报告,这样做优点是可以在没有JAVA环境和Jmeter环境的情况下查看测试结果,方便汇报问题。缺点是报告格式单一且界面设计丑陋。
Jmeter 5.x版本提供了GUI界面用于生成报告,不必再使用命令行,使得操作大大简化。
Results file :选择监听器生成的测试结果文档,参考本系列技术文档第二章第6节
user.properties file:Jmeter系统文件,默认路径C:\apache-jmeter-5.1.1\bin\user.properties
Output directory:输出结果文件的路径,要选择一个确定的文件夹。生成的结果报告放入选择的文件夹中
五、查看测试报告
找到生成的文件夹,打开index.html
六、总结
PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。如需要软件测试学习资料,关注公众号(互联网杂货铺),后台回复1,整理不易,给个关注点个赞吧,谢谢各位大佬!
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。