OPAY · 体验专项 · 测试报告

OPay 与竞品(PalmPay、Moniepoint)真机性能与可用性对比测试报告

报告编号 OPAY-EXP-TR-20261026-V7 | 版本 V7(含收银台专题) | 2026-10-26 | 内部资料

报告信息与综合结论

报告编号OPAY-EXP-TR-20261026-V7
报告名称OPay 与竞品(PalmPay、Moniepoint)真机性能与可用性对比测试报告(含收银台专题)
版本 / 日期V7 / 2026-10-26(V6 全文 + 第 9 章收银台专题;其余章节与 V6 相同;修订记录见附录 E)
被测对象OPay Android 8.18.2.498(Google Play 商店生产包)
对照对象PalmPay 7.17.0、Moniepoint 1.76.0(均为商店生产包);判定基准为 PalmPay(同为原生应用、页面结构最接近),Moniepoint 作参考
测试类型黑盒、真机、端到端用户场景的性能与可用性对比测试(不含功能正确性、安全性测试)
测试依据《竞品对比方案 V1》《测试规范 V1》;报告结构参照 ISO/IEC/IEEE 29119-3:2021 测试完成报告
测试时间2026-10-21 至 2026-10-22(北京时间;尼日利亚当地时间为北京时间减 7 小时)
测试地点与网络尼日利亚,Airtel 蜂窝网络(4G、3G、2G),不连 Wi-Fi
测试设备主测机 itel A50(2GB 内存);对照机 Infinix X6531B(4GB 内存)
执行情况正式测试 5 批共 749 轮,有效 723 轮、作废 26 轮(作废原因见 3.2);另执行登录前测试 27 轮、登录测试 6 轮
编制 / 审核 / 批准体验专项(Faster / Available) / ________ / ________

0.1 综合结论

在相同设备、相同网络、相同操作下,OPay 与竞品的差距集中在首帧之后的内容加载、转账页创建、弱网降级与网络链路可用性,冷启动首帧本身不落后。按 2.4 节判定规则:

  • 页面速度:9 个核心页面场景中 OPay 有 7 项落后于 PalmPay,其中 4 项明显落后(流量页 1.6 倍、转银行页 1.6 倍、Betting 页 2.1 倍、消息页 2.9 倍);1 项持平(选套餐 → 收银台);交易列表领先(因账号数据量不同,仅作参考)。
  • 冷启动:首帧持平(1.05 vs 1.09 秒);首页内容出齐落后(6.40 vs 4.36 秒,1.47 倍),每次启动都受影响。
  • 后台压力:三家在后台都会被系统回收;按各页面倍数中位数两家持平(OPay 1.42、PalmPay 1.33),但 OPay 的流量页(1.94 → 5.98 秒,3.1 倍)和收银台(1.58 倍)受影响明显大于 PalmPay。
  • 可用性:交易记录间歇性打不开(4G 4/12 轮、3G 3/4 轮),原因是 3 个 Akamai CDN 节点 TLS 握手无回应,判定为严重;3G 同地同时段业务接口报错率 OPay 8%、PalmPay 1%。
  • 弱网:接近断网时两家都进不了话费、流量收银台;PalmPay 用本地数据显示关键信息并提示重试,OPay 关键内容为空、无提示,降级处理落后。
  • 收银台(第 9 章):线上 AA、AC 收银台 57% 超过 3 秒,是慢 PV 最大来源;真机网络好时 OPay 与 PalmPay 接近(话费 1.50 vs 1.36 秒),但链路串行——下单 → 中转页 → 新建加密连接 → 广告 → 才取支付信息,条件变差时放大最多(后台压力下 1.58 倍)。改法见 P0-6 ①–⑥。
  • 稳定性:723 个有效轮次中三家均未出现 ANR 和崩溃。
  • 机型对照:换用 4GB 的 Infinix 后差距依旧(页面倍数中位 1.37,itel 为 1.25),说明差距主要来自 OPay 页面自身流程,而非低端机特有。

共记录问题 14 项(严重 1、一般 8、轻微 3、待确认 2,见第 5 章),改进建议按投入产出排序见第 6 章。

1 测试概述

1.1 测试目的

  • 在可控、可复现的条件下,量化 OPay 与主要竞品在核心用户场景上的速度与可用性差距。
  • 定位差距的根因(客户端流程、接口、网络链路、设备资源),为 Faster(页面速度)与 Available(稳定性、可用性)专项提供可排期的改进项。
  • 建立可重复执行的对比基线,用于改进后的复测验收。

1.2 测试范围

表 1-1测试范围
类别纳入不纳入
场景已登录冷启动、话费到收银台、流量到收银台、本平台转账页、转银行页、交易记录、消息、Betting、首页滚动;登录前冷启动、打开登录页、重新登录支付确认与扣款(到收银台即停止);输入 PIN / 密码 / 账号;竞品的完整转账链路(竞品账号无最近收款人)
条件4G 无后台压力;4G 有后台压力;EDGE(偶发);固定 2G;固定 3GWi-Fi;高端机;iOS
指标页面视觉完成、系统首帧、冷启动、卡顿帧、单轮流量、接口等待、页面失败率、接口报错率、内存(登录前)功能正确性、安全性、耗电、发热

1.3 被测对象与对照对象

表 1-2被测对象与对照对象
App版本来源与安装状态账号与设置页面技术
OPay(被测)8.18.2.498(versionCode 8462368)Google Play 商店生产包;统一执行 cmd package compile -m speed-profile -f 预编译测试账号已登录;同一账号只允许一台设备在线原生为主,消息页为 RN
PalmPay(基准)7.17.0同上已登录;4 位 PIN 锁屏已由测试人员关闭原生
Moniepoint(参考)1.76.0同上已登录;冷启动和在后台约 1 分钟后要求 6 位密码(未关闭)Flutter 单页面应用
三家使用相同的预编译状态,避免安装后首次运行未编译造成的差异;运行时权限三家统一允许。

1.4 测试环境

表 1-3测试设备
设备角色SoC / 内存系统 / 分辨率备注
itel A50(A667L)主测机展锐 T603 / 2GB(另有 1.4GB 压缩交换区)Android 14线上用户感知 ANR 15.17%,属高 ANR、高慢加载机型
Infinix X6531B对照机联发科 MT6769 / 4GB(可用约 3.6GB)Android 14(XOS 14.5)/ 720×1600只跑 4G 一批(第 4.10 节)
网络Airtel 尼日利亚 SIM 卡,蜂窝数据,不连 Wi-Fi;每轮开始前、结束后各探测一次网络类型、4G 信号强度、ping 延迟与丢包
自动化uiautomator2 驱动操作;屏幕录制(视觉完成);系统日志(系统首帧、进程事件);dumpsys gfxinfo(卡顿);PCAPdroid 本机抓包(诊断轮,不解密)
安全护栏到达收银台即锁定所有点击;出现 PIN / 密码提示立即停止;不输入任何密码与账号;退出收银台只点"取消 / 离开";日志写盘前脱敏

1.5 测试场景定义

表 1-4测试场景与完成判定
编号场景起点终点(完成判定)三家差异
T1已登录冷启动发出启动命令(进程已被杀掉)首页内容出齐Moniepoint 终点为 6 位密码锁屏页
T2登录前冷启动 / 首次启动发出启动命令登录前首页或引导页稳定首次启动为清除数据后第一次打开
T3打开登录页 / 重新登录点击登录入口 / 打开 App登录页稳定 / 登录后首页重新登录为人工操作,流程三家不同
T4首页 → 话费页点击"Airtime"入口号码与金额档位显示完整—
T5话费:选金额 → 收银台点击 ₦100 档位收银台出现(支付按钮可见)Moniepoint 需先点"给自己买",确认单为页面内底部弹层
T6首页 → 流量页;选套餐 → 收银台点击"Data"入口;点击第一个套餐套餐列表显示完整;收银台出现同上
T7首页 → 本平台转账页(AA)点击转账入口转账页加载完竞品只测到转账页(无最近收款人)
T8首页 → 转银行页(AC)点击转银行入口转银行页加载完Moniepoint 与 T7 为同一页面,不单独计
T9首页 → 交易列表点击交易记录入口列表显示三家账号交易数量不同,仅作参考
T10首页 → 消息页点击消息入口消息列表显示Moniepoint 首页无入口,未测
T11首页上下滚动首页就绪上下各滚 3 屏只看卡顿,不看耗时
T12首页 → Betting 页点击 Betting 入口平台列表与输入区显示—

1.6 测试方法

  • 轮次:每个场景每家,4G 无压力 5 轮 × 2 批(合并计算),后台有压力 3 轮,冷启动无压力 4–6 轮、有压力 3 轮;另每场景每家 1–2 轮诊断轮(加抓包)。
  • 顺序:按 App 分块、前后交替(Moniepoint → PalmPay → OPay → OPay → PalmPay → Moniepoint),抵消时段与网络波动;不在同一轮内交错,因为 Moniepoint 在后台约 1 分钟即锁屏。
  • 起始状态:除冷启动外,每轮从已登录首页开始(App 在前台,首页已稳定 2 秒以上)。
  • 后台有压力:每轮开测前依次打开 7 个常用 App(Chrome 加载新闻页、YouTube、谷歌地图、Facebook Lite、相机、YouTube Music、Gmail),每个停 5–10 秒,回到桌面后再打开被测 App。效果见 4.4 节。
  • 网络条件:4G 为自然条件;EDGE 为 10-21 偶然掉网时段;固定 2G / 3G 为测试人员在系统设置中锁定首选网络。
  • 诊断轮:在普通轮基础上开启 PCAPdroid 抓包,记录每个连接的域名、服务器 IP、TLS 握手和请求等待;诊断轮不计入耗时统计。

2 指标定义、统计口径与判定规则

本章说明报告中每一个数字是怎么测出来的、用的什么统计量、精度有多高,以及"落后 / 持平"等判定是怎么得出的。

2.1 性能指标

表 2-1性能指标定义
指标定义起点 → 终点采集方式单位 / 精度
视觉完成(VC)用户看到的画面从点击开始,到不再发生明显变化所用的时间点击被注入时刻 → 最后一次明显画面变化录屏逐帧比较:与最终画面差异小于 0.5% 视为完成;顶部状态栏不参与;窗口内反复变化 ≥4 次的区域(轮播、倒计时)视为循环动画并排除秒;起点误差见 2.5 节
首页内容出齐(冷启动)冷启动后首页的余额卡、入口区、营销位全部显示完整的时刻发出启动命令 → 首页内容出齐同视觉完成;另排除 OPay 首页右下角"Click for Security"悬浮按钮的自动收起动效;加载转圈、骨架屏的结束算作内容出现(只有到观察窗口最后三分之一仍在变化的区域才算循环动画)秒
系统首帧(TTID)新页面绘制出第一帧的时间(Android 系统记录)页面启动 → 第一帧系统日志 wm_activity_launch_time;冷启动取 am start -W 的 TotalTime秒;系统精度 1ms
卡顿帧比例一轮内耗时超过 16.7ms(60Hz 一帧)的帧占比整轮dumpsys gfxinfo 每轮重置后读取%;Flutter 应用测不到
帧耗时 P90一轮内 90% 的帧不超过的耗时整轮同上ms
单轮流量一轮测试中被测 App 的上下行字节数整轮系统按应用 UID 统计的网络字节数KB
内存(PSS)登录前冷启动后被测 App 的实际占用内存冷启动稳定后dumpsys meminfoMB
登录耗时打开 App 到登录后首页的总时间(含人工操作)打开 → 登录后首页页面事件与网络时间线;人工操作时间单列秒;每家 1 个样本
图 2-1视觉完成怎么判定(OPay 流量页,itel A50,4G,无后台压力;取 10 轮中与中位数最接近的一轮,1.96 秒)点击图片放大
视觉完成怎么判定(OPay 流量页,itel A50,4G,无后台压力;取 10 轮中与中位数最接近的一轮,1.96 秒)
时间从点击注入完成算起。橙框为按下首页 Data 入口;0.06 秒的按压反馈即算"画面开始变化";0.50 秒为页面转场;绿框为视觉完成,此后画面与最终画面的差异小于 0.5%。最右为同一轮的循环动画区:红色是观察窗口内变化 ≥4 次的像素(三重礼倒计时、轮播 Banner 以及加载时多次位移的区域),不参与判定,所以倒计时、轮播不会把视觉完成无限推后。系统首帧(0.24 秒)是系统日志记录的新页面第一帧时刻,此时录屏仍是首页,转场动画随后开始。手机号、用户名、交易提示已打码。
图 2-2冷启动"首页内容出齐"怎么判定(OPay,itel A50,4G,已登录;取 5 轮中位数那一轮,6.40 秒)点击图片放大
冷启动"首页内容出齐"怎么判定(OPay,itel A50,4G,已登录;取 5 轮中位数那一轮,6.40 秒)
蓝框为系统首帧 1.03 秒,画面还是启动页;3.20 秒首页框架和入口出来,余额仍在转圈;6.10 秒余额仍未出;绿框 6.40 秒内容出齐。最右红框为排除区:右下"Click for Security"悬浮按钮出现后会自动收起,不算首页内容变化。用户名、交易提示已打码。

2.2 可用性与网络指标

表 2-2可用性与网络指标定义
指标定义采集方式说明
页面失败率未在超时时间内到达终点的轮次 ÷ 总轮次脚本等待终点元素,页面 20 秒、收银台和就绪类 30 秒超时作废轮次不计入分母;被"PIN / 密码提示"护栏中止的不算失败
接口等待客户端发完一段请求到服务器开始回数据的空档(网络往返 + 服务端处理)诊断轮抓包,按连接计算连接级近似;HTTP/2 一个连接可能含多个请求;只统计各家自家域名
业务接口报错率报错请求数 ÷ 请求数(诊断轮,自家业务域名)抓包逐请求判定已剔除保活、关闭等本来就无回应的小包;PalmPay 直连公共 DNS 的探测请求不计入
TLS 握手无回应TCP 已连上、客户端发出 TLS 握手,服务器一个字节都没回抓包按"域名 × 服务器 IP"汇总
请求无回应 / 连接失败握手成功后请求发出再无数据 / 服务器不应答建连抓包等待超过 3 秒的慢回应单列,不算报错

2.3 统计口径

  • 统计量:耗时一律取中位数,括号内为最小–最大值;表中 n 为有效样本数。样本量为 3–10,P90 不稳定,故不报告耗时 P90。
  • 合并规则:10-21 的两批 4G 测试合并计算;后台有压力、2G、3G 各自单独统计,不与 4G 合并。
  • 网络分档:每轮开始前、结束后各探测一次,取较差的一次定档:无网 > 2G(EDGE / GPRS)> 3G(HSPA 等)> 4G。10-21 13:16–15:50 那批没有逐轮探测,按当时抽查记为 4G。因部分 PalmPay、Moniepoint 轮次落在 EDGE 时段,它们的 4G 样本为 7 轮,OPay 为 10 轮。
  • 倍数:OPay ÷ PalmPay(同条件中位数之比);"加压倍数"为同一 App 有压力 ÷ 无压力。"各页面倍数中位数"为各页面倍数的中位数。
  • 作废与失败:作废轮次(测试条件被破坏,如账号在其他设备登录被挤下线、测试人员在录屏窗口内操作)整轮剔除;失败轮次计入失败率,但不计入耗时统计。

2.4 判定规则

表 2-3性能判定规则(以 PalmPay 为基准)
判定条件(OPay ÷ PalmPay)含义
领先≤ 0.90OPay 快于基准 10% 以上
持平0.90–1.10差异在 ±10% 内,视为无差别
落后1.10–1.50OPay 慢于基准 10%–50%
明显落后> 1.50OPay 慢于基准 50% 以上
可用性类测试项:失败率为 0 判定为通过,否则不通过。没有对照数据的项目标注参考或未测。问题严重程度定义见第 5 章。

2.5 测量方法验证

  • 时钟差校正:点击时刻由电脑记录,录屏与系统日志使用手机时钟。逐轮在开测时写一条标记日志、读回手机时间,与电脑时间求差后校正。实测时钟差在 itel 上两天内从约 0 漂移到约 0.5 秒,Infinix 约 0.5 秒;V4 及以前未校正,视觉完成整体偏小 0.2–0.5 秒,V5 起已全部重算。
  • 起点偏差:校正后各批次"起点 → 画面首次变化"的中位数为 0.09–0.12 秒,两台手机、不同时段一致,三家同口径。
  • 逐帧核对:对异常值逐帧检查录屏。例如 itel 冷启动中,余额在启动后 6.4 秒出现,算法结果 6.44 秒;后台有压力的一轮内容 5.9 秒出齐,算法结果 5.88 秒,均与人工判读一致。
  • 精度限制:Moniepoint 多数页面在 0.3 秒内完成,零点几秒的差异处于测量精度附近;Flutter 应用没有系统首帧和卡顿数据。

3 测试执行情况

3.1 批次与轮次

表 3-1正式测试批次(轮)
批次日期(北京时间)设备条件内容总轮次有效作废失败
B110-21 13:16itel4GT4–T12 无压力 ×5 + 诊断 ×113613608
B210-21 16:44itel4G(含 EDGE 时段)T4–T12 无压力 ×5 + 诊断 ×1;加压 ×3;冷启动226203231
B310-22 04:10itel固定 2GOPay、PalmPay T4–T12 ×5 + 诊断;三家冷启动 ×3109109044
B410-22 13:48itel固定 3GPalmPay ×5、OPay ×3 + 诊断807913
B510-22 18:46Infinix4GT4–T12 无压力 ×5 + 诊断;加压 ×3;冷启动19819623
合计7497232659
失败轮次计入失败率(4.6 节),不计入耗时统计。B1 的 8 轮失败中 3 轮发生在 15:56 手机完全断网时段,属网络原因,失败率统计中已扣除;B3 失败集中在接近断网的 2G 条件(见 4.5.2)。另执行登录前测试 27 轮(全部有效)、登录过程测试 6 轮(每家各 1 轮注册或登录、1 轮重新登录)。

3.2 与计划的偏差

表 3-2偏差记录
编号偏差原因处理与影响
D1B2 中 OPay 23 轮作废测试期间 OPay 账号在另一台手机登录,测试机被挤下线(OPay 只允许单设备在线)作废并补测;不影响结论
D2竞品转账只测到转账页竞品为新账号,没有最近收款人;自动化不输入账号AA / AC 只比较转账页加载;完整转账链路未比较
D3OPay 未碰上 EDGE10-21 网络偶然掉到 EDGE 的约 45 分钟正好是 PalmPay、Moniepoint 的测试块补做固定 2G(B3),但该段接近断网,只用于比较降级方式
D4固定 3G 批次 OPay 只完成前半块换地点后 3G 能附着但无数据(运营商侧)OPay 每页 3 轮、PalmPay 5 轮;Moniepoint 未测 3G
D5Moniepoint 加压、冷启动需人工解锁Moniepoint 冷启动和后台 1 分钟后要求 6 位密码,自动化不输入密码由测试人员守机解锁;B5 中 2 轮因在录屏窗口内输入密码而作废
D6V1–V4 视觉完成未做时钟差校正电脑与手机时钟差漂移(见 2.5 节)V5 起全部重算;系统首帧、接口、报错类数据不受影响

3.3 阻碍因素与处理

  • 冷启动后的营销弹窗偶发遮挡首页(OPay "EARN MORE"理财弹窗、PalmPay "Free Cash"弹窗),导致 B5 中 2 轮"首页就绪"超时;已在脚本中加入自动关闭弹窗(找不到关闭按钮时按一次返回),2026-10-23 验证通过。
  • Infinix 上 uiautomator2 报告的前台应用不准确,已改为读取系统窗口焦点。
  • 电脑走代理网络,所有网络相关测量只在手机上进行。
图 3-1执行中遇到的两类阻碍(Infinix X6531B,10-22,均为失败轮次的录屏原样画面)点击图片放大
执行中遇到的两类阻碍(Infinix X6531B,10-22,均为失败轮次的录屏原样画面)
左:OPay 冷启动后"EARN MORE"理财弹窗挡住首页入口,脚本找不到入口,该轮记为失败(非 App 故障)。右:数据网络瞬断约 1.8 秒时 PalmPay 弹出"No Network Connection",网络恢复后仍不消失,同样挡住入口。用户名、账号已打码。

4 测试结果

4.1 结果判定总表

表 4-1主要测试项判定(itel A50;未注明时为 4G、无后台压力、视觉完成中位数)
测试项OPayPalmPayOPay ÷ PalmPay判定详见
话费页1.60 秒1.29 秒1.23落后4.2
话费:选金额 → 收银台1.50 秒1.36 秒1.11落后4.2
流量页1.94 秒1.19 秒1.63明显落后4.2
流量:选套餐 → 收银台1.37 秒1.33 秒1.03持平4.2
本平台转账页1.23 秒0.99 秒1.25落后4.2
转银行页1.21 秒0.75 秒1.61明显落后4.2
交易列表(参考)1.30 秒1.53 秒0.85领先4.2
消息页1.87 秒0.64 秒2.93明显落后4.2
Betting 页2.16 秒1.03 秒2.09明显落后4.2
本平台 / 转银行页系统首帧0.74 / 0.54 秒0.17 / 0.17 秒4.4 / 3.2明显落后4.2
冷启动系统首帧1.05 秒1.09 秒0.96持平4.3
冷启动首页内容出齐6.40 秒4.36 秒1.47落后4.3
后台有压力:各页面倍数中位数1.42 倍1.33 倍1.07持平4.4
后台有压力:流量页5.98 秒1.58 秒3.78明显落后4.4
后台有压力:冷启动首帧2.49 秒1.68 秒1.48落后4.4
交易记录可打开(4G / 3G)8/12、1/4 轮全部成功—不通过4.6
业务接口报错率(3G 同地同时段)8%1%—明显落后4.6
接近断网(固定 2G)时的降级关键内容为空、无提示本地数据显示 + 提示 + 重连—不通过4.5
自家接口等待 P90469–498 ms194 ms2.4–2.6明显落后4.7
首页滚动卡顿帧16%6–11%—明显落后4.8
打开登录页(登录前)3.12 秒0.24 秒13明显落后4.9
登录前冷启动内存(PSS)114 MB151 MB0.75领先4.9
ANR / 崩溃(723 个有效轮次)00—通过3.1
倍数 1.11(选金额 → 收银台)处于判定边界。交易列表三家账号交易数量不同,仅作参考。

4.2 页面速度(4G,无后台压力)

表 4-2视觉完成(秒;中位数(最小–最大),n;itel A50,4G,无后台压力)
场景OPayPalmPayMoniepointOPay ÷ PalmPay判定
T4 话费页1.60(1.44–2.39),n=101.29(0.95–1.91),n=70.94(0.72–1.70),n=71.23落后
T5 选金额 → 收银台1.50(1.24–2.35),n=101.36(1.20–1.53),n=70.35(0.27–0.43),n=7 ¹1.11落后
T5 附加:给自己买 → 金额页——0.71(0.48–2.19),n=7—参考
T6 流量页1.94(1.72–5.30),n=101.19(0.99–1.39),n=71.02(0.95–2.50),n=71.63明显落后
T6 选套餐 → 收银台1.37(1.24–1.65),n=101.33(1.26–1.44),n=70.27(0.25–0.32),n=7 ¹1.03持平
T7 本平台转账页1.23(1.13–2.59),n=100.99(0.73–1.42),n=71.13(0.96–1.45),n=71.25落后
T8 转银行页1.21(1.05–1.66),n=100.75(0.69–1.18),n=7同 T71.61明显落后
T9 交易列表1.30(0.83–1.54),n=81.53(0.63–2.81),n=70.59(0.46–0.72),n=70.85领先
T10 消息页1.87(1.51–4.29),n=100.64(0.51–0.83),n=7—2.93明显落后
T12 Betting 页2.16(1.46–11.82),n=101.03(0.95–1.36),n=70.25(0.22–2.44),n=72.09明显落后
¹ Moniepoint 的确认单是同一页面内的底部弹层,与 OPay、PalmPay 跳转到独立收银台页面的流程不同,仅作参考。T9 OPay n=8:其余轮次为失败轮(交易记录打不开,4G 合计 4/12,见 4.6),不计入耗时。
表 4-3系统首帧(秒;中位数(最小–最大),n;同上条件;Moniepoint 为 Flutter 单页面应用,无此项)
场景OPayPalmPayOPay ÷ PalmPay
T4 话费页0.56(0.25–1.25),n=90.47(0.27–0.66),n=61.19
T5 选金额 → 收银台0.26(0.23–0.29),n=80.31(0.31–0.31),n=20.84
T6 流量页0.37(0.24–0.42),n=60.41(0.32–0.55),n=60.90
T6 选套餐 → 收银台0.24(0.24–0.26),n=30.32(0.28–0.42),n=50.76
T7 本平台转账页0.74(0.41–1.54),n=90.17(0.16–0.18),n=64.4
T8 转银行页0.54(0.45–0.76),n=100.17(0.16–0.20),n=63.2
T9 交易列表0.26(0.23–0.39),n=70.27(0.24–0.31),n=30.95
T10 消息页0.47(0.41–1.03),n=70.22(0.19–0.28),n=52.1
T12 Betting 页0.47(0.35–0.69),n=90.30(0.28–0.45),n=51.6
系统首帧只在页面切换为新 Activity 时记录,部分轮次没有该事件,所以 n 小于视觉完成。

分析:话费、流量、收银台、交易列表的首帧两家相近,OPay 的差距出现在首帧之后(等接口与营销模块);转账页的首帧本身就是 PalmPay 的 3–4 倍,说明转账页的创建和布局本身较重,问题不只在接口。

以下截图取每家与中位数最接近的一轮,同一时刻并排对比,绿框为该轮视觉完成;用户名、账号、手机号、收款人已打码。

图 4-1流量页:三家同一时刻的画面(itel A50,4G,无后台压力)点击图片放大
流量页:三家同一时刻的画面(itel A50,4G,无后台压力)
OPay 1.5 秒时只有号码行,三重礼、优惠券、套餐与返现到 1.96 秒才出齐;PalmPay 1.0 秒出框架、1.33 秒完成。Moniepoint 这一轮进入流量页即弹出通讯录权限说明框,视觉完成测的是带弹框的画面,仅作参考。
图 4-2Betting 页:三家同一时刻的画面(itel A50,4G,无后台压力)点击图片放大
Betting 页:三家同一时刻的画面(itel A50,4G,无后台压力)
OPay 1.0 秒页面只有输入框,1.5 秒出平台与金额,2.19 秒推荐活动等营销模块出齐;PalmPay 1.0 秒基本完整(1.21 秒完成);Moniepoint 为平台列表页,0.25 秒完成。
图 4-3消息页:OPay 与 PalmPay 同一时刻的画面(itel A50,4G,无后台压力)点击图片放大
消息页:OPay 与 PalmPay 同一时刻的画面(itel A50,4G,无后台压力)
OPay 消息页为 RN 页面,1.0、1.5 秒只有标题和分类标签,1.94 秒消息列表才出现;PalmPay 0.5 秒列表已出(0.62 秒完成)。Moniepoint 无此入口。
图 4-4本平台转账页:首帧差距(itel A50,4G,无后台压力)点击图片放大
本平台转账页:首帧差距(itel A50,4G,无后台压力)
OPay 系统首帧 0.74 秒,录屏中 0.8 秒仍是首页、1.0 秒新页面才出现;PalmPay 系统首帧 0.16 秒,0.6 秒页面已出。两家视觉完成接近(1.24 vs 1.23 秒),差距主要在页面创建(见 F-05)。OPay 最近收款人(姓名、账号)已打码。

4.3 已登录冷启动

表 4-4已登录冷启动(秒;中位数(最小–最大),n;itel A50,4G,无后台压力)
指标OPayPalmPayMoniepoint ¹OPay ÷ PalmPay判定
系统首帧(TotalTime)1.05(1.01–1.51),n=51.09(0.95–1.68),n=65.55(4.43–7.81),n=40.96持平
首页内容出齐6.40(4.43–6.60),n=54.36(4.24–5.18),n=67.69(6.69–9.15),n=41.47落后
¹ Moniepoint 冷启动终点是 6 位密码锁屏页,与另两家不可比。

过程观察:OPay 冷启动依次出现空白页加顶部转圈 → 入口区 → 用户名与余额卡(余额先转圈)。首页右下角"Click for Security"悬浮按钮在内容出齐后约 2–5 秒自动收起,属动效,不计入(V4 的 9.7 秒即被它拉长)。生产包冷启动抓包(5 轮)显示,首页业务接口 api.opayweb.com 要到启动后 3.2–4.5 秒才发出,此前已先发出 26–41 个请求(Facebook SDK 7、首页配置 5–9、AB 测试 4–6、埋点 3–4、AppsFlyer 2–3、设备安全配置 2–3)。同一次运行中 Application.onCreate 耗时 OPay 791ms、PalmPay 约 285ms、Moniepoint 228ms。

4.4 后台有压力

表 4-5后台压力对设备状态的影响(itel A50)
观测项无压力有压力
开测时被测 App 进程是否存活OPay 39/40 轮、PalmPay 38/40 轮、Moniepoint 30/30 轮存活OPay 0/15、PalmPay 0/15 存活(全部被系统回收,需重新冷启动);Moniepoint 同样被回收
测量期间系统回收其他进程(次/轮,中位数)0–14–5(Moniepoint 2)
开测时系统可用内存(中位数)约 610–720 MB约 720–780 MB(系统以回收后台进程维持,读数不反映压力)
itel A50 总内存 1.87GB。因此"有压力"下的页面耗时包含两部分影响:App 被回收后重新冷启动,以及测量期间内存紧张、频繁回收进程。各页面计时仍从回到首页、点击入口开始,不包含冷启动时间。
表 4-6无压力 → 有压力(视觉完成,秒;4G;有压力 n=3、无压力 n=7–10)
场景OPayPalmPayMoniepoint
话费页1.60 → 2.19(1.37 倍)1.29 → 1.55(1.20 倍)0.94 → 0.75(未变慢)
选金额 → 收银台1.50 → 2.37(1.58 倍)1.36 → 1.57(1.16 倍)0.35 → 0.27(未变慢)
流量页1.94 → 5.98(3.09 倍)1.19 → 1.58(1.33 倍)1.02 → 0.92(未变慢)
选套餐 → 收银台1.37 → 2.42(1.77 倍)1.33 → 1.57(1.18 倍)0.27 → 0.17(未变慢)
本平台转账页1.23 → 1.72(1.40 倍)0.99 → 1.43(1.44 倍)1.13 → 0.93(未变慢)
转银行页1.21 → 1.71(1.42 倍)0.75 → 1.18(1.57 倍)—
交易列表1.30 → 1.23(未变慢)1.53 → 2.09(1.37 倍)0.59 → 0.48(未变慢)
各页面倍数中位数1.42 倍1.33 倍未测出变慢
冷启动系统首帧1.05 → 2.49(2.38 倍)1.09 → 1.68(1.54 倍)5.55 → 5.29(锁屏页)
冷启动首页内容出齐6.40 → 5.88 ¹4.36 → 5.35—
¹ OPay 有压力下首页内容出齐(5.88 秒,n=3)略快于无压力(6.40 秒,n=5),是样本少和首页接口返回时间波动所致,不代表压力下更快。Moniepoint 的"未变慢"数值变小,是因为它用本地数据先画、确认单为页面内弹层,零点几秒的差异在测量精度附近;且其每轮在人工解锁、App 刚重启后才开始计时。

4.5 网络条件

4.5.1 偶发 EDGE(10-21,延迟正常、带宽低;仅 PalmPay、Moniepoint)

表 4-74G → EDGE(视觉完成,秒;PalmPay 无压力;ping 25–64ms)
场景PalmPayMoniepoint
话费页1.29 → 3.27(2.53 倍)0.94 → 0.89(未变慢)
流量页1.19 → 3.66(3.08 倍)1.02 → 0.90(未变慢)
本平台转账页0.99 → 1.34(1.35 倍)1.13 → 1.05(未变慢)
转银行页0.75 → 0.91(1.21 倍)—
Betting 页1.03 → 1.56(1.51 倍)0.25 → 0.22(未变慢)
收银台、交易列表、消息0.98–1.22 倍未变慢
各页面倍数中位数1.22 倍未测出变慢
页面是否"等接口再画"决定了弱网体验:PalmPay 话费、流量页等接口返回才画完整,EDGE 下慢 2.5–3.1 倍;Moniepoint 用本地数据先画,未测出变慢。OPay 未碰上该时段(偏差 D3)。

4.5.2 固定 2G(10-22,接近断网;OPay、PalmPay)

测试人员锁定首选网络为 2G,两家同时段交替测试(每场景 5 轮 + 1 轮诊断)。网络记录:开头约 7 分钟 ping 往返 0.27–3.3 秒、丢包 33%,之后 ping 基本全丢,中间数次完全断网。两家条件相同,本节只比较"能否使用、如何降级",不比较耗时。

表 4-8固定 2G 下的可用性与降级表现(走完轮数 / 总轮数)
场景OPayPalmPay
话费 → 收银台0/6:页面能打开,但本机号码、运营商、金额档位均不显示,只剩手动输入框0/6:号码、运营商、6 个金额档位正常显示(本地数据);点金额后收银台接口 30 秒内无响应
流量 → 收银台0/6:套餐列表不出,或选套餐后收银台进不去0/6:收银台进不去
转账AA、AC 各 1/6 到收银台;失败时金额页快捷金额(₦500 等)不出转账页 6/6 能打开(只测到转账页)
交易记录列表 0/4 加载出来:转圈后显示错误页和 Retry,不显示上次缓存的列表6/6 能打开
Betting、消息、首页滚动全部正常全部正常
冷启动系统首帧1.39 秒(1.24–1.90)0.93 秒(0.90–1.54)
冷启动后的首页入口都在,但余额区空白、无用户名和头像,只有顶部转圈,无任何网络提示用户名、头像、余额(隐藏状态)均显示,并提示"网络连接有问题,请检查网络或重试"
诊断轮抓包5 轮中 4 轮 0 次建连每轮尝试建连 15–32 次,偶尔连通即取得数据
判定:两家都无法完成话费、流量支付(持平),但 OPay 在关键内容显示、网络提示、重试三方面均劣于 PalmPay,降级处理判定为不通过。推断 OPay 先检查系统"网络是否可用",判定不可用即放弃请求;系统在弱网下的判断常常滞后(本次切到 2G 后约 36 秒才判定可用)。Moniepoint 未测固定 2G(需人工解锁)。
图 4-5固定 2G:话费页(itel A50,10-22;OPay 为失败轮次)点击图片放大
固定 2G:话费页(itel A50,10-22;OPay 为失败轮次)
OPay 页面能打开,但 15 秒内本机号码(只显示 0XX XXXX XXXX 占位)、运营商和金额档位都不出,只剩手动输入框并一直转圈;PalmPay 号码和金额档位 1 秒内即显示(本地缓存兜底)。PalmPay 手机号已打码。

4.5.3 固定 3G(10-22,同地同时段复测)

锁定首选网络为 3G(HSPA+)。实测 ping 中位 42ms、P90 46ms,160 次探测仅 1 次丢包,与 10-21 的 4G(中位 38ms)相当,并非慢网;两家 3G 与 4G 的耗时基本相同(各页面倍数中位 OPay 0.98、PalmPay 1.06)。本节价值在于两家在完全相同地点、时段下的对比。

表 4-9固定 3G 下的视觉完成(秒;中位数(最小–最大);OPay n=3、PalmPay n=5)
场景OPayPalmPay3G 倍数4G 倍数(4.2)
话费页1.47(1.46–2.97)1.07(0.94–1.47)1.41.2
选金额 → 收银台1.50(1.48–2.43)1.33(1.28–1.48)1.11.1
流量页1.91(1.70–5.49)1.07(0.97–1.55)1.81.6
选套餐 → 收银台1.46(1.46–1.50)1.40(1.39–1.49)1.01.0
本平台转账页1.20(1.18–2.15)1.18(0.81–1.64)1.01.2
转银行页1.21(1.12–1.26)0.88(0.68–0.89)1.41.6
消息页1.45(1.33–4.27)0.70(0.63–0.90)2.12.9
Betting 页1.98(1.97–2.64)1.08(1.04–1.65)1.82.1
交易列表3/4 轮打不开1.63(1.50–2.05),6/6 能打开—0.8
同地同时段下差距与 4G 基本一致(话费、流量略大,消息、Betting、转银行略小),说明差距来自 OPay 页面自身流程,而非测试时段或网络。3G 下系统首帧:OPay 本平台转账页 0.65 秒、消息页 0.63 秒,PalmPay 0.21、0.33 秒。

4.6 可用性与网络报错

表 4-10页面失败率(失败轮 / 总轮,作废轮次不计)
网络OPayPalmPayMoniepoint
4G(10-21 两批)5/111(5%)0/79(0%)0/61(0%)
3G(10-22,同地同时段)3/31(10%)0/48(0%)未测
EDGE(10-21)未碰上0/32(0%)0/24(0%)
固定 2G(10-22,接近断网)32/52(62%)12/48(25%)未测
OPay 4G 已扣除 10-21 15:56 手机完全断网时的 3 轮。后台有压力的轮次(OPay、PalmPay 各 15 轮)均为 0 失败。
表 4-11OPay 失败场景分布(失败轮 / 总轮)
场景4G3G固定 2G卡在哪一步
交易记录4/123/410/10列表 30 秒内未出现(转圈后错误页 + Retry,不显示缓存)
本平台转账 → 收银台1/120/45/64G:收银台 30 秒未出现;2G:快捷金额不出
转银行 → 收银台0/120/45/6快捷金额不出
话费 → 收银台0/120/46/6号码和金额档位不显示,收银台进不去
流量 → 收银台0/120/46/6套餐列表不出,或收银台进不去
Betting、消息、首页滚动000—
图 4-6交易记录打不开(OPay,itel A50,4G,10-21 17:55;交易域名被分到问题 CDN 节点)点击图片放大
交易记录打不开(OPay,itel A50,4G,10-21 17:55;交易域名被分到问题 CDN 节点)
进入后一直转圈,30 秒仍无列表,30.8 秒才出现错误页(插画 + Retry),不显示上次缓存的列表。4G 下失败的 4 轮,错误页都在 30.4–30.8 秒出现。
表 4-12业务接口报错率(诊断轮抓包,自家业务域名)
网络OPayPalmPayMoniepoint
4G(10-21 两批)23/534(4%)1/181(1%)5/245(2%)
3G(10-22,同地同时段)19/227(8%)2/218(1%)未测
EDGE(10-21)未碰上21/195(11%)2/266(1%)
固定 2G(10-22)11/12(全程只发出 12 个请求)82/91(90%)未测

根因:3 个 CDN 节点 TLS 握手无回应。把 4G、3G 全部 OPay 诊断轮按"域名 × 服务器节点"汇总,30 次 TLS 握手无回应全部落在 3 个 Akamai 节点上;同样的域名分到其他 23 个节点(Akamai 19、Cloudflare 4)时 95 次握手全部成功。问题在节点本身,而非某个域名的证书或配置。

表 4-13OPay 各域名 TLS 握手结果(有回应 / 无回应,次)
域名(用途)问题节点同域名其他 Akamai 节点Cloudflare 节点
wallet-transaction(交易记录、转账金额页)23.32.248.206:0 / 4;23.32.248.213:0 / 31 / 0(1 个节点)4 / 0
wallet-ws(钱包长连接)23.32.248.213:0 / 911 / 0(7 个节点)11 / 0
config-home(首页配置、广告)23.32.248.213:0 / 1118 / 0(8 个节点)19 / 0
api(首页业务接口)184.27.140.86:0 / 325 / 0(11 个节点)6 / 0
其他 OPay 域名—全部有回应全部有回应
出错时间(北京时间):.213 在 10-21 14:23–14:26、17:52–17:55 和 10-22 14:09–14:16;.206 在 10-21 14:23 和 10-22 14:12–14:13;184.27.140.86 在 10-21 14:20–14:25。OPay 4G、3G 共 42 次接口报错中 30 次(71%)属此类;其余 12 次为请求无回应,集中在生活缴费域名 wallet-living(7 次),节点正常,属网络偶发。DNS 分配机制见附录 D。

4.7 接口、流量与资源

表 4-14自家接口等待(诊断轮抓包;中位 / P90,ms;轮次)
网络OPayPalmPayMoniepoint
4G(B1)199 / 469(140)138 / 194(83)15 / 163(201)
4G(B2)190 / 498(165)——
3G(B4)193 / 378(143)157 / 235(115)—
EDGE / 2G—153 / 244(68)16 / 170(211)
OPay 中位与 PalmPay 接近,但 P90 高一倍,慢请求长尾更重;同样 8 个场景,OPay 自家请求轮次(140–165)约为 PalmPay(68–83)的 2 倍。Moniepoint 中位只有十几毫秒,可能与其长连接请求方式有关,连接级近似对它不一定准确,仅作参考。
表 4-15单轮流量与第三方域名(itel,4G,无压力)
项目OPayPalmPayMoniepoint
流量页单轮流量约 300 KB约 150 KB—
Betting 页单轮流量182–190 KB61 KB—
涉及域名数(其中第三方)10–13(0–1)约 9(5)约 10(6)
OPay 流量几乎全在自家域名;PalmPay、Moniepoint 各有约 5 个第三方域名(AppsFlyer、阿里云设备风控、Singular、Mixpanel、Braze 等)。OPay 流量页、Betting 页的流量大头是单个约 235 KB / 135 KB 的接口回包(生产包传输时未压缩,见 F-14),不是广告图片;广告图片的实际下载方式见附录 C。

4.8 流畅度

表 4-16卡顿帧与帧耗时(itel,4G,无压力;Moniepoint 为 Flutter,系统帧统计测不到)
场景OPayPalmPay判定
首页上下滚动:卡顿帧16%(两批均为 16%)6–11%明显落后
首页上下滚动:帧耗时 P9057 ms36–38 ms明显落后
交易列表滚动:卡顿帧10–11%2–12%参考
交易列表 PalmPay 第一批列表为空,仅作参考。Infinix 上两家首页滚动卡顿帧均为 22%(帧耗时 P90 均为 32ms),无差别,说明 itel 上的差距与低端机渲染能力有关。

4.9 登录前与重新登录

表 4-17登录前与重新登录(itel,4G)
指标OPayPalmPayMoniepoint判定
首次启动(清数据后)系统首帧4.75 秒1.66 秒5.06 秒明显落后
登录前冷启动系统首帧2.47 秒1.01 秒4.15 秒明显落后
打开登录页(视觉完成)3.12 秒0.24 秒0.41 秒明显落后
登录前冷启动内存(PSS)114 MB151 MB169 MB领先
退出后同机重新登录:打开 → 首页39.9 秒13.7 秒约 47 秒参考
重新登录所需验证手机号 + 人脸 + 短信验证码只输 PIN(记住手机号)未读取界面—
登录前测试 27 轮,冷启动 ×5、登录页 ×3(首次启动每家 1 次);重新登录每家 1 个样本,含人工操作,流程不同,仅作参考。OPay 重新登录中无人操作的纯等待约 13.4 秒(人脸上传完到短信到达 7.5 秒,短信到达到进首页 5.9 秒)。登录页数据测于 10-20 至 10-21 上午,当时电脑与手机时钟差约为 0,未重算。

4.10 机型对照:Infinix X6531B(4GB)

表 4-18视觉完成对照(秒,中位数;4G,无后台压力)
场景OPay itelOPay InfinixPalmPay itelPalmPay Infinix倍数 itel倍数 Infinix
话费页1.601.231.290.901.231.37
选金额 → 收银台1.501.881.361.221.111.54
流量页1.941.401.190.941.631.50
选套餐 → 收银台1.371.471.331.271.031.16
本平台转账页1.231.110.991.091.251.02
转银行页1.211.060.750.611.611.74
交易列表(参考)1.300.861.531.520.850.56
消息页1.870.750.640.582.931.30
Betting 页2.161.901.030.892.092.14
各页面倍数中位数1.251.37
表 4-19冷启动、后台压力与接口(Infinix 与 itel 对照)
指标OPay itelOPay InfinixPalmPay itelPalmPay Infinix
冷启动系统首帧(无压力)1.051.281.090.66
冷启动首页内容出齐(无压力)6.403.734.362.33
冷启动系统首帧(有压力)2.491.771.681.31
冷启动首页内容出齐(有压力)5.884.205.353.85
有压力时各页面倍数中位数1.421.151.330.91
有压力时开测前已被回收15/1514/1415/1515/15
转账页系统首帧 AA / AC0.74 / 0.540.53 / 0.440.17 / 0.170.17 / 0.15
自家接口等待 中位 / P90(ms)193 / 480217 / 426138 / 194142 / 207
单位:秒(另注明者除外)。Infinix 批次 198 轮,作废 2 轮(Moniepoint 加压冷启动时测试人员在录屏窗口内输入密码);失败 3 轮均非 App 故障(2 轮营销弹窗遮挡首页、1 轮数据网络瞬断约 1.8 秒)。
  • 差距不是低端机特有的:Infinix 上 OPay 各页面中位仍是 PalmPay 的 1.37 倍;流量 1.5、转银行 1.7、Betting 2.1 倍与 itel 基本一致。
  • Infinix 上 OPay 冷启动首帧也落后:1.28 vs 0.66 秒(itel 上持平)。PalmPay 在更好的手机上首帧缩短约 40%,OPay 没有改善,与 OPay 启动阶段同步工作较多(4.3 节)一致。
  • 转账页首帧差 3 倍,两台手机一致,与机型无关。
  • 消息页差距缩小到 1.3 倍:消息页为 RN 页面,初始化主要消耗 CPU,设备越好越不明显。
  • 附带观察:数据网络瞬断约 1.8 秒时,PalmPay 弹出"No Network Connection"弹窗,网络恢复后不会自动消失。

5 问题清单

严重程度定义:严重——核心功能在可复现条件下不可用;一般——明显落后基准(> 1.5 倍)、影响每次启动,或在后台压力、弱网等条件下明显劣化;轻微——小幅落后(1.1–1.5 倍)或体验瑕疵;待确认——现象存在,影响需后端或线上数据确认。

表 5-1问题清单(OPay)
编号严重程度问题复现条件与频率证据根因(已确认 / 推断)建议
F-01严重交易记录间歇性打不开;接口报错率高被 DNS 分配到问题 CDN 节点时必现;4G 4/12、3G 3/4 轮4.6已确认:Akamai 23.32.248.213 / .206、184.27.140.86 TLS 握手 0/30 有回应;客户端无重试、无缓存兜底;10-23 Infinix 上 wallet-living(话费、流量、Betting 接口)解析到 Akamai 2.20.13.133,6/6 次 TLS 握手无回应P0-1
F-02一般冷启动后首页内容出齐慢(6.40 vs 4.36 秒)每次冷启动;itel、Infinix 均复现4.3、4.10已确认:首页业务接口在启动后 3.2–4.5 秒才发出,前面先发 26–41 个非业务请求;Application.onCreate 791msP0-3
F-03一般接近断网时关键内容为空、无提示、几乎不发请求固定 2G 下必现4.5.2推断:关键数据无本地缓存;依据系统网络状态放弃请求P1-5
F-04一般后台压力下流量页 5.98 秒、收银台 2.37 秒App 在后台被回收后(低端机常态)4.4已确认:被回收后重新冷启动;流量页营销模块多、主线程工作量大(V1:10 秒内主线程运行 8.5 秒)P0-4、P0-6、P2-3
F-05一般转账页首帧是 PalmPay 的 3–4 倍每次打开;两台手机一致4.2、4.10已确认(V1 测试包追踪):页面创建时同步工作多(AA 页 onStart 384ms、布局 270ms)P0-5
F-06一般流量页、Betting 页、转银行页明显落后(1.6–2.1 倍)每次打开4.2已确认(V1):营销接口串行排队,数据到达时主线程长帧P0-4
F-07一般消息页明显落后(2.9 倍)每次打开;低端机明显4.2、4.10推断:RN 页面每次打开需初始化P1-1
F-08一般接口等待长尾(P90 约为 PalmPay 2.4 倍),请求轮次约 2 倍诊断轮普遍存在4.7推断:营销等域名服务端耗时高(V1:gonggong-marketing 400–600ms)、重复请求P1-2
F-09轻微首页滚动卡顿帧 16%(PalmPay 6–11%)itel 上复现;Infinix 无差别4.8推断:嵌套列表、图片解码在主线程P1-3
F-10轻微广告图按新宽度第一次请求时需 CDN 回源现场加工,首字节多约 0.24 秒(偶发 0.7–3.6 秒)每个"图片 × 宽度 × CDN 节点"的第一次请求,及缓存过期(4 小时)后的第一次请求;新素材上线、少见屏幕宽度时更常见附录 C已确认(实测):App 按控件像素宽请求 OBS 缩放的 WebP,下载量为原图的约 32%;手机实测已缓存首字节中位 192 ms,新宽度第一次 442 ms;App 常用宽度在 CDN 上已被线上流量缓存(7/7);kBox 图标未走缩放P1-4
F-11待确认设备安全配置接口冷启动仍调用 2 次、登录后调用 1 次每次冷启动与登录4.3测试包上每次返回 403;生产包状态码不可见,需后端确认待办
F-12待确认登录页打开 3.12 秒;重新登录需手机号 + 人脸 + 短信每次4.9登录页加载重;重新登录流程为安全设计,需产品、风控评估P2-1、P2-2
F-13轻微同一张广告图被重复上传为不同地址,720p 手机重复下载约 26 KB(1080p 约 39 KB)依次访问 AA、AC 等带广告页面时必现附录 C.1已确认(广告后台核对 + 实际下载):4 组共 11 个广告使用内容完全相同的图片,但各自上传成独立文件和地址,App 按地址(含宽度参数)分别下载和缓存;后台不记录、不校验图片大小与尺寸P1-6
F-14一般流量页、Betting 页每次打开下载一个约 235 KB / 135 KB 的未压缩接口回包每次打开;生产包诊断轮流量页 5/5、Betting 5/5(itel、Infinix)4.7、附录 C.3已确认(实测):生产包单次回包 234–242 KB(流量)、134–138 KB(Betting),是两页单轮流量为 PalmPay 2–3 倍的主因;测试包同类接口原文 229.7 / 131.7 KB,gzip 后传输只有 12.7 / 6.1 KB。页面要等它:流量页每个套餐的返现、Betting 的折后价都在回包收完后 0.1–0.2 秒才出现,流量页画面定格 4/4 轮在回包之后(Infinix 一轮回包下载 2.4 秒)。生产包未压缩的原因(未声明 gzip,或先加密后压缩无效)待后端确认P0-2

6 改进建议(按投入产出排序)

排序原则:影响面(每次启动 / 核心交易链路 > 二级页 > 低频页)× 与基准的差距 ÷ 实施成本。P0 建议本版本落地,P1 下个版本,P2 需产品或风控评审。预计收益为估计值,以改后复测为准。

表 6-1改进建议
编号对应问题方案负责方成本复测验收标准
P0-1F-01运维排查 4 个节点(含 10-23 新发现的 2.20.13.133),修好前从分配中摘掉,或把 wallet-transaction、wallet-ws、wallet-living、config-home、api 的 DNS 改为只返回 Cloudflare 别名;客户端 TLS 握手超时设 3–5 秒并换地址重试;交易记录失败时先显示缓存;网络错误上报域名、IP 和失败阶段运维、后端、客户端低诊断轮问题节点无回应为 0;交易记录 0 失败;业务接口报错率 ≤ 2%
P0-2F-14后端为这两个接口开启 gzip(若生产包对接口加密,改为先压缩再加密),并精简字段、按需分页;客户端确认请求声明 Accept-Encoding: gzip后端、客户端网络层低(待后端确认原因)抓包中两页单次回包 ≤ 20 KB;流量页单轮流量 ≤ 150 KB(与 PalmPay 持平);返现、折后价不再晚于页面其他内容
P0-3F-02首页业务接口最先发;Facebook SDK、AB 测试、埋点等延后到首页画出之后;首页首屏缓存优先(余额卡默认隐藏态、入口、上次数据先画);营销位后加载客户端首页、后端中itel 冷启动首页内容出齐 ≤ 4.5 秒(与 PalmPay 持平)
P0-4F-04、F-06二级页本地数据先画,营销模块首帧后懒加载并设超时,失败不影响主区域;营销请求合并客户端各业务低-中流量页无压力 ≤ 1.2 秒、有压力 ≤ 1.6 秒
P0-5F-05最近收款人查询、引导浮层、营销模块放到首帧之后;布局精简或异步加载客户端转账低转账页系统首帧 ≤ 0.3 秒
P0-6F-04点 Confirm 时预取支付信息,收银台复用连接(实测每次进收银台新建到 api 的加密连接),广告异步,去掉中转页,停止常驻动画;细化见第 9 章(P0-6 ①–⑥)客户端收银台、后端低-中收银台 ≤ 1.3 秒,有压力 ≤ 1.6 秒
P1-1F-07RN 引擎预热,或首屏改原生并用缓存先画客户端消息中itel 消息页 ≤ 0.8 秒
P1-2F-08按接口看服务端 P90 并治理;合并重复请求;配置类接口加缓存后端中诊断轮自家接口 P90 ≤ 300 ms
P1-3F-09共享复用池、预取、图片尺寸按控件裁剪客户端首页中首页滚动卡顿帧 ≤ 8%
P1-4F-10保留"按控件宽度请求 WebP":① 宽度分档(如 360 / 480 / 720 / 1080,向上取档,每张多约 10–20% 字节),减少缓存版本、提高命中;② 素材上线后按常用档位预热,或让 OBS 持久保存加工结果,首次加工不落在用户请求上;③ kBox 等仍下原图的入口改走同一个拼接方法客户端、运维、营销后台低新素材上线后各档位第一次请求即命中缓存;手机复测首字节与已缓存一致
P1-5F-03号码、运营商、金额档位、套餐、用户信息、最近交易本地缓存先显示;短超时 + 退避重试,不只凭系统网络状态放弃;明确的网络提示与重试按钮,网络恢复后自动收起客户端各业务中固定 2G 下话费页显示号码和档位,并有网络提示
P1-6F-13广告后台上传时按内容哈希去重,同一张图复用同一地址;登记文件大小与像素;可在上传时直接生成常用档位(与 P1-4 预热一起做);存量的 4 组重复图片合并为一个地址营销后台、运营低同图只有一个地址;重复下载降为 0
P2-1F-12退出后记住手机号;同设备短时间内重新登录降级验证;人脸比对与发短信并行产品、风控、后端中重新登录纯等待 ≤ 5 秒
P2-2F-12登录页精简,非必要模块延后客户端登录低-中登录页 ≤ 1 秒
P2-3F-04第三方 SDK 延后初始化、业务模块懒初始化客户端基础中有压力冷启动首帧 ≤ 1.7 秒

保持的优势:登录前内存最省(PSS 114 MB,竞品 151–169 MB);第三方域名最少;交易列表打开不慢于竞品;测试期间无 ANR 和崩溃。

7 残余风险与测试局限

表 7-1测试局限及对结论的影响
编号局限对结论的影响
L1只有 2 台 Android 手机(低端 2GB、中低端 4GB),无高端机和 iOS结论代表中低端 Android 体验;高端机上的差距可能更小
L2真机条件优于线上平均:App 在后台、4G 信号好、广告图片已在 App 本地缓存(诊断轮未出现图片下载)耗时为"较好情况",不能与线上 >3 秒占比直接对等
L3固定 2G 接近断网、3G 与 4G 一样快,未量化到"慢但能用"的网络OPay 在慢网下的耗时差距未量化
L4Moniepoint 未测 2G / 3G;冷启动终点为锁屏页Moniepoint 部分结论仅作参考
L5三家账号交易数据量不同交易列表仅作参考
L6竞品只测到转账页,未测完整转账链路转账收银台无法对比
L7重新登录每家 1 个样本,含人工操作仅作参考
L8生产包接口加密,只能看到域名,看不到接口路径与状态码接口层结论到域名粒度;403 等需后端确认

残余风险:在 P0-1 修复前,被 DNS 分配到问题节点的线上用户会连续约 30 分钟(DNS 结果有效期)打不开交易记录,影响面需靠客户端失败上报量化。

8 结论与后续计划

本轮测试达到测试目的:在可复现条件下量化了 OPay 与竞品在 12 类场景上的差距,定位了主要根因,并建立了可重复执行的对比基线。OPay 在页面速度上整体落后于 PalmPay(页面倍数中位 1.25–1.37),在可用性上存在 1 项严重问题(交易记录因 CDN 节点间歇性打不开),弱网降级处理落后;冷启动首帧、内存占用和稳定性不落后。

  • 后续计划 1:运维用北京时间 10-21 14:20–14:37、17:52–17:55、10-22 14:09–14:16 及上述 3 个 IP 查 Akamai 日志,确认节点问题并确认 DNS 两个别名的分配比例。
  • 后续计划 2:客户端网络请求失败时上报域名、连到的 IP、失败阶段(DNS / 建连 / TLS 握手 / 等响应)与耗时,用线上数据量化受影响用户。
  • 后续计划 3:后端按 App 版本统计设备安全配置接口的调用量与 403 比例。
  • 后续计划 4:P0 改完后,用同一台手机、同一套脚本复测,按第 6 章验收标准验收。
  • 后续计划 5:寻找信号弱但可连通的地点,三家同地同时段补测"慢但能用"的网络;如需高端机对照,可用 Mi 10 跑一批。
  • 后续计划 6:后端按日志确认流量页、Betting 页约 235 / 135 KB 回包对应的接口,以及生产包传输时未压缩的原因(F-14);改后用同一脚本冷缓存抓包复测。

9 收银台专题:链路拆解与改法

范围:话费、流量、本平台转账(AA)、转银行(AC)四个入口,从点击到收银台出现;不输入 PIN、不付款,支付提交与结果页不在范围内。数据:生产包真机录屏、系统页面事件与诊断轮抓包(itel、Infinix,10-21~10-23),测试包接口日志(itel,10-21),线上 Faster 埋点(9/16、8/22)。

一句话结论:网络好、手机空闲时,OPay 收银台 1.0–1.5 秒出现,和 PalmPay(1.36 秒)差不多;但它走的是一条很长的串行链路——先下单 → 中转页 → 收银台页 → 新建加密连接 → 拉广告 → 才请求支付信息,至少 3 次网络请求加 1 次建连排着队走。线上网络往返更慢、手机更忙时每一环都被放大,所以 AA、AC 收银台 57% 超过 3 秒,是全 App 慢 PV 最大的来源。改法核心:支付信息提前并行取、复用连接、广告不挡路、去掉中转页、先出骨架。

9.1 线上:收银台是慢 PV 最大的来源

表 9-1收银台完整展示 >3 秒 PV 占比与慢 PV 量(线上 Faster 埋点)
收银台Android >3 秒iOS >3 秒慢 PV(8/22)
转银行(AC)收银台57.2%24.0%约 598 万
本平台转账(AA)收银台56.6%21.5%约 572 万
占比为 9/16 按有效 PV(完整展示:加载完成事件距进入页面超过 3 秒)。7/27 单日 AC 收银台一项占全部慢 PV 的 42.6%。数据引自《Faster 核心场景提速方案》,未做新的线上统计。
  • Android 是 iOS 的 2.4–2.6 倍:同一套接口、同一个后端,差在 Android 端,与机型性能、后台回收后重新冷启动有关 推断,9.4 有真机实测。
  • 体量最大:AA、AC 收银台是转账必经页面,PV 大、占比高,慢 PV 绝对量最大;改这一处的收益在所有页面里最高。

9.2 真机:网络好、手机空闲时与 PalmPay 差距不大

表 9-2从点击到收银台出现(视觉完成,秒;中位数(最小–最大),n;生产包,4G,无后台压力)
场景OPayPalmPayMoniepointOPay ÷ PalmPay
itel:话费 选金额 → 收银台1.50(1.24–2.35),n=101.36(1.20–1.53),n=70.35 ¹1.11 落后
itel:流量 选套餐 → 收银台1.37(1.24–1.65),n=101.33(1.26–1.44),n=70.27 ¹1.03 持平
itel:AA 核对窗口 Continue → 收银台1.03(0.83–5.96),n=10未测 ²未测 ²—
itel:AC 核对窗口 Continue → 收银台0.99(0.84–1.20),n=10未测 ²未测 ²—
Infinix:话费 选金额 → 收银台1.88,n=51.22,n=4—1.54 明显落后
Infinix:AA / AC → 收银台0.81 / 0.84,n=5未测 ²未测 ²—
¹ Moniepoint 的确认单是同一页面内的底部弹层,且该页面禁止录屏(画面为黑),仅作参考。² 竞品只测到转账页,没有输入金额进入收银台。收银台页系统首帧 OPay 0.26 秒、PalmPay 0.31 秒,OPay 不慢——慢在首帧之后等接口。AA 有 1 轮 5.96 秒,长尾明显。
图 9-1话费:选金额 → 收银台,OPay 与 PalmPay 同一时刻的画面(itel,4G,无后台压力;各取与中位数最接近的一轮)点击图片放大
话费:选金额 → 收银台,OPay 与 PalmPay 同一时刻的画面(itel,4G,无后台压力;各取与中位数最接近的一轮)
橙框为点 ₦100 档位。OPay 0.3–1.0 秒一直停在话费页、号码行上转圈,1.60 秒收银台整块弹出;PalmPay 在话费页显示加载图标,1.36 秒弹出支付底板。两家都是"原页面等待 → 整块弹出",网络好时 OPay 只晚约 0.2 秒。手机号、余额、返现余额已打码。
图 9-2本平台转账(AA)、转银行(AC):核对窗口 Continue → 收银台(OPay,itel,4G)点击图片放大
本平台转账(AA)、转银行(AC):核对窗口 Continue → 收银台(OPay,itel,4G)
点 Continue 后回到金额页并转圈,AA 1.08 秒、AC 1.01 秒收银台弹出。转账的下单接口在上一步(金额页 Confirm)已调用,所以这一段比话费短。收款人姓名、账号、余额已打码。

9.3 一次打开收银台,发生了什么

9.3.1 生产包:页面事件(itel,4G,各 10 轮中位数,从点击算起)

表 9-3收银台链路上的页面事件(秒)
节点话费流量AAAC等级
中转页 PaymentActivity 启动0.310.330.050.07实测
收银台页 CashierActivity 启动0.540.550.230.23实测
收银台页首帧0.740.780.390.42实测
收银台出现(视觉完成)1.501.371.030.99实测
首帧之后还要等0.760.590.640.57实测
来源:系统日志 wm_create/restart_activity、wm_activity_launch_time,与录屏同一时钟(已校正电脑−手机时钟差)。话费、流量在点击后 0.3 秒才启动中转页,这段时间在等下单接口(见 9.3.2)。收银台页首帧画出后画面上仍看不到它,内容要等支付信息 推断:页面背景透明。

9.3.2 测试包:接口时序(可看到接口名;测试包整体偏慢,只看先后顺序)

表 9-4话费:选金额 → 收银台(itel 测试包 10-21 05:44 第 3 轮,从点击算起,秒)
时刻事件说明
0.12 → 0.38下单 wallet-living …/airtime/create-pre-order(249 ms)等它返回才离开话费页
0.71启动中转页 PaymentActivity下单返回后又过 0.33 秒
0.97 → 1.26广告 config-home …/v2/ad/list(283 ms)中转页发起
1.17启动收银台页 CashierActivity
1.48 → 2.07支付信息 api …/cashier-service/cashier/v1/get_payment_info(581 ms)广告返回后才发
1.48 → 1.76广告 ad/list 第 2 次(266 ms)同一次打开调了两次
AA(itel 测试包 10-21 05:58 第 2 轮,从核对窗口 Continue 算起)同样:广告 4.57→4.87 秒返回后,支付信息 5.05 秒才发、5.54 秒返回;广告也调了两次。同时记录到“第一次广告返回”和“支付信息发出”的 8 轮(话费 4、AA 2、AC 2)全部是广告返回后才发支付信息 实测;流量等其余轮次日志缺了其中一个接口,无法判断。

9.3.3 生产包抓包:进收银台时要先新建加密连接

表 9-5诊断轮抓包:收银台这一步的关键请求(从点击算起,秒)
轮次新建到 api.opayweb.com 的连接支付信息请求 发 → 收完(回包字节)收银台出现
itel 10-21 14:17 话费2.152.36 → 2.68(9,563 B)3.00
itel 10-21 17:50 话费1.13(TCP 232 ms)1.96 → 2.72(9,700 B)3.26
itel 10-22 14:09 话费0.901.54 → 2.00(10,605 B)2.42
Infinix 10-22 19:58 话费1.071.48 → 1.91(8,136 B)1.99
itel 10-21 17:52 AA0.470.69 → 0.95(7,199 B)0.91
Infinix 10-22 20:01 AA0.430.91 → 1.11(7,174 B)1.24
itel 10-21 17:53 AC0.570.74 → 1.11(8,028 B)1.50
实测 7/7 轮进收银台时都新建了到 api.opayweb.com 的 TCP + TLS 连接,并且同一秒内 config-home 也新建了连接——尽管它前一秒还在用已有连接 → 收银台模块很可能用的是独立的网络连接池 推断。支付信息是最后到达的回包,收银台在它收完后 0.05–0.4 秒弹出。支付信息回包 7–10.6 KB,测试包同一接口原文 8.9 KB、gzip 后 2.0 KB → 生产包未压缩(与 F-14 同类,原因待后端确认)。诊断轮开着抓包,耗时比普通轮长约 1 秒。
图 9-3OPay 话费收银台逐帧(与图 9-1 同一轮)与收银台上的动画区点击图片放大
OPay 话费收银台逐帧(与图 9-1 同一轮)与收银台上的动画区
0.30–1.20 秒画面几乎不变,只有号码行上转圈:这段时间依次在下单、启动中转页和收银台页、新建连接、拉广告、取支付信息;1.60 秒支付信息到了,收银台才整块弹出,此前没有任何骨架。最右是同一轮收银台出现 3 秒后的动画区:支付方式一栏仍有转圈(红色),与测试包"收银台常驻动画、97% 的帧超过 16 毫秒"一致。手机号、余额已打码。

9.4 为什么线上慢得多:放大因素

表 9-6话费收银台在不同条件下(视觉完成,秒;itel 未注明时)
条件OPayPalmPay说明
4G、无后台压力(基准)1.501.36差 1.11 倍
后台有压力(先打开 7 个常用 App)2.37(1.58 倍)1.57(1.16 倍)OPay 每轮都已被系统回收,两层页面和接口都要重来
流量收银台、后台有压力2.42(1.77 倍)1.57(1.18 倍)同上
Infinix 4GB 手机1.881.22差 1.54 倍
固定 3G(同地同时段)1.50(1.48–2.43)1.33差 1.1 倍
固定 2G进不去(0/6)进不去(0/6)两家都不可用;OPay 话费页号码、金额档位就不显示
4G 链路出错AA → 收银台 1/12 轮 30 秒未出现—见 4.6
数据来自本报告 4.4、4.5、4.10 节。
  • 串行越长,网络越慢放大越多 估算:收银台关键路径上至少有 3 次排队的请求(下单 → 广告 → 支付信息)和 1 次新建连接(TCP 1 次往返 + TLS 1 次往返),合计约 5 次网络往返。真机诊断轮建连实测往返 60–230 ms;线上移动网络往返更高时,每多 100 ms 往返,收银台约慢 0.5 秒。PalmPay 在原页面等待后直接弹出底板,链路短得多 推断(PalmPay 部分请求走 QUIC,抓包看不清请求边界)。
  • 手机越忙放大越多 实测:后台有压力时 OPay 收银台慢 1.58 倍,PalmPay 只慢 1.16 倍;Android 线上占比是 iOS 的 2.4–2.6 倍,与此一致。
  • 真机是"最好情况":App 在前台、4G 信号好、连接刚建好,线上用户的条件只会更差。

9.5 收银台根因清单

表 9-7收银台慢的根因(按对时间的影响排序)
编号根因证据等级
C1支付信息要等广告:get_payment_info 在 ad/list 返回后才发测试包时序(9.3.2):能判断的 8 轮全部如此;生产包抓包中支付信息也总是最后发出实测
C2进收银台时新建加密连接(收银台很可能用独立连接池)诊断轮 7/7 新建到 api.opayweb.com 的连接,config-home 同时重建(9.3.3)实测,连接池为推断
C3下单接口挡在跳转前:create-pre-order 返回后才启动中转页测试包 0.12→0.38 下单、0.71 启动中转页;生产包点击后 0.31 秒才启动中转页实测
C4多一层中转页 PaymentActivity生产包中转页 → 收银台页约 0.2 秒;测试包 0.4–0.6 秒实测
C5广告一次打开调两次测试包 24 轮中 18 轮记录到 2 次 ad/list(其余可能是日志缺失)实测
C6收银台出来前没有任何骨架,用户在原页面看转圈录屏(图 9-1、图 9-3):首帧 0.74 秒已画但看不到,1.5 秒整块弹出实测
C7常驻转圈动画收银台出现 3 秒后仍在转圈(图 9-3);测试包 97% 帧超过 16 毫秒实测
C8支付信息回包未压缩生产包 7–10.6 KB,测试包 gzip 后 2.0 KB实测,原因待核实
C9后台被回收后放大更多加压 1.58 倍 vs PalmPay 1.16 倍实测

9.6 改法、预期收益与验收

下表是第 6 章 P0-6(收银台预取) 的细化,编号与《Faster 核心场景提速方案》统一;⑥ 与 P0-2(接口压缩)一起做。预期收益为估算,以改后同一套脚本复测为准。

表 9-8改法(P0-6 细化)
编号做什么解决负责方成本预期收益
P0-6 ①点金额 / Confirm 时就并行发起支付信息(与下单并行),或让下单接口直接返回收银台所需信息C1、C3客户端收银台、后端中少 1 次排队请求:真机约 0.3–0.6 秒,线上更多 估算
P0-6 ②收银台复用主 App 的网络连接池;进入话费、流量、转账页时预热到 api.opayweb.com 的连接C2客户端基础低少 1 次建连,约 2 次往返 估算
P0-6 ③广告异步:ad/list 不挡支付信息,且一次打开只调 1 次C1、C5客户端收银台低约 0.2–0.3 秒 估算
P0-6 ④去掉中转页 PaymentActivity,或不带转场直接进收银台C4客户端收银台低-中约 0.2–0.5 秒 估算
P0-6 ⑤点击后立即弹出收银台骨架(金额、商品名本地已有),支付方式一栏加载中占位;停掉常驻转圈C6、C7客户端收银台低用户立刻看到收银台;减少主线程绘制负担
P0-6 ⑥支付信息回包压缩(同 P0-2)C8后端低7–10 KB → 约 2 KB
表 9-9收银台验收标准(同一台手机、同一套脚本复测)
项目现状目标
真机话费收银台(itel,4G)1.50 秒≤ 1.0 秒(PalmPay 1.36 秒)
真机 AA / AC 收银台1.03 / 0.99 秒≤ 0.8 秒
后台有压力时话费收银台2.37 秒≤ 1.6 秒
抓包每次新建到 api 的连接;支付信息在广告之后不再新建连接;支付信息与下单并行
线上 AA / AC 收银台 >3 秒占比(Android)56.6% / 57.2%相对下降 50%(建议值)

9.7 收银台部分的局限

  • 只测到收银台出现,不输入 PIN、不付款;支付提交、结果页(含支付结果页广告)未测。
  • 竞品只测到转账页,转账收银台无法对比;Moniepoint 确认单禁止录屏,仅作参考。
  • 生产包没有接口日志,接口名与先后顺序来自测试包;生产包只能看到域名、字节和时间(抓包不解密)。
  • 诊断轮开着抓包,耗时比普通轮长约 1 秒,只用于看先后顺序。

附录

A 术语

表 A-1术语表
术语说明
AA / ACAA:OPay 内部账户之间转账(本平台转账);AC:转到其他银行或钱包(转银行)
视觉完成(VC)见 2.1 节
系统首帧(TTID)Time To Initial Display,新页面第一帧绘制完成的时间
冷启动App 进程不存在时启动;与之相对,温启动为进程在但页面被销毁,热启动为切回前台
后台有压力见 1.6 节:每轮前依次打开 7 个常用 App
诊断轮开启抓包的测试轮,用于接口与网络分析,不计入耗时统计
PSSProportional Set Size,按比例分摊共享内存后的实际占用内存
CDN / Akamai / Cloudflare内容分发网络;Akamai、Cloudflare 为 OPay 使用的两家 CDN 服务商
TLS 握手建立加密连接的过程;服务器不回应则请求无法进行
DNS / TTL域名解析;TTL 为解析结果的有效期
EDGE / HSPA+2G / 3G 移动网络制式
RN / FlutterReact Native、Flutter:两种跨平台界面框架
P90第 90 百分位数:90% 的样本不超过该值

B 数据与复现

表 B-1数据位置(相对于 临时/自动化测试_20261020/)
内容位置
按网络量化总表(itel,校正后)runs/三方对比_按网络量化_20261023.md
Infinix 批次与机型对照runs/三方对比_20261022_184641.md、runs/三方对比_按网络量化_infinix_20261023.md、runs/机型对比_itel_infinix_20261023.md
网络报错统计(页面 × 域名 × 比例)runs/网络报错统计_20261022.md / .csv
两批明细报告runs/三方对比_20261021_131645.md、runs/三方对比_20261021_164405.md
登录前 / 重新登录runs/登录前对比_20261021_合并.md、runs/三方登录对比_20261021.md
方案与执行注意事项竞品对比方案_V1.md(第 7、8 节)
测试记录登记测试记录.csv
收银台专题原稿(本报告第 9 章)输出/OPay_收银台慢_真机链路拆解与改法_20261026_V1.html;脚本 三方对比报告_20261022/tools/cashier_chain.py、make_cashier_figs.py
广告图片实际加载核对(26 个,含证据等级)runs/广告素材实际加载_20261023.csv
生产包图片与接口核实(Infinix 冷缓存抓包、首次加工测速)runs/图片与接口下载核实_生产包_infinix_20261023.md
上一份报告(OPay 根因,测试包)输出/OPay_真机实测_慢与ANR根因及ROI方案_20261021_V1.html
python compare.py --device itel                                   # 三方对比(按 App 分块,含诊断轮)
python compare.py --device itel --blocks opay:L,palmpay:L,moniepoint:L,startup_loaded --attended   # 后台有压力
python compare_report.py runs/compare_*.json                     # 单批报告
python cross_env.py runs/compare_A.json runs/compare_B.json      # 按实际网络类型量化
python cross_device.py runs/compare_itel_*.json runs/compare_infinix_*.json   # 机型对照
python net_errors.py runs/compare_A.json runs/compare_B.json     # 网络报错统计

C 广告图片明细与实际下载方式(测试包日志 + 生产包实测)

证据等级:实测 客户端日志、抓包字节或画面直接观测;推断 由实测数据推出、未逐张观测;待核实 尚无客户端证据。2026-10-23 更正:此前版本用后台原图计算大小,写成"原图直出、未压缩、下载量与设备无关、重复下载约 135 KB",与客户端实际行为不符,本附录已按下述实测改写。

表 C-1广告图片总体情况
指标结果证据
素材数量26 个;后台原图 PNG 24、JPEG 2,合计 687 KB实测
App 怎么请求在原图地址后追加 ?x-image-process=image/resize,w_<控件像素宽>/format,webp,由华为云 OBS 现场缩放并转 WebP;测试包 17 个有日志的素材全部如此,kBox 图标直接下原图实测 测试包;生产包字节吻合
实际下载量有实际请求的 23 个:原图合计 655.7 KB → 720p 手机实际 207.3 KB(32%);1080p 手机估算 260.0 KB(40%)实测 720p;1080p 为估算
与设备的关系随屏幕变化:宽度参数取控件像素宽,如 AA banner 在 720p 手机请求 w_656(16.4 KB),1080p 手机 w_984(27.3 KB);同一张图在不同控件宽度(608 / 656 / 720)下也是不同的缓存版本实测
CDN 与缓存Cloudflare + OBS 源站;Cloudflare 按含参数的完整地址分别缓存,Cache-Control: public, max-age=14400(4 小时);App 另有本地图片缓存。Cloudflare 自带的 Polish、Image Resizing 未开启,对结论无影响实测
第一次加工的代价手机实测(见 C.2):已缓存首字节中位 192 ms,新宽度第一次 442 ms,成对比较多 0.24 秒(中位),21 次中 3 次多 0.7–3.6 秒实测
App 常用宽度的缓存状态7 个素材按 App 实际宽度请求,CDN 节点上 7/7 已缓存(age 1 分钟–1.7 小时):常用宽度由线上流量保持在缓存里,第一次加工主要落在新素材上线后、缓存过期后和少见屏幕宽度上实测 + 推断
表 C-2各页面广告图片:原图与实际下载(KB)
页面素材数原图合计App 实际请求720p 实际下载1080p 估算说明
Rewards5267.7w_720 WebP88.094.1
流量10216.9w_60、w_80、w_608、w_656 WebP64.985.0顶部 5 张轮播按生产包控件宽 608 px(宽度为推断);支付结果页 1 张未触达
转银行(AC)387.3w_80、w_656 WebP24.938.0
本平台转账(AA)386.8w_80、w_656 WebP24.838.0
话费114.4———支付结果页,需付款才能进入,未触达
Betting14.5w_80 WebP0.80.8
Wealth13.8w_40 WebP0.70.9
首页13.2原图3.23.2kBox 图标,未走缩放
多个页面12.2———测试包未加载
表 C-3生产包冷缓存实测:各页面图片域名下行(Infinix 8.18.2.498,10-23,清空 App 缓存后依次打开,每页约 12 秒)
页面图片域名下行 KB其中广告图(按实际请求)KB这些广告图的原图 KB判定
首页76.73.23.2含首屏图标;冷启动时并行建了 5 条 TLS 连接,之后只用 1 条,另外 4 条各握手一次(共约 24 KB)后闲置 实测
本平台转账(AA)52.224.886.8实测 图片域名合计小于单张 AA banner 原图(67.9 KB),不可能下载原图
转银行(AC)55.824.987.3实测 同上
流量80.864.9202.5实测 顶部 5 张轮播在画面中(可辨认 4304),控件宽 608 px;一次回包 13,253 B = 4110 的 608 宽版本 12,864 B + 帧开销;逐张宽度为推断
Betting9.90.84.5其余为平台图标
Rewards40.4—267.712 秒内只加载首屏;5 张 banner 全部加载时为 88.0 KB(测试包)
图片域名为 files.opayweb.com,下行含 HTTP/2 与 TLS 帧开销。流量页顶部位置:itel 测试包(10-21)为空白、itel 生产包当时显示三重礼组件、Infinix 生产包(10-23)显示这 5 张轮播,展示内容随账号与时间变化。
图 C-1流量页顶部轮播(Infinix 生产包 8.18.2.498,10-23 冷缓存实测)点击图片放大
流量页顶部轮播(Infinix 生产包 8.18.2.498,10-23 冷缓存实测)
顶部为 5 张轮播,画面中是 4304("Claim 8 Discounts…");控件宽 608 px,按 608 宽 WebP 下载(见上表)。手机号已打码。
表 C-4广告图片明细(26 个,按原图大小降序)
序号页面广告位 code(adpCode)广告 / 内容 ID名称原图格式原图像素原图 KBApp 实际请求720p 实际下载 KB1080p 估算 KB证据投放期(UTC)文件名
1RewardsREWARDS_REFERBANNER5208—PNG720×32075.2w_720 WebP19.319.3实测·测试包日志2026-08-17 至 2026-12-1588754226bb2e40a6ad6379eba5e8cdf1.png
2转银行(AC)ng_ac_bottom_banner_pic5417—PNG984×27067.9w_656 WebP16.427.3实测·测试包日志2026-10-01 至 2026-10-31e15e2e9f927249f28ccbdced3bdd9c7d.png
3本平台转账(AA)ng_aa_transfer_banner_pic5419—PNG984×27067.9w_656 WebP16.427.3实测·测试包日志2026-10-01 至 2026-10-31fafdf5b175f543888401d690745b9aa6.png
4RewardsREWARDS_REFERBANNER4886—PNG720×32063.6w_720 WebP20.920.9实测·测试包日志2026-05-21 至 2026-11-2185f2933b515d4c04b2120ca8e8508ed3.png
5RewardsREWARDS_REFERBANNER5277—PNG720×32051.9w_720 WebP18.918.9实测·测试包日志2026-09-02 至 2026-12-0264f052a912ff44c0ad622386506d94bf.png
6流量ng_mobile_data_top_banner5205—PNG800×20050.3w_608 WebP11.115.8实测·生产包画面与字节(宽度推断)2026-08-17 至 2026-12-153f5485c232984f67ac576608fa9879ec.png
7RewardsREWARDS_REFERBANNER5426—PNG720×32043.4w_720 WebP15.815.8实测·测试包日志2026-10-01 至 2026-10-31196f5c49ce23480cbf3a0b3873c45c74.png
8流量ng_mobile_data_top_banner4110—JPEG800×20038.6w_608 WebP12.617.3实测·生产包画面与字节(宽度推断)2025-12-04 至 2027-03-31ed1329bb911cef8f28f0af4e339bce5e.jpg
9RewardsREWARDS_REFERBANNER3921—PNG1080×48033.7w_720 WebP13.119.3实测·测试包日志2025-12-24 至 2026-12-315c9ad7c65cfa44a6805bb89f6eff15e5.png
10流量ng_data_middle_banner1441—PNG591×9428.5w_656 WebP6.96.9实测·测试包日志2026-04-09 至 2027-12-31da6d19f1d234662bddad0d050abbe176.PNG
11流量ng_mobile_data_top_banner4890—PNG800×20024.9w_608 WebP11.416.3实测·生产包画面与字节(宽度推断)2026-05-21 至 2026-11-212ebdae6ada574b1bb341a42aaa38c426.png
12流量ng_mobile_data_top_banner3185—JPEG800×20023.3w_608 WebP6.99.4实测·生产包画面与字节(宽度推断)2023-04-18 至 2026-12-12408ee3b08d64483d842287e6978e7285.jpg
13话费pay_succ_rid_airtime4307—PNG800×20014.4未触达——待核实·支付结果页未触达2026-01-07 至 2026-12-31f2b531c686bf4c4cacd7de1f9dfd817c.png
14流量pay_succ_rid_data4308—PNG800×20014.4未触达——待核实·支付结果页未触达2026-01-07 至 2026-12-3182b963ab090a4c35bb8258d1e1cd362d.png
15流量ng_mobile_data_top_banner4304—PNG800×20014.4w_608 WebP7.29.8实测·生产包画面与字节(宽度推断)2026-01-07 至 2026-12-31e2b97266c0494f66aedccd287fdae2fa.png
16转银行(AC)ng_ac_bottom_banner_pic4316—PNG800×20014.4w_656 WebP7.79.8实测·测试包日志2026-01-07 至 2026-12-31184dc463f658419385f90f63e31ad7a7.png
17本平台转账(AA)ng_aa_transfer_banner_pic4301—PNG800×20014.4w_656 WebP7.79.8实测·测试包日志2026-01-07 至 2026-12-31a637bbfd455348e8b9f6163ba27e362f.png
18流量ng_data_middle_banner5025—PNG656×10411.4w_656 WebP6.76.7实测·测试包日志2026-09-20 至 2026-12-31d13bddfa9b0f46faa25acf9698ba4c0c.png
19流量ng_mobile_bottom_banner158USSD enquiryPNG160×1606.0w_60 WebP1.42.0实测·测试包日志2024-07-31 至 2026-12-31020e4b5170f5f1b266d80dbc9c7df8fa.png
20流量ng_banner_data_more3902Super Voucher PackagePNG80×814.9w_80 WebP0.80.8实测·测试包日志2025-12-24 至 2026-12-3137b56f579390e32596cdc826cb52142e.png
21转银行(AC)ng_banner_ac_more3900Super Voucher PackagePNG80×814.9w_80 WebP0.80.8实测·测试包日志2025-12-24 至 2026-12-311739d1d1f4d38f67bfc0f71bddbb56ca.png
22本平台转账(AA)ng_banner_aa_more3899Super Voucher PackagePNG80×814.5w_80 WebP0.80.8实测·测试包日志2025-12-24 至 2026-12-3140a78c7a785804f958bf3bd31cc592c5.png
23Bettingng_banner_betting_more3903Super Voucher PackagePNG80×814.5w_80 WebP0.80.8实测·测试包日志2025-12-24 至 2026-12-31cefb52a9ca85f0530c1452cb8b7e3e6d.png
24Wealth—widgetId=270Your Exclusive Rewards!PNG48×483.8w_40 WebP0.70.9实测·测试包日志—Balance_871.png
25首页—359金融服务_理财SafeBox自动转任务_0610PNG40×403.2原图3.23.2实测·测试包日志(原图)—Gift-常规_182.png
26多个页面(AA、AC、流量、首页、消息、交易记录)ng_aa_transfer_normal_banner271Transfer money to your contacts for freePNG64×642.2未见加载——待核实·测试包未加载2022-07-04 至 2028-07-04d1fa8b7c60cf3dc64db8d234fe65b641.png
来源:广告位 code、广告 ID 来自广告接口 config-home.opayweb.com/v2/ad/list(data.ads[].adpCode、data.ads[].ad[].id、image_url);wealth 页 1 项来自营销任务接口(data.taskList[].taskIcon),首页 1 项来自 kBox 接口(data.kBox.iconUrl),二者为内容 ID。"App 实际请求"与"720p 实际下载"取自测试包图片日志(Glide 缓存键即请求地址,记录字节数);流量页顶部 5 张按生产包控件宽 608 px 用同一地址请求得到字节数。"1080p 估算":宽度参数 × 1.5 后用同一地址实际请求得到字节数;超过原图宽度时字节与原宽版本相同,未见放大。

完整字段见 runs/广告素材清单_itel_20261021_053436.csv(后台原图)与 runs/广告素材实际加载_20261023.csv(实际请求、下载量与证据等级)。第 4 章诊断轮中广告图片已在 App 本地缓存、未出现图片下载,耗时不含图片下载。

C.1 广告后台核对(2026-10-23,同日按实际下载更正)

在营销后台"广告素材管理"中按广告 ID(后台字段 adInfoId)逐个查询上表 24 个广告(另 2 项为营销任务与 kBox 的内容素材,不在广告后台),只读查询,未做任何修改。核对内容与结论:

表 C-5广告后台核对结论
核对项方法结论
后台上传的图片与前端加载的是否同一文件比对后台登记的图片地址(imageUrl)与 App 实际请求地址(测试包图片日志、生产包抓包)源文件相同(24/24 地址路径一致),但 App 不下载原图:请求时追加缩放参数,由 OBS 现场缩放并转 WebP(更正:此前写"前端加载的就是原图、中间没有转码或缩放"有误)
后台是否登记图片大小与尺寸查看素材记录的全部字段后台只存图片地址,不记录也不校验文件大小、像素和格式
是否按设备下发不同图片查看暗黑模式图(darkImageUrl)、多样化图片(diverseImgUrl)等字段后台 24 个广告均未配置;但 App 按控件像素宽请求,不同屏幕的手机拿到不同宽度的版本(如 AA banner:720p 手机 16.4 KB,1080p 手机 27.3 KB)
CDN 是否按请求头返回不同大小用 4 组请求头(Android App、Android 浏览器、iPhone、无 WebP 声明)各下载一次全部原图地址通过 同一地址在 4 组请求头下返回字节相同,CDN 不按请求头变化;设备间的差异来自地址里的宽度参数(更正:此前写"下载量与设备无关"有误)
是否存在重复上传比对文件内容哈希不通过 4 组共 11 个广告的图片内容完全相同,却各自是独立文件和地址(见下表)
表 C-6内容相同但地址不同的素材(App 按地址与宽度分别下载、分别缓存)
组广告 ID后台广告位原图App 实际下载(720p / 1080p)重复下载量(720p / 1080p)
A5417、5419AC、AA 转账页顶部 banner67.9 KB16.4 / 27.3 KB(w_656 / w_984)16.4 / 27.3 KB
B4307、4308、4304、4316、4301话费、流量支付结果页,流量页顶部,AC、AA 转账页顶部14.4 KBAA、AC:7.7 / 9.8 KB(w_656);流量页顶部:7.2 / 9.8 KB(w_608,宽度不同本来就是另一份缓存);支付结果页未触达7.7 / 9.8 KB
C3902、3900流量页、AC 页底部 more4.9 KB0.8 / 0.8 KB(w_80)0.8 / 0.8 KB
D3899、3903AA 页、Betting 页底部 more4.5 KB0.8 / 0.8 KB(w_80)0.8 / 0.8 KB
合计11 个广告25.7 / 38.8 KB(此前按原图算的 135 KB 作废)
重复下载量 = 同组、同宽度的广告数减 1,乘以实际下载大小,即用户依次访问这些页面时多下载的量;合并为同一地址后,第二次起直接命中缓存。核对明细见 runs/广告素材后台核对_20261023.csv。

C.2 第一次加工 vs 已缓存:手机实测(2026-10-23)

表 C-7图片请求首字节时间(ms);Infinix 走 Airtel NG 数据网络,Cloudflare 判定位置 NG、节点 CDG(巴黎)
请求次数CDN 状态首字节中位范围
App 实际宽度(608 / 656 / 720)第一次请求7HIT 7/7(age 1 分钟–1.7 小时)194188–201
新宽度第 1 次(现场加工)21MISS 18、EXPIRED 3442409–3,832
新宽度第 2、3 次42HIT 42/42192186–261
原图14HIT 14/14194188–206
成对比较(同一地址第 1 次减第 2 次):中位多 242 ms(n=21),18 次在 214–315 ms,3 次为 679、757、3,641 ms。已缓存时首字节约等于网络往返(ping 194 ms),CDN 处理几乎不耗时;原图同样已缓存,首字节相同但体积是缩放版的 3–4 倍。测法:手机 Chrome 打开 files.opayweb.com 同源页面,经 adb 远程调试逐个 fetch(cache: no-store),读 cf-cache-status 与 Resource Timing;7 个素材 × 3 个随机新宽度。往返时间受这台手机的网络影响,"第一次减已缓存"的差值是 CDN 回源与加工耗时,不受影响。

C.3 大接口回包与页面完成时间(生产包诊断轮,逐帧核对)

表 C-8页面完成时间与大回包到达时间(秒,从点击算起)
轮次页面大回包 首字节 → 收完视觉完成首字节到达前与最终画面的差异回包后出现的内容(逐帧)
itel 10-21 14:19流量0.85 → 1.792.7328.9%—
itel 10-21 17:51流量1.90 → 2.884.1329.6%套餐列表连同返现在回包之后出现(约 4.1 秒,三重礼组件 3.4 秒先出)
itel 10-22 14:10流量1.15 → 1.723.0227.6%—
Infinix 10-22 19:59流量2.17 → 4.534.7124.5%套餐列表 2.0 秒已出(无返现);回包收完后每个套餐出现"₦0.50 Cashback"等返现,随即定格
itel 10-21 14:25Betting0.81 → 1.262.4617.1%—
itel 10-21 17:56Betting1.44 → 2.093.015.7%—
itel 10-22 14:15Betting1.26 → 1.742.715.8%金额格子 1.2 秒已出(无折后价);回包收完后 0.1 秒出现"Pay ₦90"等折后价与推荐活动;定格由 2.6 秒的 Hot Offers 横条决定
Infinix 10-22 20:05Betting0.67 → 1.011.995.6%—
实测 时间均换算到电脑时钟并校正时钟差,与第 4 章视觉完成同一算法;诊断轮开着抓包,耗时比普通轮略长,但先后关系不受影响。结论:流量页 4/4 轮画面定格都在大回包收完之后;返现(流量)、折后价(Betting)要等回包才显示,套餐列表、金额格子等核心内容不一定等它。回包下得慢时,完整展示整体推后(Infinix 10-22 一轮下载 2.4 秒)。测试包里该接口经 gzip 只有十几 KB、返回很快,无法反映这一影响。
图 C-2大接口回包前后的画面(生产包诊断轮,逐帧)点击图片放大
大接口回包前后的画面(生产包诊断轮,逐帧)
上:Infinix 10-22 流量页,2.03 秒套餐列表已出但没有返现,回包 4.53 秒收完后每个套餐出现"₦0.50 Cashback"等返现;下:itel 10-22 Betting 页,1.20 秒金额格子已出但没有折后价,回包 1.74 秒收完后出现"Pay ₦90"等折后价与推荐活动。手机号已打码。

另见 F-14:同一次核实中发现,流量页、Betting 页每次打开都有一个约 235 KB / 135 KB 的接口回包(生产包 5/5 轮),测试包同类接口 gzip 后只有 12.7 / 6.1 KB;这两页单轮流量偏大的主因是它,而不是广告图片。

D CDN 与 DNS 分配机制

受影响域名在 OPay 的 DNS 中各配置两个别名:*.edgesuite.net(Akamai)和 *.cdn.cloudflare.net(Cloudflare)。手机每次解析域名时,DNS 从两个别名中选一个返回。10-21 两批诊断轮中可看出分配结果的解析共 24 次:wallet-ws 分到 Akamai 9 次、Cloudflare 7 次;wallet-transaction 各 4 次。

  • 分配接近随机,约各占一半,几分钟内即会切换,看不出按地区或用户固定分配;具体比例可在 opayweb.com 的 DNS 后台查看。
  • 对单个用户在一段时间内固定:DNS 结果有效期约 30 分钟,被分到问题节点的用户会连续约半小时打不开交易记录,之后可能恢复,这是"时好时坏、难以复现"的原因。
  • 只有少数 Akamai 节点有问题:23.32.248.206、23.32.248.213、184.27.140.86,以及 10-23 在 wallet-living 上新发现的 2.20.13.133;分到其他 Akamai 节点(如 23.32.248.215)时正常。
  • 判断方式:IP 为 23.32.x.x、184.27.x.x 的是 Akamai,104.16.x.x、104.17.x.x 的是 Cloudflare。

E 修订记录

表 E-1修订记录
版本日期主要变更
V12026-10-22首版:itel 4G 两批三方对比、后台压力、EDGE 偶发数据
V22026-10-22补充"后台有压力"的定义与实测效果、设备安全配置接口核查、广告 ID 与素材表
V32026-10-22新增固定 2G 测试、CDN 与 DNS 分配机制、生产包冷启动与登录的安全配置接口核查
V42026-10-22新增固定 3G 同地同时段对比、网络报错统计(页面层与接口层)
V52026-10-23视觉完成加入电脑−手机时钟差校正并全部重算;冷启动首页改按"内容出齐"计;新增 Infinix 机型对照
V62026-10-23按专业测试报告结构重排:报告信息表、指标定义与统计口径、判定规则与结果判定总表、执行统计与偏差记录、问题清单(含严重程度)、残余风险与局限、术语表;数据与 V5 相同。同日补充:附录 C 广告素材明细(26 个,含广告位 code 与广告 ID)与广告后台核对,新增问题 F-13、建议 P1-6
V6(更正)2026-10-23真机核实后更正:App 请求 OBS 按控件宽度缩放的 WebP,并非原图(原"未压缩、下载量与设备无关、重复下载 135 KB"作废);F-10、F-13、P1-4、P1-6 按实测改写;新增 F-14 / P0-2(流量页、Betting 页大接口回包生产包未压缩;逐帧核对返现、折后价要等它,见附录 C.3);F-01、P0-1、附录 D 补充 wallet-living 问题节点 2.20.13.133;附录 C 新增生产包冷缓存抓包、首次加工耗时实测与证据等级;建议编号与 Faster 报告统一:接口压缩按投入产出提到 P0-2,原 P0-2~P0-5 顺延为 P0-3~P0-6
V6(配图)2026-10-25关键结论旁补充录屏截图(共 11 张,均已打码,点击可放大):视觉完成与冷启动终点的判定示意、三家同一时刻对比(流量、Betting、消息、转账)、固定 2G 话费页、交易记录失败页、执行阻碍弹窗、流量页顶部轮播、大回包前后的返现与折后价
V72026-10-26V6 全文 + 收银台专题并入为第 9 章(线上数据、三家对比、链路拆解、诊断轮抓包、放大因素、根因、P0-6 ①–⑥ 与验收;含 3 张打码截图);第 0 章补收银台结论
本报告数据来自 2026-10-21 至 10-22 的真机实测(三家商店生产包),根因部分引用《OPay 真机实测:慢与 ANR 根因及 ROI 优化方案》(V1,测试包)。预计收益为估计值,以改后复测和上线埋点为准。