性能测试-jmeter14-性能项目分析
课程:B站大学
记录软件测试-性能测试学习历程、掌握前端性能测试、后端性能测试、服务端性能测试的你才是一个专业的软件测试工程师
性能测试-jmeter项目性能分析
- 并发数计算方式(续)
- 1、 计算模拟用户正常业务操作《稳定性测试》的并发量:
- 2、计算模拟用户峰值业务操作(压力测试)的并发量:
- 并发数的计算-案例
- 稳定性分析
- 压力分析
- 性能测试项目整体安排
- 轻商城项目的功能介绍
- 轻商城项目的技术介绍
- 轻商城项目的数据库设计
- 搭建性能测试环境
- 1. 获取项目源代码
- 2. 构建轻商城后端代码
- 3. 构建前端代码
- 4. 初始化 MySQL 数据库
- 5. 启动轻商城后台管理系统后端服务
- 6.部署轻商城前端服务
- 性能测试需求分析
- 1、如何获取有效的需求
- 1.1 客户方提出(可以是甲方、也可以是产品提出):
- 1.2 根据历史数据分析(根据运营数据来评估计算出应该达成的性能指标。——互联网行业):
- 2. 性能测试点的提取
- 2.1 性能测试点的提取规则
- 2.2 轻商城性能测试点的提取
- 3. 确定性能测试目标
- 性能测试分析总结:
- 实践是检验真理的唯一标准
并发数计算方式(续)
1、 计算模拟用户正常业务操作《稳定性测试》的并发量:
根据这些数据统计图,可以得出结论:
- 大部分订单在 8 点 - 24 点之间,因此系统的有效工作时长为 16 个小时
- 从订单数量统计,8 - 24 点之间的订单占一天总订单的 98%左右(40474 个)
结合二八原则计算公式:TPS = 总请求数 80%/(总时间 20%)
需要在测试环境模拟用户正常业务操作(稳定性测试)的并发量为:
TPS = 40474 * 0.8 请求数 / 16 * 3600 * 0.2 秒 = 2.81 请求数/秒
2、计算模拟用户峰值业务操作(压力测试)的并发量:
从上面的图中可以得出以下结论:
- 订单最高峰在21点 - 22点之间,一小时的订单总数大约为8853个。
计算压力测试的并发数:TPS = 峰值请求数/峰值时间 * 系数
注意点:此处系数由项目组决定
需要在测试环境模拟用户峰值业务操作(压力测试)的并发量为:
TPS = 8853 请求数 / 3600 秒 * 3(系数)= 7.38 请求数/秒
具体性能指标是由公司性能测试团队指定的
并发数的计算-案例
某购物商城, 经过运营统计, 正常一天成交额为100亿, 客单价平均为300元, 交易时间主要为10:00-17:00-24:00, 其中19:00-20:00的成交量最大, 大约成交20亿。
现升级系统, 需要进行性能测试, 保证软件在上线后能稳定运行。
请计算出系统稳定性测试时的并发(负载)量, 及保证系统峰值业务时的并发(负载)量
稳定性分析
有效的交易时间为10:00-14:00,17:00-24:00, 一共为11个小时
有效的请求数: 100e/300
稳定性TPS = 100e/300 80% / (113600*20%)
10000000000 / 300 * 80% / (11 * 3600 * 20%) ≈ 3366.62 请求数/秒 (TPS)
3300并发量为基准可以进行长时段稳定性测试
压力分析
峰值的交易时间为19:00-20:00, 一共为1个小时
有效的请求数: 20e/300
峰值TPS = *20e/300 / 3600 系数
2000000000 / 300 / 3600 ≈ 1851.85(保留两位小数)
1850并发量为峰值并发,超过即是负载测试,长时间超过即是压力测试
在实际项目业务中,很多指标都是我们需要不断调试和测试出基准线的,其次也需要接触很多监控工具,时序数据库,服务端监控等。
性能测试项目整体安排
- 熟悉项目的功能模块和技术架构
- 掌握如何进行性能测试点的提取
- 掌握性能测试计划包含的主要内容
- 掌握如何编写性能测试用例
- 熟练掌握如何编写JMeter测试脚本-这一步不难
- 知道如何建立性能测试环境-这一步不难
- 掌握如何执行测试脚本
- 掌握性能测试监控关键指标
- 知道如何进行性能测试瓶颈分析-这一步最为关键
- 知道如何进行性能调优-最难
- 掌握性能测试报告包含的主要内容-输出产品
轻商城项目的功能介绍
功能架构
• 前台:首页、商品详情、加入购物车、订单、支付、团购、优惠券
• 后台:商品管理、会员管理、商城管理等等
在实际性能测试中,一般会选择经验丰富的功能测试人员、接口测试人员(且具备性能测试技术)的人负责性能测试项目
轻商城项目的技术介绍
实际业务项目中技术架构复杂的多,但是专人专职,故大家无需担心性能测试遇到的卡点,找对人解决就行了。
轻商城项目的数据库设计
性能测试中一般需要造大量数据,有些可以用csv,但是有些如果调用接口造数据显然很慢,那么这时候我们就要用熟悉数据库以及对于的语言造数据
比如mysql需要水sql语句,比如redis需要键值对语句,比如Oracle需要对应键值对语句
比如消息队列MQ需要会模拟告警数据等等
现在AI很强大,大部分性能sql都可以用AI分析
- 熟悉数据库设计结构, 便于后期对数据库的性能监控
- 性能测试的过程中, 数据库容易出现性能瓶颈
数据表需要了解可以看DDL语句或者sql语句即可
数据表一般也有文档说明,需求文档说明
平常测试时需要清除数据库对应数据或者redis缓存等,确保测试环境干净,一般还会自己搭建服务端环境或者docker容器,用于隔离环境但是映射生产环境数据(用请求头指定或者容器隔离)
搭建性能测试环境
轻商城项目部署步骤
1. 获取项目源代码
• 包含前端代码和后端代码
• 实际工作中,项目源代码由开发团队提供;项目所需的配置文件、启动顺序等说明,也会由开发团队通过文档形式提供
2. 构建轻商城后端代码
• 执行编译、打包操作
• 最终打包为 jar 包或 war 包
3. 构建前端代码
• 使用 Node.js 进行打包
• 打包后的部署包中,会包含 HTML、JS、CSS 等静态资源文件
4. 初始化 MySQL 数据库
• 项目启动前,需先完成数据库初始化
• 执行初始化数据库的 SQL 文件:
实际业务中一般用docker挂在券完成初始化操作,使用docker compose up 重启服务即可,宿主机放置初始化文件即可
source /usr/local/litemall/litemall-db/litemall.sql
5. 启动轻商城后台管理系统后端服务
• 执行以下命令启动服务:
java -jar litemall-all.jar
实际公司业务中是使用docker+k8s
- jar包是通过maven构建java源代码打包输出的文件
- WAR包包含了Java Web 应用的所有组件,如Servlet、JSP 页面、Java 类文件、配置文件等,是一种专门针对Java Web 应用的打包方式
- 前端使用node.js打包输出静态资源源文件
6.部署轻商城前端服务
- 可以使用Nginx服务器
- 通过浏览器访问启动的前端,测试项目是否能够正常运行
注意点:在实际软件项目中
会使用阿里云配置ssl证书,进行icp备案,云服务器绑定域名,域名cdn全站加速,dns隐藏,软件服务通过容器控制,代码服务通过docker容器管理,多个docker容器通过K8s管理,并且由多个版本管理作为回退工具,确保软件服务更新不影响线上用户,内部团队消化解决。
部署项目流程不难,但是对于各种服务管理,集群管理,网络通信管理,试试监控,服务器安全等就需要不断学习啦,大部分都是网络运维工程师的技术,但是作为性能测试工程师若掌握,那么就可以去做服务端存储测试工程师啦!!
对于网络运维需要掌握的技能,最好的方式就是入职岗位,半年就掌握初级运维需要的技术栈啦
性能测试需求分析
性能测试需求分析与传统的功能测试需求有所不同
• 功能测试需求分析:重点在于分析被测系统的功能是否满足产品功能需求规格(正向、逆向)
• 性能测试需求分析:重点在于分析被测系统是否能满足特定的业务需求场景(时间、资源)
• 需要从业务场景、程序代码、服务器、硬件配置等多个维度分析系统可能存在性能瓶颈
1、如何获取有效的需求
1.1 客户方提出(可以是甲方、也可以是产品提出):
• 能够提出明确需求的一般是金融、银行、电信、医疗等企业,他们一般对系统的性能要求高,并且对性能也非常了解。
• 提示:需要评估性能需求的合理性。
1.2 根据历史数据分析(根据运营数据来评估计算出应该达成的性能指标。——互联网行业):
• 通过分析历史运营数据收集用户信息,如:
◦ 注册用户数、日活、月活,计算用户的增长速度。◦ 每月、每周、每天的峰值业务量是多少。◦ 用户频繁使用的功能模块是哪些。注意:简历中一定要写银行测试,金融项目测试,哪怕你只会功能测试,也有一份不错的待遇,但是如果你会自动化测试,性能测试,那么就恭喜你。
2. 性能测试点的提取
2.1 性能测试点的提取规则
序号 | 类别 | 分析维度 | 示例 |
---|---|---|---|
1 | 用户频繁使用的业务功能 | 基于运营数据的使用频率分析 | 搜索商品 加入购物车 |
2 | 非常关键的业务功能 | 核心业务功能的重要性分析 | 加入购物车 下订单 |
3 | 特殊交易日或峰值交易的业务功能 | 交易场景特殊性 | 双11大促 秒杀活动 |
4 | 核心业务发生重大调整的业务功能 | 业务流程变更 | 付款后自动开票(原流程需手动申请) |
5 | 资源占用非常高的业务功能 | 系统资源消耗 | 大数据报表生成 高并发文件上传 |
2.2 轻商城性能测试点的提取
编号 | 功能模块 | 业务功能 | 功能描述 |
---|---|---|---|
T01 | 登录 | 登录 | 用户通过用户名和密码登录 |
T02 | 首页 | 进入首页 | 获取商城首页数据 |
T03 | 商品 | 搜索商品 | 通过关键字搜索商品 |
T04 | 商品 | 查看商品详情 | 点击商品进入商品详情页面 |
T05 | 购物车 | 添加购物车 | 把商品加入购物车 |
T06 | 购物车 | 查看购物车 | 用户查看购物车内的商品 |
T07 | 订单 | 商品结算 | 对已选择的商品进行结算 |
T08 | 订单 | 提交订单 | 用户提交商品订单 |
T09 | 订单 | 查看我的订单 | 用户查看订单列表 |
3. 确定性能测试目标
轻商城作为一个新开发的项目,性能测试目标包括:
1. 确定核心业务功能的TPS
2. 对业务流程(多接口组合)进行压测
3. 系统能在实际系统运行压力的情况下,稳定的运行24小时
注意点:这里就需要根据历史运营数据等找到详细的数据和参数,然后就可以根据实际项目需要的并发计算方式得到基准指标数据
期望的TPS和最大响应时间:
编号 | 功能模块 | 业务功能 | TPS | time |
---|---|---|---|---|
T01 | 登录 | 登录 | 20 | 3s |
T02 | 首页 | 进入首页 | 100 | 5s |
T03 | 商品 | 搜索商品 | 40 | 3s |
T04 | 商品 | 查看商品详情 | 100 | 3s |
T05 | 购物车 | 添加购物车 | 20 | 3s |
T06 | 购物车 | 查看购物车 | 20 | 3s |
T07 | 订单 | 商品结算 | 10 | 3s |
T08 | 订单 | 提交订单 | 10 | 3s |
T09 | 订单 | 查看我的订单 | 40 | 2s |
性能测试分析总结:
软件项目性能测试点的提取:
- 根据性能测试点的提取规则,结合软件项目的功能,整理出需要进行性能测试的测试点。
- 通过使用前面讲解的获取性能指标的方法(产品给/运营数据/监控系统指标计算),得到每个测试点要满足的性能指标。
- 确定项目的测试目标:
◦ 针对每个核心的业务功能都要达到对应的性能指标要求。
◦ 基于业务流程(多个接口的组合)来测试是否达到性能指标的要求。
◦ 模拟用户真实的业务场景,进行长时间的稳定性测试。