2. 测试策略制定:基于风险的测试策略、测试优先级划分、测试范围界定、测试准入准出标准

测试策略这东西,说白了就是回答三个问题:测什么?怎么测?测到什么程度算完?

我见过太多团队,一上来就闷头写测试用例,结果到项目后期才发现——关键模块没覆盖到,低风险的地方反而测了一大堆。嗯,这就是典型的「没有策略」。

今天咱们就聊聊,怎么用风险来驱动测试策略。这套方法我在好几个嵌入式项目里验证过,效果还不错。

2.1 基于风险的测试策略

为什么要基于风险?道理很简单:资源永远不够用。你想想看,一个嵌入式项目,硬件成本、开发周期、测试人力,哪个不是紧巴巴的?

基于风险的测试策略,核心就一句话:把测试资源集中在风险最高的地方

风险 = 故障发生的概率 × 故障造成的损失

我们不是要消除所有缺陷,而是要把缺陷控制在可接受的风险范围内。

我在一个车载项目中遇到过这种情况:某个传感器接口的通信协议,理论上很简单,但一旦出错会导致车辆误判。我们评估下来,概率虽然低,但损失极高。最后我们给这个接口安排了3轮交叉测试,外加一次硬件在环仿真。结果真就抓到了一个时序问题。

具体怎么评估风险?我习惯用这个四象限法:

风险等级 发生概率 影响程度 测试策略
致命 低/中/高 系统崩溃、数据丢失、安全危害 必须100%覆盖,多种测试手段叠加
严重 中/高 功能失效、性能严重下降 重点覆盖,自动化+手动结合
一般 功能异常但可恢复 自动化回归为主
轻微 界面问题、非功能性瑕疵 冒烟测试+用户反馈

我的经验:风险矩阵不是一次定死的。项目中期,随着硬件改版、需求变更,风险等级会变。我建议每两周重新审视一次风险矩阵。

2.2 测试优先级划分

有了风险等级,优先级就好定了。但这里有个坑——很多人把「风险高」和「优先级高」直接划等号。其实不完全对。

优先级还要考虑一个因素:测试的依赖关系

举个例子:某个底层驱动模块风险很高,但它的测试依赖硬件板卡,而板卡要两周后才到。这时候你把它排在最前面,反而浪费时间。

我一般按这个顺序排优先级:

  1. P0(最高优先级):影响系统安全、核心业务流程、且测试条件已具备的模块
  2. P1(高优先级):高风险但测试条件暂不具备的,先准备用例和环境
  3. P2(中优先级):中等风险、功能相对独立的模块
  4. P3(低优先级):低风险、非核心功能、或已有充分历史测试的模块

注意:P0的测试必须安排专人负责,而且要有「熔断机制」——如果P0测试发现严重问题,整个项目要停下来评估。

我曾经在一个物联网网关项目里,把通信协议栈排成了P0。结果测试第一天就发现,在弱网环境下,协议栈的重传机制有死循环。幸亏发现得早,不然等整机联调时再暴露,那代价就大了。

2.3 测试范围界定

测试范围,说白了就是「哪些要测,哪些不测」。很多新手项目经理喜欢说「全测」,但这是不负责任的。

为什么?因为嵌入式系统里,有些东西根本测不完。比如一个RTOS的任务调度,理论上所有任务组合都要测,但实际项目里你只能选典型场景。

我界定测试范围时,会考虑这几个维度:

  • 功能维度:核心功能必须全量覆盖,边缘功能按风险抽样
  • 接口维度:对外接口(尤其是硬件接口)必须全覆盖,内部接口按调用频率覆盖
  • 场景维度:正常场景、异常场景、极限场景,按1:0.5:0.3的比例分配
  • 版本维度:新功能全测,回归功能按变更影响范围裁剪

一个实用的原则:测试范围 = 需求覆盖 × 风险覆盖 × 变更覆盖。三个维度取交集,而不是并集。

嗯,这里要注意。测试范围不是越窄越好。我见过一个团队,为了赶进度,把测试范围砍到只剩核心功能。结果上线后,一个配置参数的边界值没测,导致设备在特定温度下死机。这个教训挺深刻的。

2.4 测试准入准出标准

准入准出标准,是测试阶段的「门禁」。没有这个门禁,测试过程就容易失控。

测试准入标准(什么时候可以开始测):

检查项 具体要求
代码提交 通过编译,无语法错误,静态检查无严重问题
单元测试 开发人员已完成单元测试,通过率≥90%
测试环境 硬件板卡、仿真器、测试工具就绪,环境自检通过
测试用例 用例已评审,与需求可追溯
缺陷管理 已知严重缺陷已修复,或已明确延期理由

测试准出标准(什么时候可以结束测试):

检查项 具体要求
用例执行 所有P0用例100%通过,P1通过率≥95%
缺陷收敛 连续3天无新增严重缺陷,缺陷修复率≥98%
回归测试 关键回归场景全部通过
性能指标 CPU占用率、内存使用、响应时间等满足规格要求
遗留风险 所有已知风险已评估,并有明确的应对措施

我的习惯:准入准出标准不是一成不变的。项目初期可以严格一些,到了后期如果时间紧张,可以适当放宽——但必须经过风险评审,而且要有书面记录。

我曾经在一个医疗设备项目里,因为准出标准没定好,测试团队和开发团队吵了一个星期。开发说「测完了」,测试说「还没达标」。后来我们坐下来,把准出标准一条条列清楚,签了字,后面就顺畅多了。

2.5 小结

测试策略制定,说到底就是做选择题。资源有限,风险无限,怎么选?

  • 用风险矩阵给每个模块打分
  • 按优先级排好测试顺序
  • 明确哪些测、哪些不测
  • 用准入准出标准守住质量底线

这套方法我用了好几年,不能说万无一失,但至少能保证:该测的没漏,不该测的没浪费

下一章咱们聊聊测试用例设计,那又是另一门手艺了。