目录
一、性能测试
二、负载/压力/可靠性
三、JMeter工具
四、负载脚本
五、Jmeter参数化
六、远程操作运行脚本
测试目的:
1.客户有明确要求,如:系统要求同时满足5000个用户登录,平均每个用户登录时间不能超过5秒
2.考察目前系统性能(容量测试),需要对系统做出分析,找出系统的压力点
3.找出系统性能瓶颈,需要分析可能对系统造成瓶颈的逻辑业务,然后才能进行性能测试
4.了解系统在长时间的压力下性能状况(强度测试)
注意事项:
1.性能测试一般在功能测试稳定的前提下进行
2.修改性能测试问题的时候容易造成功能错误
负载测试:正常工作能力极限
压力、强度测试:瞬间峰值
六大步骤:
1.测试计划
2.创建脚本
3.创建场景
4.运行场景
5.监控场景
6.系统调优
Jmeter元件:
1.测试计划
2.线程组
3.监听器
4.逻辑控制器
5.断言
6.配置元件
7.前置处理器和后置处理器
8.定时器
9.取样器(sampler)
10.正则表达式提取器
11.用户定义变量
12.查看结果树
元件的执行顺序:
1.配置元件
2.前置处理程序
3.定时器
4.取样器(sampler)
5.后置处理程序(除非sampler得到的返回结果为空)
6.断言(除非得到sampler得到的返回结果为空)
7.监听器(除非sampler得到的返回结果为空)
Jmeter体系结构图:
1.线程组的设置50个用户(持续时间:按秒计算,这里300=60*5,意思就是运行时长为5分钟)
2.添加HTTP cookie管理器
3.默认请求值
4.添加一个事务控制器,可以当作一个业务
5.在事务控制器下添加,高斯随机定时器
总的延时 = 固定延迟时间 + 高斯随机生成的偏差值(说明:单位都是毫秒,固定延迟300ms,偏差100ms,意思是时间延迟300-400ms之间)
6.添加脚本(http请求)
7.添加jp@gc - PerfMon Metrics Collector进行监控CPU、Memory、Disks I/O、Network I/O等。添加处:添加->监听器
8.在最后添加一个聚合报告,添加处:添加->监听器
在做性能测试过程中,一般我们需要模拟多个用户进行操作,为了满足实际场景,模拟真实的用户行为,我们需要做到模拟的用户帐号或其它信息都是不同的,这时我们就需要用到参数化。在Jmeter中,配置元件可以解决此问题
配置元件概念: JMeter配置元件可以用来进行参数化、初始化默认值和变量、存储服务器的 响应信息以及配置链接数据库等。JMeter参数化一般使用配置元件中的CSV Data Set Config或者JDBC Connection Configuration来进行参数化
1.CSV Data Set Config元件: 该元件可以用来读取csv或dat文件的数据(一行一行读取),然后通过设置 把读取到的数据关联到Jmeter中的变量保存。csv文件可以使用execl表格工具去进 行编辑。
2.JDBC Connection Configuration元件: 该元件可以用来进行数据库的连接,然后通过JDBC Request元件发送数据库请求数据库中的表中的数据,再通过正则表达式提取器关联到Jmeter中的变量保存
如:CSV Data Set Config元件(添加处:添加->配置元件)
界面字段说明:
名称、注释与之前元件一样可以随意设置。 Filename:指保存信息的文件目录,可以相对或者绝对路径,相对路径从Jmeter 的启动目录(***/bin)路径。 File Encoding:文件编码,默认为ANSI,建议设置为utf-8,防止遇见乱码情况。
Variable Names:参数名称,每个名称中间用分隔符分割,分隔符使用下面的 “Delimitet”中定义的,默认用逗号隔开,与参数文件的参数对应。如果设置的参 数名称多于参数文件中的参数,多余的参数取不到值;反之参数文件中的参数将没 有参数对应。
Delimitet:定义分隔符,用于分隔文件中的参数,及上述Variable Names中定义的 参数名称。
Allow Quoated data?:是否允许引用数据,设置为True ,设置文件中的参数值都必须 用引号引起来,False则不需要
Recycle on EOF ?:遇到文件结束符时,是否从头开始循环读入,设置为True,则从 头开始继续循环
Stop Thread on EOF?:当Recycle on EOF 设置为False并且Stop Thread on EOF为True, 则读完csv文件中的记录后, 停止运行
Sharing Mode: 参数文件共享模式,有三个设置,说明如下:
All threads:参数文件对所有线程共享,包含同一测试计划中的不同线程组。
Current thread group:只对当前线程组中的线程共享。
Current thread:仅当前线程获取。
如:JDBC Connection Configuration元件(添加处:添加->配置元件)
1、操作步骤(GUI方式):
1.在负载机上部署jmeter,确保jmeter的bin目录下存在ApacheJMeter.jar与jmeter-server.bat这两个文件。(jdk是否配置好,jmeter是否安装成功)
3.在jmeter控制机的bin目录找到jmeter.properties文件,并修改”remote_hosts”,增加负载机IP,多个IP使用英文逗号隔开,修改后要启动jmeter
4.进入jmeter控制机的GUI图形界面,远程运行,点击安全即可,点击后,jmeter控制机会自动探测,只要先启动远程负载上的Agent,开始运行测试计划时就会自己连接负载机去完成
5.停止(可选),点击上面右图的后面两个按钮即可。前者是执行完成当前迭代停 止(比如脚本中有5个请求,在运行第2个的时候收到停止命令,那么将继续执行 完5个请求然后再停止),后者是立即终止
备注:remote_hosts里设置127.0.0.1 。需要控制机也启动jmeter-server.bat
2、命令窗口运行(非GUI方式):
命令窗口运行没有Jmeter界面,通过DOS命令窗口运行场景。用纯命令方式运行Jmeter是因为Jmeter可视化界面及监听器动态展示结果都比较消耗负载机资 源,在大并发情况下GUI方式往往会导致负载机资源紧张,会对性能结果产生影响。 这个影响不是指被测系统的性能受到影响,而是指负载机的性能受到影响, 导致负载量上不去,比如命令模式100个线程可产生100TPS的负载,而GUI方式只 产生80TPS的负载。所以推荐进行性能测试的时候,使用命令方式来运行测试计划。
命令窗口方式运行场景命令如下:
1. java -jar %JMETER_HOME%\bin\ApacheJMeter.jar -n -t %JMETER_HOME%\script\script.jmx -r -l result.jtl
2. %JMETER_HOME%\bin\jmeter -n -t %JMETER_HOME%\script\script.jmx -r -l result.jtl
备注:两条命令都可以运行测试计划,其中%JMETER_HOME%必须配置jmeter的环境变 量,%JMETER_HOME%\script\script.jmx为jmeter脚本存放路径。
命令行部分参数说明:
-n:非GUI方式运行。
-t:指定运行的测试脚本地址与名称,可以是相对或绝对路径
-h:查看帮助
-v:查看版本
-p:指定读取Jmeter属性文件,比如jmeter.properties文件中设置的
-l:记录测试结果到文件,指定名称与路径,可以是相对或绝对路径
-s:以服务器方式运行(远程方式)
-r:开启远程负载机,远程负载机列表在jmeter.properties文件中指定
-R:开启远程负载机,可以指定负载机IP,会覆盖jmeter.properties中的设置
-L:定义Jmeter的日志级别,如DEBUG、INFO、ERROR等
-H:设置代理IP
-P:设置代理端口
-u:设置代理帐号
-a:设置代理帐号密码
-X:停止远程执行
-J:定义Jmeter属性,等同于在jmeter.properties中设置
-G:定义Jmeter全局属性,等同于在Global.properties中设置,线程间可相互共享
jmeter不能远程出现的可能原因:
1.加压机(负载机)jmeter-server.bat没有开启
2.Jmeter.properties改了配置,没有重启jmeter,让配置文件生效
3.负载机的jmeter版本和控制机的jmeter版本不一样
4.如果有CSV参数化,必须把CSV文件,复制到每一个负载机上,同一位置,同一名称
5.控制机防火墙没有关
6.把其它网络连接关掉(如虚拟机的Vmnet1,Vmnet8),再双击jmeter-server.bat看网络IP是不是本机的
生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!
生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!
只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!
资料获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片进群领取。