第4章 用例设计方法论:等价类划分、边界值分析、正交实验法在UI定制中的应用
说到UI定制回归测试,我最头疼的不是功能逻辑,而是那些看似简单、实则藏坑的界面配置项。你想想看,一个主题色选择器,光颜色值就几百万种可能,难道真要一个个测?显然不现实。这时候就需要靠方法论来救命了。
我个人习惯把这三种方法看作“三件套”——等价类划分管范围,边界值分析抓边缘,正交实验法治组合爆炸。下面我结合项目的坑,一个个跟你聊透。
核心思想:用最少用例覆盖最多问题,而不是追求100%覆盖。
4.1 等价类划分:先把“大饼”切成几块
等价类划分的思想很简单:把输入域分成若干“等价”的区间,每个区间里挑一个代表值测就行。为什么?因为同一个区间内的值,程序处理逻辑大概率一致。如果测了字号72没问题,那测69、70、71大概率也没问题——除非你遇到了边界。
在UI定制中,我最常用的场景是:
- 字体大小(1-72磅)
- 颜色十六进制码(#000000 ~ #FFFFFF)
- 圆角半径(0-50像素)
- 间距值(0-100)
举个例子。我们做过一个系统主题定制,字号输入框允许1到72。我这么划分:
| 等价类 | 代表值 | 预期结果 |
|---|---|---|
| 有效:1 ~ 72 | 12(随便选一个) | 成功设置 |
| 无效:小于1 | 0 | 提示“请输入1-72之间的整数” |
| 无效:大于72 | 100 | 同上 |
| 无效:非数字 | "abc" | 格式校验提示 |
注意:我曾经过度依赖等价类划分,结果漏掉了空字符串和特殊字符。那一次测试环境里没报错,但线上用户输入了空格,UI直接崩了。嗯,后来我学乖了:等价类划分时,一定要把“空”“空格”“超长”这些都算作单独的无效类。
4.2 边界值分析:bug最容易藏在“边上”
其实说白了,边界值分析就是等价类划分的“升级版”。开发人员写if语句时,if (value >= 1 && value <= 72)这种逻辑,最容易在1和72这两个边界处出问题。为什么要单独拿出来讲?因为我见过太多测试只测中间值,结果边界全炸的情况。
典型边界取法:上点(边界本身)、离点(紧挨边界的值)、内点(有效区间内的任意值)。
拿上面字号例子,边界值应该测:
- 上点:1、72
- 离点:0(小于1)、73(大于72)
- 内点:36(中间随便选一个)
你可能会问,为什么等价类已经测了0和100,这里还要测0和73?因为边界值分析强调“紧邻边界”的值,而等价类划分更关注大类。两个方法结合,相当于给边界区域加了双保险。
个人经验:我记得有一次测滑动条控件,最小0、最大100,步长1。我本来只测了0、50、100(等价类思路)。结果用户反馈说拖动到1的时候UI闪了一下。复现后发现,开发在value == 1时有个特殊动画,没处理好。如果之前用边界值分析测了1这个点,就能提前发现。从那以后,凡是连续值的UI控件,我必定加上边界值用例。
4.3 正交实验法:解决“组合爆炸”的终极武器
UI定制经常涉及多个维度的配置。比如字体、颜色、背景图片、主题模式、圆角大小……如果全面测试,组合数会像原子弹一样爆炸。假设有4个选项,每个选项有3种值,全组合就是3⁴=81种。你测得过来吗?反正我测不过来。
正交实验法用“正交表”来挑选最有代表性的组合。这些组合具有“均匀分散,齐整可比”的特性,能覆盖两两组合的交互,大幅减少用例数。
具体操作步骤:
- 确定因子(UI定制项)和水平(各选项的值)
- 选择合适的正交表(比如L₉(3⁴)、L₄(2³))
- 把因子映射到正交表列,生成测试用例
- 补充你认为重要的业务逻辑组合(可选)
举个例子。我们曾经测试一个“组件自定义面板”,涉及三个参数:
| 因子 | 水平1 | 水平2 |
|---|---|---|
| A: 字体大小 | 12px | 16px |
| B: 文字颜色 | #333 | #666 |
| C: 背景颜色 | #FFF | #F5F5F5 |
全组合需要2³=8种。但使用L₄(2³)正交表,只需要4种组合:
用例1: A1(12px) B1(#333) C1(#FFF)
用例2: A1(12px) B2(#666) C2(#F5F5F5)
用例3: A2(16px) B1(#333) C2(#F5F5F5)
用例4: A2(16px) B2(#666) C1(#FFF)
这4个用例覆盖了所有两两组合。比如“A与B”的组合有(12px,#333)、(12px,#666)、(16px,#333)、(16px,#666)——恰好都被覆盖了。实际跑下来,我们发现例3的背景和字体颜色对比度不足,这个bug在8个全组合里也会被测到,但4个就足够了,节省了一半工作量。
我建议在UI定制回归测试中,先找出所有可变的“配置项”,然后对每一项做等价类和边界值分析(单因子),再用正交表覆盖多因子组合。这样三步走,基本不会漏掉重大缺陷。
小结:三种方法怎么搭?
说到底,这三种方法不是互相替代,而是互补。等价类划分帮我们划好地盘,边界值分析盯着边角,正交实验法处理交叉路口。我在实际项目中,通常这样用:
- 每个UI输入框/下拉框/滑块先做等价类和边界值 → 确保单因子正确
- 遇到3个以上定制项联动时 → 建正交表,生成组合用例
- 最后补充自己的业务直觉(比如某些组合是用户常用场景)
这样下来,用例数量可控,质量也过硬。你不妨回头看看自己项目里的UI定制模块,照着这个思路重新梳理一遍,说不定能发现之前漏掉的边界哦。