入门性能测试(一)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
一、JDK的下载和安装
1、jdk安装
官网位置https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
2、安装JDK
建议安装路径不要有汉字目录不要有空格目录不要有x86目录
3、配置环境变量
再次新建一个系统变量输入变量名和变量值后点击确定按钮
输入变量名CLASSPATH
输入变量值.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 【英文输入法下的句号和分号】
在系统变量区域找到Path变量双击打开
点击新建添加
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
4、验证
检测是否安装成功windows图标+R输入cmd按回车键
输入java –versionjavac按回车键
================================================================================
二、Jmeter的下载和安装
1、官网下载Jmeter
官网位置http://jmeter.apache.org/
2、解压
下载后无需安装解压后即可使用
下图为解压后的目录
3、配置Jmeter的环境变量
电脑桌面 → 此电脑鼠标右键选择“属性” → 高级系统设置 → 高级点击“环境变量”
在系统变量下点击“新建”
输入变量名JMETER_HOME
输入变量值下载后jmeter解压的路径 此路径根据自己实际安装路径进行填写
在系统变量区域找到CLASSPATH变量双击打开后进行编辑加上
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;
完整版
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;
注如果没找到CLASSPATH添加在PATH里也可以
在系统变量区域找到Path变量双击打开
点击新建添加%JMETER_HOME%\bin
配置完成后点击确定按钮
4、验证
验证是否配置正确、是否安装成功
启动方法一在Jmeter安装路径下打开bin文件夹找到jmeter.bat文件鼠标右键以管理员身份运行或者双击打开也可以鼠标右键创建一个快捷方式发送到电脑桌面这样启动jmeter会方便很多
启动方法二通过windows图标+Rcmd输入jmeter按回车键
此时会出现两个界面一个是Jmeter的命令窗口使用jmeter的时候此命令窗口不能关缩小到电脑任务栏即可另外一个
是Jmeter的图形操作界面
5、设置成显示中文
永久设置成中文方法找到jmeter解压路径下的bin目录打开jmeter.properties 文件
去掉前面的#修改成language=zh_CN保存
以后启动jmeter.bat文件就是中文界面啦
6、问题解决记录
问题完成了Jmeter配置后运行jmeter.bat文件时控制台一闪而退
解决过程
1、检查jmeter的环境变量没看出啥问题
2、检查jdkjdk没问题
3、重启电脑问题没有解决
4、考虑换安装包重新安装想了想还是想把问题解决嗯接着死磕这个问题
5、替换别人的jmeter.bat文件再次运行还是不可以哇惆怅
6、对解压后的jmeter文件夹让管理员取得所有权限到cmd里面E:\Jmeter\apache-jmeter-5.3\bin\jmeter.bat
还是不可以运行诶
7、编辑jmeter.bat文件在文件末尾另起一行加上pause看错误信息
8、还是环境变量出了问题呗检查JMETER_HOME变量值路径没问题检查CLASSPATH的配置内容并对比网友
的CLASSPATH的配置内容发现我下载的这个 jmeter版本中没有logkit-2.0.jar的文件去掉这个文件路径保存环境
变量运行jmeter.bat文件运行成功
以下为错误情况
三、性能测试的概念
1、性能测试的概念
- 使用自动化工具模拟不同的场景对软件各项性能指标进行测试和评估的过程
2、性能测试的目的
- 评估当前系统能力
例如验收第三方提供的软件
- 常见的性能需求性能需求文档
- WEB首页打开速度在5s一下web登陆速度15s一下
- 邮箱服务支持50万个在线用户
- 计费话单成功率达到99.99以上
- 在100个并发用户的高峰期邮箱的基本功能处理能力至少达到0TPS
- 系统能在高于实际系统运行压力1倍的情况下稳定运行12小时
- 这个系统能否支持200万的Virtual user每天登陆系统的人次
- 寻找性能瓶颈优化性能
- 评估软件是否能满足未来需求
3、什么是性能
- 时间系统处理用户请求响应时间
- 资源系统运行过程中系统资源的消耗情况
四、性能测试的策略
1、基准测试
- 狭义上讲就是单用户测试单用户循环多次得到的数据
- 广义上讲建立基准线当系统的软硬件环境发生变化之后再进行一次基准测试确定变化对性能的影响。4、
1.1、基准测试数据的用途
- 基准测试不会单独存在
- 为多用户并发测试和综合场景测试等提供参考依据
- 为系统/环境配置。系统优化前后的性能提升/下降提供参考指标
2、负载测试
- 概念通过逐步增加系统负载确定在满足系统的性能指标如响应时间等情况下找出系统所能承受的最大负载量的测试
- 作用系统最大负载量达到用户要求时系统才能上线使用。
3、稳定性测试
- 概念在服务器稳定运行用户正常的业务负载下的情况下进行长时间测试1天-1周并最终保证服务器能满足线上业务需求
4、压力测试
- 概念在强负载下的测试查看系统在峰值情况下是否功能隐患、系统是否具有良好的容错能力和可恢复能力
- 测试场景
极限负载情况下的破坏性压力测试
高负载下的长时间的稳定性压力测试
5、并发测试
- 概念并发测试绝对并发是指在极端的时间内发送多个请求来验证服务器对并发的处理能力
五、性能测试的指标标准
1、为什么要学习性能测试指标
- 对性能测试结果进行量化衡量
2、什么是响应时间
- 指从客户端发送请求开始到客户端接收到结果的总时间
- 包括服务器处理时间+网络传输时间
3、什么是并发用户数
- 某一时刻同事向服务器发送请求的用户数
4、吞吐量Throughput
指的是单位时间内处理的客户端请求数量直接体现软件系统的性能承载能力
- QPSQuery Per Second每秒查询数即控制服务器每秒处理的指定请求数量-
- TPSTransactions Per Second每秒事务数即控制服务器美妙处理事务请求的数量
事务即业务页面上的一次操作可能对应一个请求/多个请求
5、点击数和错误率
- 点击数指客户端向服务端发送请求时所有页面的页面资源元素如图片、链接、框架css、js等的请求总数量
- 注意
- 只有web项目才有此指标
- 点击数不是页面上的一次点击
- 错误率指系统在负载情况下是被业务的概率。
- 错误率=失败业务数/业务总数*100%
- 注意
- 大多系统都会要求错误率无限接近于0
- 错误率是一个性能指标不是功能上的随机bug
6、资源使用率
- 资源使用率是指系统各种资源的使用情况一般用“资源的使用量/总的资源可用量*100%”形成资源利用率的数据
六、性能测试的流程
略
七、Jmeter元件和组件的介绍
1、元件的基本介绍
- 元件多个类似功能组件的容器类似于类
- 取样器——发送请求
- 逻辑控制层——控制语句的执行顺序类似于if
- 前置处理器——对请求参数进行预处理
- 后置处理器——对响应结果进行提取
- 断言——检查接口的返回结果是否与预期结果一致
- 定时器——封装一段代码供其他脚本调用
- 配置元件——测试数据的初始化配置
- 监听器——查看Jmeter脚本的运行结果
- 组件市县级独立的某个功能类似于方法
2、元件的作用域
- 元件的作用域是考测试计划的属性结构中元件的父子关系来确定的
提示所有的组件都是以取样器为核心来运行的。组件添加的位置上不同生效的取样器也不同
- 作用域的原则
- 取样器核心不和其他元件相互作用没有作用域
- 逻辑控制器只对其子节点中的取样器和逻辑控制器起作用
- 其他元件
- 如果是某个取样器的子节点则该元件只对其父节点起作用
- 如果其父节点不是取样器则其作用域是该元件父节点下的其它所有后代节点包括子节点子节点的子节点等
3、元件的执行顺序
- 同一个作用域下不同类型元件
- 配置元件-->前置处理程序-->定时器-->取样器-->后置处理程序-->断言-->监听器
- 同一个作用域下多个相同类型元件
- 按照测试计划中从上到下的顺序依次执行
八、JMeter使用示例
1、JMeter第一个案例
需求使用JMeter访问百度首页接口并查看请求和响应信息
- 步骤
- 启动JMeter
- 在“测试计划”下添加“线程组”
- 在“线程组”下添加“HTTP请求”取样器
- 填写“HTTP请求”的相关请求数据
- 在“线程组”下添加“查看观察树”监听器
- 点击“启动”按钮运行并查看结果
2、线程组
概念控制JMeter用于执行测试的一组用户
- 线程组的分类
- Setup线程组预测试操作左右监本之前执行
- 普通线程组执行测试用例可以有1个或多个并行/串行
- Teardown线程组测试后操作所有脚本之后执行
3、JMeter参数化
3.1 什么是参数化
把测试数据组织起来用不同的测试数据调用相同的测试方法。
3.2 四种参数化有何不同如何选择适当的方法
- 用户定义的变量作用定义全局变量。局限性每次取值无论是否是相同的用户都是固定值
- 用户参数作用保证不同的用户针对同一组参数可以取到不同的值。局限性同一个用户再多次循环时取到相同的值。
- CSV数据文件设置作用保证不同的用户及同一用户多次循环时都可以取到不同的值。局限性需要手动进行测试数据的设置。
- 函数作用保证不同的用户及多次循环时都可以取到不同的值不需要提前设置。局限性输入数据有特殊的业务要求的时无法使用。如登陆时的用户名密码