ISO/IEC IEEE 29119-4 — 软件测试技术

基于规格说明、基于结构和基于经验的测试设计技术综合目录

ISO/IEC IEEE 29119-4 标准概述

ISO/IEC IEEE 29119-4提供了一个全面的软件测试设计技术目录,可用于从各种信息源导出测试用例。该标准是测试从业者在根据被测系统类型、项目风险概况和评估的质量特性选择和应用适当技术时的重要工程参考。它将技术分类为三大类:基于规格说明的(黑盒)、基于结构的(白盒)和基于经验的测试技术。

三大分类——基于规格说明、基于结构和基于经验——通过从互补视角进行测试确保了全面的缺陷检测,每种视角设计用于发现不同类别的缺陷。

基于规格说明的技术从功能和非功能需求中导出测试用例,不参考内部代码结构。这些包括等价类划分、边界值分析、决策表测试、分类树方法、成对测试、状态转换测试、用例测试和用户故事测试。基于结构的技术从内部架构导出测试用例,涵盖语句覆盖、分支覆盖、决策覆盖、修正条件/决策覆盖(MC/DC)和数据流测试。基于经验的技术依赖于测试人员对系统和领域的知识,包括错误猜测、探索性测试和故障攻击方法。

详细技术描述与选择标准

29119-4中的每种技术都描述了其适用性、优势、局限性和测量标准。等价类划分将输入数据划分为预期测试行为等效的类,将无限输入可能性减少为可管理集合。边界值分析通过测试等价类边缘的值扩展了等价类划分,缺陷常常发生在这里。决策表测试系统性地覆盖了条件组合及其结果动作,非常适合业务逻辑验证。

技术类别 技术名称 最适合 发现的缺陷类型
基于规格说明 等价类划分 数据输入验证 范围相关缺陷
基于规格说明 边界值分析 数值输入字段 差一错误
基于规格说明 决策表测试 复杂业务规则 逻辑组合错误
基于规格说明 成对测试 配置测试 交互缺陷
基于结构 分支覆盖 安全关键代码 未测试的代码路径
基于结构 MC/DC 航空/医疗软件 隐藏逻辑依赖
基于经验 探索性测试 可用性评估 意外用户行为问题
研究一致表明,结合基于规格说明和基于结构的技术可获得最高的缺陷检测率——在系统性地应用适当的覆盖标准时,通常可检测到85-95%的缺陷。

工程应用与优化

来自29119-4的关键工程见解是,没有单一技术是足够的。有效的测试需要技术组合方案,根据特定的风险环境选择并组合技术。例如,安全关键的医疗设备应用需要符合DO-178C/ISO 26262的基于结构技术(MC/DC、分支覆盖)与全面的基于规格说明技术相结合。敏捷开发下的Web应用可能更依赖成对测试进行配置兼容性测试,以及探索性测试进行可用性评估。

一个常见的工程错误是过度投资于单一技术而忽视其他技术。团队通常能快速达到80%的语句覆盖,但随后花费不成比例的努力追逐剩余的20%,同时忽略了可能发现更有意义缺陷的基于规格说明的测试。

测试自动化框架应设计为同时支持多种技术。单元测试框架自然支持带有覆盖率测量工具的基于结构技术。集成测试框架可以通过参数化测试数据集自动化基于规格说明的技术。探索性测试虽然自动化程度较低,但可以使用基于会话的测试管理(SBTM)进行结构化,定义明确的章程和时间盒。该标准为将这些多样化方法整合为一致的测试设计策略提供了框架。

没有风险评估的技术选择是测试无效的首要原因。盲目应用”所有技术”的团队在低风险区域浪费资源,而对关键功能测试不足。29119-4提供了做出基于风险的知情技术选择决策所需的指导。

常见问题

问:29119-4适用于自动化测试吗?
答:当然。大多数基于规格说明的技术可以通过参数化测试框架实现自动化。基于结构的技术通过与CI/CD流水线集成的覆盖率分析工具支持。
问:一个项目应使用多少种技术?
答:通常3-5种精心选择的技术可提供最佳覆盖。标准推荐基于风险选择技术,而不是应用目录中的每种技术。
问:29119-4涵盖性能测试技术吗?
答:该标准专注于功能测试设计技术。性能测试作为测试类型在29119-1中涵盖,具体技术在ISO/IEC 25000系列等补充标准中描述。
问:基于经验的技术可以与自动化测试结合吗?
答:可以。虽然探索性测试本质上是手动的,但发现可以编码为自动化回归测试。基于会话的测试管理提供了一种结构化方式来捕获探索性结果。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注