Web 应用跨地区兼容测试:地区、浏览器与语言矩阵
用地区(代理 IP 出口)、浏览器、语言、时区和版本五个变量建立测试矩阵,按风险挑出八到十二组代表组合,复现并归档缺陷,避免把抽样差异当成功能回归,适用于自有 Web 应用的功能一致性检查。
Web 应用跨地区兼容测试的目标不是“每个地区都点一遍”,而是用有限组合回答“核心功能在哪些地区会坏”。先把功能按影响面分级,再用地区、浏览器、语言、时区、版本五个变量选择组合。3 个地区 × 3 个浏览器 × 2 个版本,单语言、单构建已有 18 组;资源有限时另用风险抽样或成对覆盖,并列出覆盖关系和未测组合,不能称为全量,跑同一套用例。本文只讨论自有 Web 应用的功能一致性,不做 SERP 抽样,也不把代理 IP 的出口差异当成兼容性结论。
先确定哪些地区和浏览器必须支持
列出核心流程(登录、支付、下单)、次要流程(搜索、筛选、导出)和展示型页面。实操上核心流程 3—5 条、次要流程 5—8 条就够,列得越细,后面的矩阵越难收敛。
是否阻塞按产品预期、影响面和严重度确定,不只按页面类别。地区配置或 SDK 集成本身也可能构成缺陷。分级要在测试前完成,避免测完再按结果调整标准。范围还要写清“支持的地区与浏览器版本”,未列出的组合不承诺;地区清单按产品实际开放确定,不要照搬代理服务商的地区列表。
如何从地区、浏览器和版本中选测试组合?
Web 应用跨地区兼容测试的组合不是越多越好。五个变量全组合会爆炸,实践做法是先固定版本和时区,再用正交表挑地区 × 浏览器 × 语言的代表组合。
选样按顺序走,让高风险组合先被覆盖:
1. 全部支持地区 × 核心浏览器,只跑支付、登录、下单三条主链路;
2. 主要语言与时区组合,每种语言至少配一个时区边界(如 UTC+8 与 UTC-5);
3. 版本至少覆盖当前线上版与待发布版;
4. 剩余维度按缺陷历史与业务权重补样。
取值可以这样起步:地区 3—4 个(主力市场加一个时区边界),浏览器 3 个(Chrome、Safari、Firefox 各取最新两个大版本),语言 2 种(主语言加一个长文案或 RTL 语言)。每组写明“为什么选它”:覆盖主力浏览器、覆盖时区边界、覆盖地区限制策略。
风险抽样组合数量按实际覆盖目标确定,不能与全组合数量混为一谈。选样时先覆盖所有支持地区的核心流程与主流浏览器,再覆盖主要语言及会影响日期、结算或排版的时区边界,最后纳入当前版和待发布版;每个组合写明覆盖的风险或历史缺陷。若关键地区/浏览器尚未覆盖,应增加组合,不能为满足数量上限删掉高风险项。每组只回答一个问题,不要把多个假设塞进同一组。空白矩阵按“组合 ID、地区、浏览器、语言、时区、版本、流程、预期、实际、结论”十列建,未跑完的组合填“待测”,不计入通过。要在多个浏览器里批量跑矩阵,接入方式见Selenium、Playwright 和 Puppeteer 怎么设置代理 IP。代理类型属于环境控制项,不进基础矩阵:固定一种类型,只有产品对机房流量有单独策略时,才另加一档并注明组合数翻倍。
怎样分层测试,控制回归工作量?
冒烟层每次发布都跑:3 个主力地区 × 2 个浏览器 × 1 种语言,只覆盖登录与支付主链路。冒烟失败即停,不进全量——先修主链路,再谈兼容差异。
全量层按季度或大版本跑,组合数按全维度乘积计算;若使用抽样,应说明覆盖的语言、时区和版本差异及未测项,时间点应留出与团队修复流程相符的窗口,不将 48 小时当作通用要求,留出修复窗口。扩组合的触发条件要写死:新增地区、切换 CDN、升级前端框架、支付渠道变更;没有触发条件就扩,回归成本会压过收益。
判定维度和缺陷记录字段要一起定:判定按产品预期与影响严重度执行,并在测试前定义阻塞、降级和观察条件,记录字段固定构建号、出口 IP 归属地、浏览器版本、语言与时区、复现步骤。
发现兼容问题后,要保存哪些复现材料?
每条缺陷固定五项:构建号、地区出口、浏览器版本、语言与时区、复现步骤。附件至少包含 Console 首个错误、脱敏后的失败请求 HAR 和关键页面截图。导出 HAR 前删除 Cookie、Authorization、手机号、邮箱等个人数据,以及查询参数中的 token、code 等凭证;保留定位问题所需的 URL 路径、状态码、耗时和必要响应头。
归档时区分“功能缺陷”和“环境差异”。举个常见的:同一构建在 A 地区通过、B 地区支付按钮不可点,先把 B 的地区配置、功能开关、第三方支付 SDK 逐项对齐;三者都一致仍然失败,才按缺陷处理。风险—组合覆盖表作为唯一环境记录入口;归档部分只列该表未覆盖的日志和附件。
下表是一次全量层的记录样式,三行固定同一种代理类型,第三行未跑完不能算通过:
| 组合 ID | 地区 | 出口 IP / 代理类型 | 浏览器 | 语言 | 时区 | 版本 | 结论 |
|---|---|---|---|---|---|---|---|
| C-01 | DE | 203.0.113.10 / 住宅 | Chrome 最新 | de | UTC+1 | v2.4.0 | 通过 |
| C-02 | US | 198.51.100.24 / 住宅 | Safari 最新 | en | UTC-5 | v2.4.0 | 失败(支付按钮不可点) |
| C-03 | JP | 192.0.2.33 / 住宅 | Chrome 最新 | ja | UTC+9 | v2.4.0 | 待测 |
读法是先看结论列,再回到组合定义:C-02 失败先查 Safari 与支付 SDK,而不是先怀疑地区。
FAQ
冒烟层要不要覆盖次要流程?
不覆盖。冒烟只保核心链路,次要流程放全量;否则冒烟时间会从半小时涨到几小时,发布节奏先崩。
时区到底影响什么?
影响时间显示、日期边界、定时任务和“今天/昨天”这类相对时间;不影响接口地区判断,但会让用户看到错误日期,所以要和地区变量分开记录。
同一构建在不同地区结果不同,一定是缺陷吗?
不一定。先排除地区配置、功能开关和第三方依赖差异;三者都一致后仍不同,才按缺陷处理。
矩阵里要不要把代理 IP 类型也当变量?
默认不当。它是环境控制项,固定一种即可;只有产品对机房流量有差别待遇时,才单列一档并接受组合数翻倍。
需要确认可用出口地区,可查看全球代理支持的出口地区。
