性能测试场景设计之如何将线上业务数据转化为测试场景

本文阐述了如何分析线上事务量,包括统计月/年事务量、确定事务占比及测试事务占比,进而建立混合场景模型。通过事务量分析,可找出流量高峰,优化性能测试。

下面提到的事务,在不同的行业和业务场景中粒度都有所不同,通常情况下,我们可以根据场景的目的来定义事务。

线上事务量(月/年)统计

目的:分析每月流量趋势找出流量最高的日期(流量巅峰日)

方法:

从生成环境,或行为分析系统,获取流量日志,查看分析访问量规律,一般选取数据量最大一天来进行后续分析。

线上事务量(日)统计

目的:分析出流量最高的时间段(峰值保障)

方法:

1、若事务量趋势在每天中都是相似的,则可以选择数据量较大一天进行分析;
计算压力时可以与业务部门共同商议在原有压力上增加部分压力,防止交易突高带来不必要的性能问题
2、若交易量趋势相差较大需要分析识别不同的事务量类型分别进行分析;

线上事务(日)占比统计

目的:梳理出需要关注的事务

方法:

1. 依据选择出的日事务量,筛选出不同类型事务的数据,并计算各交易的比例。 
事务比例(线上)=各事务量/总事务量*100%
2. 选择占比超过1%的所有事务,同时排除一些因为环境或其他原因而不可测试的事务

确定测试事务(日)占比

目的:确定测试时使用的交易占比

方法:

1、选择某日交易中事务量最高的时段,计算每个事务量的TPS值。
这里需要选择交易量最高的时段,在细分过程中也需要对每个时间进行单独的数据统计。
若各时段事务比例相似,则可以进行第二步的测试场景模型的转化;
若交易比例差别很大,也需要进行独立的统计分析。
2.按交易占比,计算出各个交易的测试比例。
事务比例(测试)=各事务量/所选事务量之和*100%

确定混合场景模型

目的:确认每个事务的TPS模型,并组合为混合场景

方法:

1、确认单交易测试结果(TPS以及响应时间)
在编写完各个事务脚本后,以少量用户,运行脚本一段时间用来确认各交易的tps和平均响应时间
(此时一般不设置思考时间与pacing,由于这里是针对服务器的TPS做分析,所以这里不考虑模拟最终用户的行为。若想模拟最终用户的行为就要设置思考时间,并且还需要分析用户的操作习惯)
2、确定TPS模型
从单交易测试结果中可以获得每个事务的响应时间,在实际场景中我们可以通过设置pacing时间来控制TPS达到一个具体的值
理想情况下pacing 与TPS之前关系为: TPS = 1/pacing 值
3、各个事务的TPS模型确认后即为混合场景模型
备注:通常,在 LoadRunner 里,会用pacing来控制 TPS,而用 JMeter 的,则会用Constant Throughput Timer来控制 TPS

理论基础:

pacing时间:

为了更好的讲清楚pacing,需要引入iteration的概念。Iteration,迭代。通过设置,可以指定虚拟用户在同一个Action中重复执行多次,每次重复称之为一个iteration。Iteration可以帮助我们模拟现实世界的重复场景。
Pacing,步调。可以通过设置两次迭代之间的间隔时间,来调整各个action之间的步调(或者称之为节奏)。从定义上来看,Pacing是和iteration绑定在一起的,可以认为是iteration pacing。

思考时间(Think time):

可以通过设置思考时间,来模拟真实用户在操作过程中的等待时间。从定义上来看,think time是在iteration内部的某个action中各个步骤的间隔时间。

Alt

业务时间:

是从脚本开始到脚本结束的时间

Action时间:

粗略的说是整个脚本的执行时间(涵盖业务时间)

响应时间:

业务时间 +传输时间+服务器损耗时间等多种 通常情况下我们认为 响应时间=业务时间

<think>嗯,用户的问题集中在性能测试场景设计方法上,参考提供的引用内容可以看出ta需要系统化的分类框架和实操指导。用户可能是一位测试工程师或项目负责人,正在搭建性能测试体系,因为ta的提问聚焦在“方法”而非基础概念,说明已有一定实践经验。从引用材料看,四个关键场景被反复提及(基准/容量/稳定性/异常),但用户真正痛点可能是如何落地这些理论场景。比如引用[3]提到“更真实模拟生产环境”的困惑,引用[4]则给出了组合测试的具体案例。这提示我需要强化场景设计的逻辑链条:为什么设计→怎么设计→如何验证。特别要注意引用[4]的资源争用案例,这是用户容易忽略的隐藏需求——ta可能遇到过因未测试交叉业务导致线上故障的情况。所以回复中要强调“组合场景设计原则,并给出具体示例(如电商的下单/支付组合)。回复结构上采用分类阐述最有效,每种场景都按“目标→设计方法→典型指标”展开。需要避免直接堆砌术语,而是像引用[2]那样说明“四个场景覆盖完整需求”的实践价值。最后补充优先级选择策略,因为用户可能面临资源有限的情况。</think> 根据提供的引用资料和性能测试实践,性能测试场景设计方法可从以下五个维度系统展开: ### 一、场景设计核心维度 1. **负载模式设计** - **阶梯增压场景** ```mermaid graph LR A[初始用户数] --> B[持续5分钟] B --> C[增加50用户] C --> D[持续10分钟] D --> E[循环至目标负载] ``` 用于发现资源泄漏和性能拐点[^2] - **脉冲测试场景** 瞬时达到峰值负载(如秒杀场景),验证系统弹性能力 - **混合模式** 结合阶梯增压和常值负载(如70%容量持续运行) 2. **业务组合策略** | 场景类型 | 设计要点 | 典型案例 | |----------------|------------------------------|-----------------------| | 单业务基准 | 独立测试核心事务 | 支付接口压测 | | 综合业务 | 按生产业务比例混合 | 登录+查询+下单组合 | | 资源争用专项 | 识别冲突业务组合单独测试 | A/C业务并发测试[^4] | | 背景噪音场景 | 模拟非核心业务负载 | 报表生成+监控采集 | ### 二、四类核心场景设计方法 1. **基准场景** - **目标**:建立性能基线 - **设计**: ```python # 伪代码示例 for business in ["A","B","C"]: execute_single_test(business) # 单业务测试 execute_combined_test("A+C") # 冲突组合测试[^4] ``` - **验证指标**:响应时间标准差≤基准值10% 2. **容量场景** - **关键步骤**: 1. 按2-8原则选取核心业务 2. 以10%/step阶梯增压 3. 监控拐点指标: $$ \frac{\Delta TPS}{\Delta User} < 0.1 \quad \text{or} \quad CPU_{usage} > 80\% $$ - **停止条件**:错误率>0.5%或响应时间>3倍基线 3. **稳定性场景** - **设计公式**: $$T_{duration} = max(\frac{1}{2}T_{business\_cycle}, 8h)$$ (业务周期T取日/周峰值区间) - **监控重点**: ```mermaid graph TD A[内存泄漏]-->B[堆内存增长>5%/h] C[线程阻塞]-->D[WAITING线程>总线程30%] ``` 4. **异常场景** - **破坏性测试设计**: | 测试类型 | 实施方法 | 预期表现 | |------------|---------------------------|------------------------| | 服务宕机 | Kill -9支付服务 | 订单降级至离线队列 | | 网络隔离 | 断开数据库主从节点 | 自动切换至备用节点 | | 资源耗尽 | 注入内存占用80%的进程 | 核心业务QPS降幅<20% | ### 三、场景设计优化策略 1. **数据驱动设计** - 生产数据脱敏后用于压测(需避免数据倾斜) - 参数化比例: $$ \frac{动态数据量}{总数据量} \geq 70\% $$ 2. **流量模型建模** 采用**泊松分布**模拟用户到达率: $$ P(N=k) = \frac{\lambda^k e^{-\lambda}}{k!} \quad \lambda = \text{平均请求速率} $$ 3. **环境等价性验证** 通过**资源配置比**保证环境有效性: $$ \frac{Prod_{CPU}}{Test_{CPU}} = \frac{Prod_{Mem}}{Test_{Mem}} \pm 10\% $$ ### 四、实施流程 ```mermaid sequenceDiagram 需求分析->>场景建模: 化RPS/并发数等指标 场景建模->>脚本开发: 实现参数化/关联/检查点 脚本开发->>环境构建: 匹配网络拓扑与中间件版本 环境构建->>场景执行: 梯度执行四类场景 场景执行->>瓶颈定位: 聚焦性能拐点区间 ``` ### 五、典型场景库示例 1. **电商系统** - 瞬时高并发: 20秒内10万用户登录 - 组合事务链: 浏览(60%)+加购(25%)+支付(15%) - 失效场景: 限时优惠券过期瞬间 2. **金融系统** - 批处理场景: 日终批量处理与实时交易叠加 - 数据一致性: 主备切换时的余额验证 [^1]: 性能测试场景即为实现特定目标的压测活动设计 [^2]: 四类场景法(基准/容量/稳定性/异常)覆盖完整需求 [^3]: 场景设计需通过需求分析化生产环境特征 [^4]: 资源争用场景需单独组合测试验证
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方寸明光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值