3、传统兼容测试流程:手动测试、测试矩阵的构建与维护

聊兼容测试,咱们得先看看“传统玩法”是什么样的。

不是所有团队一开始就能上自动化、上 CI/CD。大部分项目,尤其是早期或资源有限的时候,兼容测试基本都是手动测的。这个流程,说白了就是“人肉矩阵”的玩法。

我个人习惯把这个阶段叫做“石器时代”。不是说它不好,而是它有明显的天花板。

3.1 手动测试:最原始,也最直接

手动测试兼容性,场景通常是什么样的?

  • 开发说“这个版本 ok 了,测一下兼容性吧”。
  • 测试同学拿着一张清单,打开一堆设备,开始点点点。
  • 发现布局乱了,截个图,记个 bug,丢给开发。
  • 开发改完,再测一遍。

嗯,听起来很简单。但我在项目中遇到过这样的情况:一个功能,在 10 台设备上手动跑一遍,就要花掉整整一个下午。如果中间发现了一个严重问题,整个流程就得重来。

手动测试的核心痛点:

  • 耗时极长:一次完整的兼容回归,可能需要几天甚至几周。
  • 极易遗漏:人总会累,总会看漏。有些偶发性的 UI 错位,手动测的时候不一定能每次都触发。
  • 难以复现:“唉?我刚才明明看到它闪了一下,现在怎么没了?”——这种话我听过太多次了。
  • 结果不可靠:不同测试人员的操作习惯不同,主观判断标准也不一样。

你想想看,如果一个 Bug 只在 Android 10、6寸屏幕、深色模式 下出现,手动测试能保证每次都覆盖到这个组合吗?很难。

我曾经就因为这,被一个只在“某品牌某型号的暗光环境下”才出现的字体渲染问题坑过一次。那一次,排查了整整两天。

3.2 测试矩阵:把“混乱”变成“清单”

为了解决手动测试的“无序”问题,聪明的前辈们发明了——测试矩阵。

说白了,就是把所有要测的环境变量组合起来,列成一个表格。你对着表格打勾,测完一个划掉一个。

一个典型的兼容测试矩阵长什么样?

设备/操作系统 浏览器版本 屏幕分辨率 核心功能A 核心功能B UI 布局
iPhone 14 / iOS 16 Safari 16 2532x1170 ✅ ✅ ✅
Pixel 7 / Android 13 Chrome 110 2400x1080 ✅ ❌ ⚠️
iPad Pro / iPadOS 16 Safari 16 2732x2048 ✅ ✅ ✅
Redmi Note 11 / Android 12 MIUI 浏览器 2400x1080 ✅ ✅ ❌ ( 底部按钮被遮挡 )

矩阵的好处很明显:

  • 可追踪:哪个设备、哪个版本、哪个功能,测没测过,一目了然。
  • 易规划:老板问“这版本兼容性怎么样?”,你直接甩一个矩阵过去就行。
  • 标准化:新人来了,照着矩阵测,不会跑偏。

我的建议:构建矩阵时,别贪多。你先抓住“TOP 20%”的设备和浏览器。比如,你们的用户画像里,iPhone 14 的用户占 30%,那就必须测它。千万别想着“把全世界的设备都覆盖了”,那是做不到的。

3.3 构建测试矩阵:你该考虑哪些维度?

构建矩阵不是瞎列。我个人习惯从这 5 个核心维度入手:

  1. 操作系统及版本: 这是最基础的。Android 10/11/12/13/14、iOS 15/16/17、Windows 10/11、macOS Ventura/Sonoma……
  2. 浏览器及核心版本: Chrome、Safari、Firefox、Edge,还有那些“套壳浏览器”,比如微信内置浏览器、QQ 浏览器、UC 浏览器。
  3. 屏幕尺寸与分辨率: 小屏手机(5.5寸以下)、常规屏(6寸左右)、大屏手机/平板(7寸以上)、带鱼屏显示器(21:9)。
  4. 硬件性能: 低端机(2GB RAM)、中端机(4-6GB RAM)、高端机(8GB+)。老设备跑新功能,卡顿是常态。
  5. 系统特性设置: 深色模式、字体大小(特大字体)、无障碍模式(TalkBack/旁白)、语言(从右到左如阿拉伯语)。

你可能会问:“维度这么多,我该选哪些组合?”

答案很简单:看你的用户数据。从后台拉一下用户设备分布,按占比从高到低排,前 80% 的设备就是你矩阵里的“必修课”。

3.4 维护测试矩阵:一场永无止境的战斗

矩阵建好了,是不是就完事了?天真。

兼容测试矩阵最大的坑,不是构建,而是维护。

我曾经... 就踩过这个坑:一个大版本上线前,我们拿着三个月前建的矩阵去测。结果发现,矩阵里有 3 款设备已经停产,系统版本也升级了两轮。最关键的是,用户数据告诉我们,新用户的主力机型根本不是当初列的那几款。这意味着,我们耗尽人力测了一堆“废组合”。

从那以后,我定了一条规矩:测试矩阵必须每两个 Sprint 更新一次,且与线上用户数据对齐。

维护矩阵你需要注意哪些事?

  • 定期清理“僵尸设备”: 如果某款设备在过去一个季度里,用户占比低于 0.5%,并且没有重大项目依赖,果断砍掉。
  • 及时补充新热点: 比如新发布的 iPhone 15、某款爆火的折叠屏手机、最新的 Chrome 版本。这些要马上加进去。
  • 关联 Bug 库: 矩阵里的每一项,最好都能关联到对应设备上的已知 Bug。这样下次再测,你能快速知道“这设备有没有历史遗留问题”。

说回手动测试,它虽然原始,但不可替代。尤其是那些需要主观判断的测试,比如“这个动画流畅吗?”“这个字体看起来舒服吗?”“这个交互手势符合直觉吗?”——这些,机器很难帮你判断。

但问题在于,传统的手动测试 + 矩阵维护模式,效率太低了。它只适合小项目、低频发布的场景。一旦你的迭代节奏加快到每周甚至每天发布,这种模式根本跑不动。

这也引出了我们为什么要做兼容测试的自动化,以及为什么要把它们集成到 CI/CD 里。传统流程是“地基”,但想盖高楼,你得找新的工具和方法。

本章核心回顾:

  • 传统手动测试的瓶颈:耗时、易遗漏、难复现。
  • 测试矩阵是解决“测什么”的利器,但需要结构化设计。
  • 矩阵的 5 大维度:OS、浏览器、分辨率、硬件、系统设置。
  • 维护矩阵比构建矩阵更重要,需定时与用户数据对齐。
传统兼容测试流程结构 测试矩阵 (Test Matrix) 手动执行测试 5大构建维度 OS / 浏览器 分辨率 / 硬件 系统设置(深色模式等) 持续维护 清理僵尸设备 补充新热点 关联Bug库