2、测试策略基础:V模型与敏捷测试模型、测试级别、测试类型

各位同学好,我是老张。今天咱们聊聊测试策略的基础框架。说实话,我见过不少团队一上来就闷头写测试用例,结果测到一半发现方向偏了。为什么会这样?说白了,就是没把测试策略想清楚。

我个人习惯,在项目启动前先画一张「测试地图」。这张地图上要标清楚三件事:用什么模型、分几个级别、测哪些类型。今天咱们就把这三件事掰开揉碎讲透。

2.1 V模型:经典但别死用

V模型长什么样?左边是需求、设计、编码,右边是单元测试、集成测试、系统测试、验收测试。左右一一对应,像字母V一样。

我记得刚入行那会儿,觉得V模型特别完美。需求分析完了,验收测试用例就写好了;概要设计完了,系统测试用例也到位了。听起来很理想,对吧?

但实际项目中,我踩过一个大坑。有一次做医疗显微镜的影像处理模块,我们严格按照V模型走。需求文档写了200页,测试用例提前写了500条。结果呢?开发到一半,临床医生提了个新需求——「能不能加个自动对焦辅助线?」

这一下,整个V模型的左侧全变了。右侧的测试用例也得跟着改。改来改去,项目延期了两个月。

所以我的建议是:V模型适合需求稳定的项目。比如医疗器械的固件升级,功能变化不大,用V模型很稳。但如果是新产品研发,需求三天两头变,你就得考虑更灵活的模型。

核心要点:V模型强调「尽早验证」。左侧每个阶段的工作产物,右侧都有对应的测试活动。但别把它当成死规矩,该调整就调整。

2.2 敏捷测试模型:拥抱变化

后来我转到敏捷团队,一开始很不适应。以前写测试用例能写一个月,现在一个Sprint就两周。测试用例得跟着迭代走,边开发边测。

敏捷测试模型的核心是「测试驱动开发」和「持续测试」。说白了,就是测试不再是一个独立阶段,而是融入开发的每个环节。

我给大家举个例子。我们做显微镜的触控交互时,每个Story完成后,开发人员先写单元测试,然后我马上做集成测试。发现问题,下一个Sprint立刻改。这样迭代了三个Sprint,触控响应时间从200ms降到了50ms。

你想想看,如果用V模型,得等到所有开发完成才测,发现问题再回头改,那成本得多高?

个人经验:敏捷测试模型里,我最看重「自动化测试」。手动测试在敏捷里根本跑不过来。我建议至少把单元测试和接口测试自动化,覆盖率做到80%以上。

但敏捷模型也有短板。医疗器械行业有严格的法规要求,比如FDA的软件验证。敏捷的「快速迭代」和法规的「文档完整」有时候会打架。嗯,这里要注意——别为了敏捷丢了合规性。

2.3 测试级别:从微观到宏观

测试级别,说白了就是「测多细」的问题。我把它分成四个层次,像剥洋葱一样,一层一层往里剥。

测试级别 测什么 谁来做 典型工具
单元测试 单个函数、模块 开发人员 CUnit, Google Test
集成测试 模块间接口、数据流 开发+测试 LDRA, VectorCAST
系统测试 完整系统功能、性能 测试团队 TestComplete, Selenium
验收测试 用户需求、法规符合性 用户+QA 手动测试为主

单元测试:我最看重这个级别。为什么?因为越早发现bug,修复成本越低。我曾经在显微镜的自动对焦算法里,发现一个除零错误。如果等到系统测试才发现,那得排查多少代码?

集成测试:这里容易出幺蛾子。模块单独跑都没问题,一合起来就崩。我记得有一次,图像采集模块和存储模块的接口时序没对齐,导致数据丢包。集成测试一跑,问题立刻暴露。

系统测试:这个级别要模拟真实使用场景。比如显微镜连续工作8小时,看看会不会死机。温度升高后,图像质量会不会下降。这些在单元测试里是测不到的。

验收测试:医疗器械的验收测试,不只是用户说「好用」就行。还得符合ISO 13485、IEC 62304这些标准。我建议验收测试用例直接引用法规条款,一条一条过。

避坑指南:我曾经犯过一个错误——验收测试拖到最后才做。结果发现用户界面不符合人因工程要求,得重新设计。从那以后,我要求验收测试用例在需求阶段就写好,哪怕后面改,也比最后才发现强。

2.4 测试类型:功能、性能、安全

测试类型,就是「测哪些方面」。我重点讲三个:功能、性能、安全。这三个在医疗器械里缺一不可。

功能测试

功能测试是最基础的。说白了,就是「按了按钮,有没有反应」。但医疗器械的功能测试,不能只测正常流程,还得测异常流程。

举个例子,显微镜的拍照功能。正常流程:按快门→拍照→保存。异常流程呢?SD卡满了怎么办?电池电量不足怎么办?连续按快门会不会卡死?这些都要测。

我个人习惯,功能测试用例用「等价类划分」和「边界值分析」来设计。比如温度范围是0-40℃,那0℃和40℃是边界,-1℃和41℃是异常值。每个边界都要测。

性能测试

性能测试,测的是「快不快、稳不稳」。医疗器械的性能指标,往往有硬性要求。比如显微镜的实时帧率不能低于30fps,图像处理延迟不能超过100ms。

我记得有一次,客户投诉说显微镜的自动对焦太慢。我们一测,平均对焦时间1.2秒,而竞品只要0.8秒。后来优化了算法,把对焦时间降到了0.6秒。性能测试帮我们找到了差距。

性能测试还要关注资源占用。CPU使用率、内存泄漏、磁盘I/O。我见过一个项目,运行4小时后内存泄漏了200MB,系统越来越卡。这种问题,不跑长时间压力测试根本发现不了。

安全测试

安全测试在医疗器械里是重中之重。我说的安全,包括功能安全和信息安全。

功能安全:比如显微镜的激光光源,如果功率失控,可能灼伤患者眼睛。安全测试要验证:功率超过阈值时,系统能否自动切断?有没有冗余保护机制?

信息安全:现在很多显微镜联网了,数据上传到云端。那就要测:数据传输加密了吗?用户权限控制了吗?有没有SQL注入漏洞?

我的原则:安全测试不能只靠测试团队。我建议引入第三方安全评估机构,尤其是涉及到患者安全的项目。别省这个钱,出了事代价更大。

2.5 模型、级别、类型怎么组合?

讲到这里,你可能觉得有点乱。模型、级别、类型,到底怎么用?我给大家一个实战组合拳。

  1. 选模型:需求稳定用V模型,需求多变用敏捷模型。医疗器械项目,我建议用「混合模型」——核心功能用V模型,外围功能用敏捷。
  2. 定级别:每个级别都要覆盖。但资源有限时,优先保证单元测试和系统测试。集成测试可以抽测关键接口。
  3. 分类型:功能测试全覆盖,性能测试挑关键场景,安全测试必须做。我见过太多项目只做功能测试,性能和安全全靠运气。

举个例子。我们做一款手术显微镜,核心功能是实时影像传输。测试策略是这样的:

  • 单元测试:每个图像处理函数都测,覆盖率要求90%以上
  • 集成测试:重点测图像采集→编码→传输这条链路
  • 系统测试:模拟手术室环境,连续运行12小时
  • 验收测试:请三位外科医生试用,反馈操作体验
  • 功能测试:所有按钮、菜单、快捷键都测一遍
  • 性能测试:帧率、延迟、CPU占用、内存泄漏
  • 安全测试:激光功率保护、数据加密、用户权限

你看,这样组合起来,测试策略就清晰了。每个测试活动都有明确的目标和范围。

最后说一句:测试策略不是一成不变的。项目进行中,要根据实际情况调整。比如发现某个模块bug特别多,那就增加这个模块的测试力度。灵活应变,才是测试专家的本事。

好了,这一章就讲到这里。下一章咱们聊测试用例设计方法,到时候我会带几个真实的医疗显微镜案例,咱们一起分析。