使用基于模型的测试工作流进行与安全相关的软件开发2014-03-15 ibm Paul Urban安全相关软件的挑战嵌入式软件已经逐渐成为当今创新型产品的核心。对于在我们日常生活 中必不可少的产品来说,嵌入式软件是定义其功能,控制其电气和机械系统的重要组件。例如,在飞机 、汽车、火车或医疗设备中,故障可能会导致人身伤亡。此时必须倍加谨慎,也需要付出额外的努力, 确保系统安全运作,保证用户的安全,避免代价高昂的产品召回。对于极度注重安全的代码, 企业必须遵循严格的开发标准和指导准则,例如针对商业航空电子设备的 DO-178C 和 DO-178B;针对 汽车的 ISO 26262;针对医疗设备的 IEC 62304;以及针对一般功能安全要求的 IEC 61508。各公司须 负责提供其采用良好开发流程的证据,例如从需求到实现的跟踪能力,充分的测试,以及其工具不会造 成产品中存在错误。此外还必须抽出额外的时间、执行额外的测试,以确认软件符合安全要求,而这一 切都会显著增加开发时间和成本。
利用基于模型测试的自动化测试
利用基于模型的测试,您就可以通过 图形化的方式捕获测试用例。这有益于创建更易于理解、富有表现力的测试用例,简化整个开发团队内 的沟通。测试用例可跟踪需求,从而轻松理解需求变化的影响。IBM? Rational? Rhapsody? TestConductor Add On 为 Rational Rhapsody Developer、Rational Rhapsody Designer for Systems Engineers 或 Rational Rhapsody Architect for Software 版本添加了以 UML 测试配置文 件为基础的基于模型的测试功能。测试配置文件在 UML 中添加了测试架构和测试行为的概念,以便根 据测试量身定制开发环境。测试架构扩展了现有 UML 2.0 结构概念,以便描述相关测试元素及其之间 的关系。类似地,测试行为扩展了现有 UML 2.0 的行为概念,以便包含测试过程中的所有观察结果和 活动。Rhapsody TestConductor Add On 可自动为正在测试的系统创建测试架构。用户可以使 用 UML 顺序图、状态图或流程图,以图形的方式创建测试用例。测试用例的图形化表示允许更好地就 测试进行沟通,有助于理解设计的行为。用户可以执行测试并检视结果,以便自动化单元测试和回归测 试。通过在开发流程早期的设计模型阶段执行测试,质量保障经理和软件工程师可以高效地、有效地对 设计进行需求验证,尽快识别出问题。
安全相关软件必须具 备从需求到软件架构再到代码的完整可跟踪能力。除此之外,还必须具备从需求到针对所开发软件检查 需求正确性测试用例的跟踪能力。实现元素(例如测试架构、测试案例)以及模型级别的概念允许在模 型级别上直接实现双向跟踪能力。这支持自动分析模型和代码的需求覆盖率以及结构覆盖率。除此之外 ,如果使用 UML 顺序图、状态机等标注法以图形的方式指定测试用例,验证将比传统以代码为中心的 测试用例更加轻松有效。基于模型的方法允许在统一的框架内开发设计工件和测试工件。因此,该方法 能够提高开发和测试流程的敏捷性,与具有独立开发和测试阶段的流程相比,效率更高、成本更低。 IBM Rational Rhapsody TestConductor Add On 可自动化许多测试活动,包括创建测试架构和执行测 试用例。因此,测试人员可以专注于其测试用例的正确性和完整性,不必花时间去处理繁琐的、易于出 错的任务,例如创建测试装置。与传统测试脚本语言相比,模型驱动的测试架构和测试用例有着图形化 的特点和明确的文档,因此更易于维护。
采用基于模型的测试的参考工作流概述
Rational Rhapsody 参考工 作流描述了一种基于模型的开发方法,包括适用于安全相关软件开发的自动代码生成和基于模型的测试 。图 1 展示了该参考工作流中的主要活动。工作流的上半部分描述了设计和实现安全相关软件的活动 。工作流的下半部分描述了验证软件的活动。该方法同时解决了设计和实现,同时还提供了恰 当的测试和验证。使用文本形式表示的需求来指导正式 UML/SysML 模型的开发,这些模型随后将使用 代码生成转化为代码。完善步骤均附带恰当的指南和检查。从文本需求到可用于代码生成的设 计模型的完善步骤将通过执行基于与系统需求的模型级测试加以验证,此验证过程将利用 IBM Rational Rhapsody 动画通过模型模拟完成。这种测试也称为模型在环(Model-in-the-Loop,MiL)测 试。生成的代码可在计算机上验证,方法是执行 MiL 过程中的相同测试用例,但不包含 Rational Rhapsody 动画。这种测试也称为软件在环(Software-in-the-Loop,SiL)测试。MiL 与 SiL 的测试 结果将执行自动等效检查(对比测试),以验证结果。此外,还可在目标处理器上执行一组测试来补充 此类验证,这种测试称为处理器在环(Processor-in-the-Loop,PiL)测试。模型和代码的测试执行提 供了结构化的覆盖率度量,可评估测试的完整性,避免包含不必要的功能。需求覆盖率是在测试用例的 执行过程中度量的。
图 1. IBM Rational Rhapsody Reference 工作流的活动

工作流中的第一项活动是利用恰当的建模指导原则,将给定需求转化为可执行模型。随后,添加基 于模型的测试,确保模型确实正确地捕获了需求。覆盖率测试(需求覆盖率和模型覆盖率)可度量基于 模型的测试套件的完整性。代码生成用于通过模型生成实现。模型与代码间的对比测试或等效性测试是 代码验证的关键要素。在两个级别同时运行测试可验证模型和代码是否表现出相同的行为。代码覆盖率 指标用于根据预定义的代码覆盖率标准确保测试套件的完整性。