性能测试中如何基于每小时Page views计算页面加载?JMeter脚本负载施加位置
基于PV计算性能测试指标及JMeter负载施加指南
一、从PV/UV推导性能测试核心参数与页面加载指标关联
给定每小时PV=308,802、UV=211,778,先算出核心负载参数,再对应到页面加载指标的测试逻辑:
1. 计算基础负载参数
- 每秒请求数(QPS):直接将PV换算为每秒请求量:
308802 ÷ 3600 ≈ 86 QPS,这是基准测试的目标请求率。如果业务存在峰值时段(比如早高峰是平均负载的2-3倍),需按峰值QPS(172-258)开展压力测试。 - 并发用户数估算:
假设普通场景下,用户看完一页后平均等待10秒再进行下一次操作(思考时间),页面平均加载时间按2秒计算,单个用户的完整请求周期为12秒。
用QPS反推并发数:并发数 = QPS × 请求周期 = 86 × 12 ≈ 1032。
结合UV验证:每小时211,778个独立访客,平均每个访客每小时浏览308802 ÷ 211778 ≈ 1.46页,若访客平均停留10分钟(600秒),单访客的请求间隔约为600 ÷ 1.46 ≈ 411秒,此时并发数也可通过(211778 ÷ 3600) × (600 ÷ 411)估算,但前者基于QPS的计算更贴合实际负载场景。
2. 页面加载指标的测试逻辑
页面加载指标(首屏时间、DOM完成时间、全页加载时间)需与负载绑定测试:
- 基准测试:在86 QPS的稳定负载下,收集页面各项加载指标,确认是否符合业务阈值(比如首屏时间<2秒)。
- 压力测试:逐步提升QPS(1.5倍、2倍基准),观察加载指标的变化,定位性能拐点(比如QPS达到130时,首屏时间突破3秒)。
- 峰值测试:按业务峰值QPS(比如2倍基准=172)运行,验证高负载下页面加载指标是否仍达标。
二、JMeter脚本中施加负载的正确位置
1. 线程组:核心负载入口
- 设置线程数为估算的并发数(比如1032),ramp-up时间根据场景调整:若模拟用户逐步涌入,设为60秒(每秒启动约17个线程);若需瞬间满负载,设为0秒(不建议生产场景使用)。
- 循环次数:若要持续运行1小时,可设置循环次数为
3600 ÷ (页面加载时间+思考时间),或勾选“永远”后在测试计划中设置持续时间为3600秒。
2. 定时器:模拟真实用户行为节奏
- 固定定时器:在页面请求(或包含所有资源的请求组)后添加固定定时器,设置思考时间(比如10秒),模拟用户浏览间隔。
- 高斯随机定时器:若需更真实的用户行为,使用该定时器,设置平均思考时间10秒、偏差2秒,让思考时间产生随机波动,避免负载过于规整。
3. 精确控制QPS:吞吐量整形定时器+并发线程组
如果需要严格维持目标QPS(比如86),不要使用普通线程组,改用并发线程组配合吞吐量整形定时器:
- 在吞吐量整形定时器中设置目标QPS为86,JMeter会自动调整并发线程数来维持该请求率,比手动计算并发数更准确。
4. 注意事项
- 不要在单个HTTP请求内部设置负载控制,所有负载逻辑需放在线程组或定时器层面。
- 确保脚本包含页面的所有依赖资源(CSS、JS、图片、接口),可通过JMeter的录制功能生成完整脚本,否则测试的只是接口性能,而非真实页面加载性能。
内容的提问来源于stack exchange,提问作者Rashmi Ks
相关产品推荐
相关产品推荐

