R1.15.2brand-state combinatorial cost设计
品牌数量增加时验证成本按品牌乘状态增长
别名: 品牌状态乘积 · 组合验证 · combinatorial QA · brand matrix
概念解释
每加一个品牌,并不是多验几张首页截图,而是把现有每一种状态再跑一遍:默认、悬停、禁用、加载、空、错误、选中、焦点。验证成本按品牌 × 状态(再乘还在用的主题轴)增长。三个品牌、八个状态,是二十四格,不是三张图。漏掉的格子里藏着只在某品牌的某状态下才爆的对比、截断和焦点环。
乘法来自状态与品牌正交:品牌不删状态,状态也不认识品牌。正交是共用结构的好处,也是验证的形状。把验证想成「按品牌各看一眼」,等于假装乘法是加法。
机制
人的走查预算按页面和品牌线性增长,矩阵却按乘积增长。预算不够时,被砍的总是尾部格子:某品牌的空态、某品牌的错误+焦点叠加。尾部格子恰恰是取值表最容易露馅的地方——危险色在浅表上够对比,在该品牌的深色表面可能不够;长文案在品牌 A 的宽按钮里能放下,在品牌 B 的更圆、更窄的主行动上会挤爆。
自动化若只截「默认态 × 品牌」,等于把乘法又压回加法。状态要被驱动到真实枚举,品牌表要被切换,两者的笛卡尔积才是最低完整集。主题轴(明暗、对比、密度)是第三个乘数,忽略它会让「已经验过三个品牌」的报告仍漏掉高对比紧凑下的同一状态。
边界
品牌若只换标志、组件取值完全相同,乘数是 1,验证不必乘——但要先证明取值表确实逐项相等,不能靠「看起来差不多」。某些状态在某品牌被产品禁止(没有危险操作)时,那一格可以从矩阵删除,删除必须写明,不能悄悄跳过。抽样(每个品牌抽两个状态)只能发现抽样击中的格子,不能把未抽到的格标记为通过。极小的内部工具、调用点个位数且品牌只在构建期烘焙一个,运行时乘积不存在,矩阵退化为单品牌全状态。
怎么落地
- 把矩阵写出来:行是状态(含叠加态),列是品牌,需要时再加主题轴为层。每一格有通过 / 失败 / 不适用,不适用必须有理由。
- 自动化至少覆盖默认、禁用、错误、空、焦点 × 每个品牌;人工补叠加态和长文案。
- 新增品牌的验收条件是「矩阵多一列且该列全填」,不是「首页换了标志」。
- 验证:数组件公开状态数 n、品牌数 b,要求至少 n×b 张被驱动过的记录(截图或断言)。记录少于乘积的,列出缺的格子。在缺格里人为把文案加长、把焦点打上:若这里失败而报告仍写「三品牌已验」,就是把乘法当成了加法。再加一个品牌时看工时是否接近乘上 n,而不是加上「几张图的时间」。