1. 性能测试的相关概念
- 性能测试的定义:
- 测试人员借助测试工具,模拟系统在不同场景下对应性能指标是否达到预期。
- 性能测试和功能测试有什么区别:
- 功能测试依靠人力完成,不管什么场景下只要能够正常运行即可,
- 性能测试依靠工具完成,测试软件在一些软件的情况下是不是能够正常运行。
- 影响一个软件性能的因素:
- 硬件:
服务器CPU利用率,内存,磁盘操作频率,CPU核心数- 软件:
算法,编程语言- 用户:
用户数量,用户使用时长,用户访问频率
2. 为什么要做性能测试 ?
- 获取系统的性能指标,作为性能指标的基准
- 验证系统的性能指标是否达到性能需求
- 应用程序是否能够满足系统要求的各种性能指标
- 应用程序是否能处理预期的用户负载并有盈余能力
- 应用程序是否能处理业务所需要的事务数量
- 在预期和非预期的用户负载下,应用程序是否稳定
- 是否能够确保用户真正使用软件时获得舒适的体验
- 发现系统的性能瓶颈,内存泄漏等问题
- 系统正常工作的情况下的最大容量
- 帮助系统运维部门能够更好的规划硬件配置
3. 性能测试相关术语、衡量指标
- 并发数用户数:
- 业务层面的并发用户数:
指同时向服务器发送请求的用户数量- 后端服务器的并发用户数:
指的是同时向服务器发送请求的请求数量- 用户数:
- 系统用户数:
系统注册的用户- 在线用户数:
成功登录系统用户数- 并发用户数:
大量的用户访问系统,此时访问的用户数就是并发用户数- 响应时间:
- 用户响应时间:
应用系统从发出请求开始到客户端接收完成所有的字节数据所消耗的时间。- 请求响应时间:
服务器收到请求到发出响应这段时间。- 影响一个软件响应时间的因素:
数据库性能,网络带宽,服务器处理性能,软件算法、逻辑,用户设备- 事务响应时间(TPS):
- 处理一个事务需要的时间。
- 每秒事务通过数量:
- 每秒完成的事务数,通常指每秒成功的事务数。
- 点击率:
- 点击率代表用户每秒向Web服务器提交的HTTP请求数,点击率越大服务器压力越大。一次鼠标点击可能会有多次HTTP请求。
- 吞吐量:
- 用户一次请求和服务器之间的数据交互量。
- 吞吐率:
- 单位时间内用户和服务器之间的数据交互量。
- 思考时间:
- 用户每一个操作之间的时间间隔。
- 资源利用率:
- 不同系统资源的使用情况,包含:CPU、内存、硬盘、网络等。
4. 性能测试分类
基准性能测试:
- 让系统在正常情况下运行,观察软件的性能指标
- 应用场景:项目刚上线需要进行性能摸底。
负载性能测试:
- 验证软件在一定压力情况下运行,观察性能是否出现拐点
压力性能测试:
- 系统处于饱和情况下,观察系统性能指标
可靠性测试:
- 验证系统在一个持续的时间段内运行,在这个时间段内观察系统各项性能指标是否正常:1day —> 1week —> 1month —> 1seasion —> 1year
5. 性能测试执行流程
功能测试流程:
- 需求分析 -----> 测试计划 ----> 测试设计 -----> 测试执行 -----> 测试评估(测试报告)----> 上线
性能测试流程:
- 需求分析 ----- 测试计划 ------ 选择一款性能测试工具 ---- 性能测试脚本编写 ---- 执行性能测试 ---- 产出性能测试报告
性能测试中出现了不符合预期的情况叫性能瓶颈,开发修复的过程叫优化。
示例:
- 基准性能测试:
需求分析:摸底接口可以容纳的用户数量。
工具:Loadrunner
针对需求写脚本
6. 使用LoadRunner进行性能测试
- LoadRunner三大组件之间的关系
- VUG:录制、编写脚本
- Controller:设计场景、运行场景
- Analysis:产生性能测试报告
- 为什么选择LoadRunner ?
- Jemter没有录制功能
- Ld可以设计丰富的测试场景
- Ld可以产出丰富的测试报告
- LoadRunner 的 Web Tours系统
- WebTours 启动:
进入LoadRunner文件夹 —> WebTours —> StartServer.bat双击
启动成功:
- 修改 WebTours 端口:
进入 WebTours —> conf —> httpd.conf 打开
- 访问 WebTours:
浏览器地址栏输入 本地ip+1080端口+WebTours
- 注册 WebTours 用户
注册成功
- WebTours的配置:
- 使用 VUG 录制脚本
- 创建文件
File —> New Script and Solution :
2. 选择 Web - HTTP/HTML ,点击create
进入到脚本页面:
3. 点击录制按钮,
4. 配置录制脚本的存放位置和录制方式:
5. 配置录制脚本的浏览器:
6. 配置录制脚本的访问路径:
7. 点击 Start Recording 开始录制:
脚本录制过程video:VUG录制脚本
- 删除无关脚本
保留测试相关脚本:
- 编译:
编译通过:
10. 运行(回放)
修改思考时间:
7. LoadRunner脚本加强
- 插入事务
View —> Steps Toolbox
2.开始事务 , 搜索:lr_start_sub_transaction, 点击
添加事务名,点击OK
插入事务成功:
插入结束事务:lr_end_transaction(“login”,LR_AUTO)
事务必须有开始有结束,开始的事务和结束的事务之间的事务名称必须一致。
插入事务完成:
6.运行结果:
如果事务名不一致:
运行结果:
7. 快速添加事务:
- 插入集合点
将任务拦截到集合点,统一释放构成并发的效果。
- View —> Steps Toolbox —>搜索 lr_rendezvous();
运行结果:
- 插入检查点
使用 web_freg_find 函数实现
确定要检查的内容:
配置检查函数:
检查函数插入成功:
运行结果:通过
- 参数化:
选定要实现参数化的变量 —> 点击鼠标右键 —> Replace with Parameter —> Create New Parameter
弹出对话框
选择NO,否则所有 username 的字符串都会被替换
参数化成功:
修改参数化的配置:
添加参数:
运行结果:
修改参数化打印日志:
可以修改运行次数:
运行结果:
- 打印日志
通过 lr_log_message 函数实现日志打印
在要插入打印日志的位置点击鼠标右键 —> Insert —> Log Message
通过 lr_output_message 函数实现日志输出
8. 性能测试的实施过程
- 通过VUG(双击Controller也可以) 搭建测试场景
- Tools —> Create Controller Scenario
- 选择 Manual Scenario
- 配置场景:
- 场景脚本配置:
- 初始化设置:
点击 Initialize
- 启动设置:
点击 Start Vusers
- 设置持续运行时间:
点击 Duration
- 退出运行设置:
点击 Stop Vusers
- 配置运行场景:
1 .点击 Run
2. 进入到运行场景:
- 虚拟用户的状态:
- 场景操作区:
- 运行结果统计:
- 监控指标区:
- 监控指标图表区:
监控电脑资源:
- 首先启动下面两个进程:
- 选中 System Resource Graphs —> Windows Resources —> 空白处点击鼠标右键 —> 弹出对话框 —> Add Measurements
3. 添加要监控资源的位置:
Add —> 添加资源地址为localhost —> 点击 OK
4. 添加具体可监控的指标:
添加成功:
- 运行场景:
运行中:
运行结束:
当虚拟用户逐渐启动的时候,Running这条折现逐渐上升,当所有虚拟用户启动完之后,Running这条曲线保持稳定,当虚拟用户运行时间到了,此时Running的曲线逐渐下降。Finish曲线在Running逐渐下降的时候才上升。
9. 分析性能测试报告
使用Analysiser分析测试报告
- Result —> Analyze Results
- 进入测试报告页面
还可以增加图表: