第二章:需求分析与测试策略
如何读懂SRS(软件需求规格书)
说实话,很多测试工程师拿到SRS的第一反应就是——直接翻到功能列表,开始写用例。我当年也这么干过,结果呢?漏测了,被开发怼回来重测。
SRS这东西,说白了就是开发、测试、产品三方之间的“合同”。你连合同都没读懂,怎么去验收?我个人习惯,拿到一份SRS,先看三遍:
- 第一遍:通读。了解系统是干什么的,有哪些模块,输入输出是什么。
- 第二遍:精读。逐条分析每个需求,特别是“边界条件”和“异常处理”。
- 第三遍:挑刺。站在测试角度,找SRS里的模糊点、矛盾点、遗漏点。
举个例子,我在项目中遇到过一份SRS,写着“当车速超过120km/h时,系统发出报警”。听起来很清晰对吧?但仔细一想:报警持续多久?报警声音多大?如果车速降到120以下又升上来,还报不报警?这些SRS里都没写。嗯,这就是典型的“需求不完整”。
核心要点:读懂SRS,不是看字面意思,而是看“没说出来的东西”。
需求可测试性分析
什么叫可测试性?说白了就是:这个需求,你能不能设计出明确的测试用例来验证它。
我经常跟团队说一句话:“一个不可测试的需求,等于没有需求。”你想想看,如果需求写的是“系统响应要快”,你怎么测?多快算快?1秒?100毫秒?没有量化指标,测试就没法做。
可测试性分析,我一般从这几个维度入手:
| 维度 | 问题 | 示例 |
|---|---|---|
| 明确性 | 需求是否量化? | “响应时间≤200ms” ✅ vs “响应要快” ❌ |
| 可观测性 | 结果能否被观察到? | 报警灯是否点亮,CAN报文是否发出 |
| 可控制性 | 输入条件能否被控制? | 车速、温度、电压等能否模拟 |
| 可判定性 | 通过/失败标准是否清晰? | “报警声压级≥85dB” ✅ vs “声音要响” ❌ |
我曾经遇到过一个需求:“系统在极端环境下应正常工作”。这怎么测?什么叫极端环境?温度?湿度?海拔?后来我拉着开发一起讨论,把“极端环境”拆解成了:-40℃~85℃温度范围、10%~95%湿度范围、海拔0~5000米。你看,这样就能测了。
小技巧:遇到模糊需求,别自己猜。直接找产品经理或系统工程师,用“如果...那么...”句式去追问。比如:“如果车速刚好是120.0km/h,那么报警触发吗?”
测试策略制定方法
测试策略,说白了就是回答三个问题:测什么?怎么测?测多少?
我个人的经验是,测试策略不能一刀切。不同模块、不同功能,风险等级不一样,测试深度自然也不一样。我常用的方法是“风险导向测试策略”:
- 安全相关功能(如AEB、ESC):必须全覆盖,包括正常、异常、边界、故障注入。这部分我建议做100%的测试覆盖。
- 核心功能(如空调控制、导航):主要路径全覆盖,异常路径抽样。覆盖度做到80%以上。
- 辅助功能(如氛围灯、语音提示):正常路径覆盖,异常路径选做。覆盖度60%左右。
- 体验类功能(如UI动画、音效):以主观评价为主,自动化为辅。
举个例子,我在做某个ADAS项目时,AEB功能我花了60%的测试时间,而氛围灯功能只花了5%。有人问我为什么?我说:AEB失效可能出人命,氛围灯坏了最多被吐槽。这就是风险导向。
注意:风险导向不等于“高风险功能测得多,低风险功能不测”。低风险功能也要做冒烟测试,确保基本功能可用。
测试优先级划分
优先级划分,我习惯用“四象限法”。横轴是“功能重要性”,纵轴是“失效影响程度”:
| 象限 | 特征 | 优先级 | 示例 |
|---|---|---|---|
| 第一象限 | 重要+影响大 | P0(最高) | 制动系统、转向系统 |
| 第二象限 | 重要+影响小 | P1 | 仪表显示、报警提示 |
| 第三象限 | 不重要+影响大 | P1 | 娱乐系统死机(影响体验但不影响安全) |
| 第四象限 | 不重要+影响小 | P2 | 主题切换、壁纸设置 |
你可能会问:为什么“不重要+影响大”也是P1?嗯,这里要注意。娱乐系统死机虽然不影响安全,但用户感知极强。你想想看,车主刚提车,中控屏就卡死了,他第一反应就是“这车质量不行”。所以这类问题,优先级也不能低。
我建议的测试执行顺序是:P0 → P1 → P2。P0的用例必须在第一轮测试中全部执行,P1的用例在第二轮执行,P2的用例如果时间不够可以放到回归测试。
避坑指南:我曾经犯过一个错误——把所有P0用例都放在自动化脚本里跑,结果自动化环境不稳定,P0用例全挂了,但实际功能没问题。后来我调整策略:P0用例必须手工+自动化双重验证,P1和P2可以只跑自动化。
最后说一句,优先级不是一成不变的。项目不同阶段,优先级要动态调整。比如项目初期,P0用例优先;到了回归测试阶段,P1和P2的用例也要提上来,防止回归引入新问题。
好了,这一章就聊到这儿。下一章我们讲讲测试用例设计的具体方法,包括等价类、边界值、场景法这些经典技术。到时候我会结合汽车电子的实际案例,给你讲讲怎么把这些方法用活。