以下为《jmeter课堂笔记》的无排版文字预览,完整格式请下载
下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。
学习目标:
性能测试概念和指标
掌握jmeter的概念和环境部署
了解jmeter的界面和组成
理解jmeter的元素
能够使用jmeter进行性能测试
性能测试
概念
性能测试是一种在给定的工作负载下软件的响应时间、吞吐量、可靠性、互操作性等,同时也是衡量软件是否支持更大用户群的重要手段。
为什么要进行性能测试
确保应用程序是否能够响应更多的用户需求
确保应用程序能否处理预期的用户负载并且有盈余的能力
确保应用程序能否处理业务所需要的事务数量
在预期和非预期情况下,应用程序是否稳定
确保用户在真正使用软件时有良好的用户体验
性能测试关注的指标
响应时间
用户数:在线数,并发数
资源利用率(CPU,内存,网络,磁盘等)
吞吐量:软件处理的数据量
吞吐率:软件单位时间内处理的数据的数据量
点击量:向服务器发送的总请求数
点击率:单位时间内向服务器发送的请求数
性能测试的过程和关键活动
前期准备(需求分析(分析所测的功能,分析并发量,软硬件环境(操作系统,软件版本,硬件版本。。。))),选择工具(LR/jmeter)
性能测试的计划和方案(编写用例,计划,策略。。。)
性能测试的实施(准备环境,(被测环境,压测服务器,),测试场景,辅助工具)
编写脚本(录制,编写修改)
性能测试的执行(执行脚本,记录结果)
性能测试的分析与调优
性能测试报告(性能测试的目的,性能测试的概述,性能测试的结果,性能测试结论)
关键活动
定义测试环境
制定测试标准
规划并设计性能测试用例
分析瓶颈并给出调优方案
硬件:CPU,内存,磁盘
网络设备:防火墙,动态负载均衡,交换机设备
操作系统:物理内存不足,虚拟内存设置不合理等
应用程序:架构不合理,程序设计有问题
应用软件:数据库,应用服务器等
5.性能测试注意事项
(1)性能测试一般是在功能测试的中后期进行
(2)性能测试要借助工具完成
(3)提高硬件配置就可以提高性能,这是错误的。
(4)性能测试完全独立于功能测试,这也是错误的。性能测试依赖于功能测试。
二、jmeter的概述
1.jmeter是什么
简介:Apache Jmeter 是Apache组织开发的一款开源的软件,是一个典型的100%纯java开发的应用程序。
jmeter可以在不同的平台(windows,linux,macos)进行性能测试
主要是用于软件程序的功能复杂测试以及度量软件的性能,还可以用于别的测试,比如:接口测试
Jmeter是一款轻量化的性能测试工具,是图形化。免安装,易某某
jmeter版本
开源免费的:https://jmeter.apache.org
建议大家使用5.0以上版本
三、部署jmeter
1.环境要求:安装jdk
检查jdk是否安装成功:命令行运行:Java -version
Javac
2.安装jdk,直接点击下一步
3.配置环境变量 参考《jdk安装配置手册》
4.安装jmeter
Jmeter是免安装的,直接打开文件包,解压文件,找到bin目录,找到jmeter.bat双击,能启动则说明成功。
jmeter的文件简介
bin目录
jmeter.log日志文件
jmeter.bat:windows下的启动文件
jmeter.sh:linux下的启动文件
jmeter.properties:系统的配置文件
jmeter-server.bat:windows分布式测试时需要的服务器配置
jmeter-server:linux下分布式测试时需要的服务器配置
Docs:帮助文件,官方文档,主要用于二次开发。
Extras:扩展的插件目录,主要是jmeter和其他应用需要的文档
Lib:所用到的插件,里面全是jar包,jmeter会自动的在JMETER_HOME/Lib和ext目录下寻找需要的类。
Licenses:证书目录
printable_docs:用户使用手册
五、jmeter的界面和组成
1.界面分三个部分:功能区、试图区、内容区
(1)功能区:上方是菜单栏,下方是工具栏,菜单栏展示jmeter提供的功能,工具栏就是常见功能的快捷方式
(2)视图区:
是以树状结构显示jmeter的元素,其中testplan(测试计划)是树的根节点,每一个节点都是一个jmeter的元素,在试图区可以添加,删除,拖动元素
(3)
内容区:***一个jmeter元素,相应的内容就会在内容区显示出来,在内容区可以对内容进行设置和查看
2.jmeter的组成
1.负载发生器:用于产生负载,多线程多进程模拟用户的行为
2.用户运行器:脚本运行引擎,用户运行器附件在吸纳城或者进程上,根本脚本模拟用户的行为
3.资源生成器:生成测试中的服务器,负载机的资源生成器
4.报表生成器:根据测试中生成的数据生成报表,提供可视化的数据显示方式
六.Jmeter的元素
Jmeter的元素分为四大类
测试计划(Testplan)
唯一的,所有的元素都位于其下。
一个完整的测试计划应该包含:一个或者多个线程组,逻辑控制器,取样器。监听器,定时器,断言,配置元素。
2.线程组:ThreadGroup
setUp线程组:可以用来执行预测试操作,执行测试之前的初始化操作
tearDown线程组:用于执行测试后的动作,结束之后的收尾工作。
线程组:ThreadGroup
线程数:要模拟的用户数(模拟多少用户,就修改线程组的线程数为多少)
Ramp-up period时间:表示多长时间把上面的线程数均匀的启动完。如果你的线程数是10,ramp-up时间是5s,表示5秒内均匀的启动10个用户,也就是每隔0.5s启动一个用户。
循环次数:表示一个线程组要跑多少次
调度器:设置运行起止时间和持续时间,
注意:使用调度器循环次数必须选择永远,否则循环次数可能不够,执行会停止。
线程组右键,有9个选项,9个选项分为两种:组件和控制器
组件:
有6个:
配置原件
定时器
前置处理器
后置处理器
断言
监听器
控制器
有三个控制器
取样器
逻辑控制器
测试片段
jmeter的运行
案例
案例一
项目名称:ecshop
被测网站:http://localhost/ecshop
指标:响应时间和错误率
场景:线程数10个,ramp-up时间10s
循环次数:5
测试步骤:
建立测试计划
在测试计划上右键新建线程组
在线程组上右键,添加取样器,http request()
监听器(查看结果树,聚合报告)
运行脚本
查看结果
案例二
使用jmeter调度器针对http请求进行性能测试。
查看结果:
各参数意义:
Lable:每个jmeter元素都有一个name属性,这里显示的就是name属性值
#samples:这个表示这次测试中一共发出了多少个请求,如果模拟的10个用户(线程数设置的是10),循环次数是5,那么这里显示的就是50
Average:平均响应时间。默认情况下是单个请求的平均响应时间(单位ms毫秒)
Median:中位数,就是50%的用户的响应时间
90%~99%line:90--99%的用户的响应时间
Min:最小响应时间
Maximum:最大响应时间
Error%:本次测试中出现的错误率。错误的请求数量/请求的总数
Throughput:吞吐量,默认情况下就是每秒完成的请求数。
Received Kb/s:每秒从服务器接收的数据量
Sent Kb/s:每秒从客户端发送的请求的数量
badboy的使用
badboy录制脚本
地址栏直接输入url地址,点击右边绿色箭头。
优点:录制过程非常简单,生成的脚本也很简单
缺点:只是http和https协议,内置的浏览器内核兼容性不足,有时候会导致无法录制。
badboy和jmeter结合使用
录制的脚本保存为.jmx格式,file-->export to jmeter保存为jmeter格式
在jmeter中打开脚本
jmeter中断言的使用
响应文本和响应代码。
jmeter的参数化
1.Jmeter中参数化有4种方式
CSV Data Set Config (CSV数据控件)
适用于参数取值范围比较大的时候,该方法具有很大的灵活性。
函数助手
__CSVRead:参数化功能相比 CSV Data Set Config 较弱
User Defined Variables(用户定义的变量):一般用于测试计划中不需要随请求迭代的参数设置
User Variables(用户参数):适用于参数取值范围很小的时候使用。
2.参数化的使用
(1)CSV Data Set Config (CSV数据控件)
点击线程组添加配置元件-->CSV Data Set Config
Filename:文件名,保存参数化数据的文件。
File encoding:UTF-8,文件编码格式
Variables Names:对应的参数文件每列的变量名。(类似于excel文件的文件头,起到标示的作用),有几个参数就写几个参数,每个参数之间用分隔符分开(,)
(2)函数助手
User Parameters(用户参数)
线程组-->右键--->添加前置处理器-->用户参数
User Defined Variables(用户定义的变量):一般用于测试计划中不需要随请求迭代的参数设置。
线程组右键-->添加配置元件(config element)-->User Defined Variables
3.jmeter传json格式数据
1.添加http请求头
2.填写参数 body data
jmeter多接口参数的传递
Json串[ ]表示对象组成的数组,{ }表示对象
对象里面包含多个 属性:属性值,属性值:可以是值,可以是数组,可以是对象
Jmeter中使用json提取器提取响应数据中的值。
JSON Extractor各个参数:
Names of created variables:接收值的变量名,多个变量使用分号(;)分隔
Json path expressinons:Json path表达式,用分号(;)分隔
Match no:0:随机,n:取第n个值。-1:匹配所有
Default value:缺省值。
Json path :$表示响应的根对象,取对象或者对象的属性值用点(.),取数组里的对象用[ ],数组索引是从0开始。
比如:响应是
{“test”:”123”},取test的值 $.test
如果响应类似{“属性”:[{“sx”:1}]}如果取sx的值:$.属性[0].sx
请点击下方选择您需要的文档下载。
以上为《jmeter课堂笔记》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。