立即登录

如果您已经拥有本站账号,可以直接登录。

* 为必填项 注册新会员

  • 登录名: *   
  • 登录密码: *
  • 重复密码: *   
  • 姓名: *   
  • 公司名称: *   
  • 职务:
  • 联系电话: *   
  • 电子邮件: *   
  • 验证码: *   

立即登录

如果您已经拥有本站账号,可以直接登录。

* 为必填项 找回密码

  • 注册邮箱:

    验证码会以邮件的方式发送到您的邮箱!

  • 验证码: *
  • 请输入新密码: *

安全关键系统集成研制环境ASIDE

提供软件全生命周期研制、管理和审定的综合支持

SA-Covalyzer 软件耦合覆盖分析工具

最大AG平台HOME



在航空航天、核电、轨道交通、汽车电子等高安全领域,对软件测试的充分性提出了明确且严格的要求,包括需求覆盖、结构覆盖、耦合覆盖等方面。其中,不容忽视的是通过软件集成测试实现对软件部件间耦合关系的覆盖,涉及到软件部件间的控制交互(控制耦合)、数据传递(数据耦合)。


如何评估测试对软件部件耦合覆盖的充分性,成为了业界普遍关注的焦点。


航空: DO-178C 对控制耦合与数据耦合 的测试覆盖 要求


DO-178B/C目标A7-8明确要求A、B、C级软件应进行数据耦合和控制耦合测试覆盖分析。




DO-178B中6.4.4.2.c节要求覆盖分析应当确认 软件部件 之间的数据耦合和控制耦合。而DO-178C第6.4.4.2.c则更进一步,明确了该分析应该 结合基于需求的测试 确认测试执行了代码部件之间的耦合关系。


这个澄清提出了新要求,即能够结合基于需求的测试评估部件之间的耦合关系的覆盖程度。工程人员一方面需要适应新的适航要求,确保顺利通过适航审定;另一方面,也需要充分利用合适的工具,在满足适航要求的前提下,提升效率,降低成本。


核电: IEC-60880 对软件部件耦合的测试覆盖要求


IEC-60880第8.2.3节明确指出,应通过模块集成测试来表明所有模块能够正确交互,以实现预期的功能。并在E.4.2.5指出,在集成测试中,每个模块至少被调用一次、每个调用至少被测试一次,以检测模块间不正确的控制流和数据流。




轨道交通: EN50128 对软件部件级测试覆盖的要求


EN50128-2011 Table A.21提出了针对测试覆盖的要求,对于SIL 3和SIL 4要求完成部件级测试覆盖,需要考虑分支、组合条件、数据流、路径等准则。





汽车电子: ISO26262 对软件部件耦合的测试 覆盖 要求


在ISO26262-6 第10章关于软件集成与验证章节中,明确提出应当提供证据表明集成后的软件模块/部件能够满足软件架构中的相应需求。根据10.4.2节 Table 10,软件集成验证的首选方法即为基于需求的测试。


进而在10.4.5节提出,为了评估测试用例的完整性、并表明集成测试的充分性,应当开展软件架构级别的结构覆盖分析。不同于软件单元级的覆盖率准则(语句覆盖、分支覆盖、MC/DC),软件架构级覆盖主要关注软件部件的覆盖、以及部件间调用关系的覆盖。Table 12 列出了软件架构级结构覆盖方法,如下:





从具体实践上,上述内容的两个隐含的要求是:

1) 软件架构的结构覆盖是基于软件部件(完成特定功能的软件子程序)的,而不等价于一个代码文件,或多个代码文件的组合;

2) 软件架构的结构覆盖率是通过基于需求的测试执行获得的,不能仅仅通过使用静态分析方法获得。


现状及问题


目前有少量工具声称能够收集软件架构级的覆盖率。但遗憾的是,这些工具强烈的使用约束大大限制了其实际的工程应用,例如:


软件部件的定义问题


在现有工具中,有的工具默认一个C文件就是一个软件部件;有的工具允许用户把多个C文件组合定义成为一个部件。事实上,一个软件部件不一定是一个C文件,也不一定是多个C文件的组合,而是密切相关、高度内聚的软件功能的组合。


软件部件间的耦合分析不充分


现有工具通常只能实现粗略的耦合分析,如函数调用、全局变量初始化前的读操作等。而实际工程中,部件间的耦合涵盖了更细致、更复杂的内容,如函数调用时的参数类型一致性、数据的读写顺序、数据的数值破坏等等。


无法支持多线程的耦合分析


现有工具往往仅能处理同一线程内的部件间耦合,无法分析跨线程的耦合关系;在面对嵌入式操作系统不同分区间的耦合、不同板卡之间的耦合时,现有工具更是无力应对。


SA-Covalyzer 解决方案


SA-Covalyzer ( S oftware A rchitecture based COV erage an ALYZER )为实现软件架构的测试覆盖分析,提高测试充分性,提供了一套完善的解决方案。


SA-Covalyzer支持准确的软件部件定义,自动识别部件间的耦合关系,推荐适用的覆盖准则,针对覆盖点进行低膨胀率的插桩,在测试过程中收集、累积和统计覆盖情况,对未覆盖到的情形进行辅助分析,并自动生成覆盖分析报告。



软件部件的定义

SA-Covalyzer允许用户以自然而直观的方式,根据软件架构来准确定义软件部件。部件的定义能够精确到功能级别的颗粒度。


耦合关系的识别

定义好软件部件以后,SA-Covalyzer使用专利技术自动识别各个软件部件之间的耦合关系(如调用、读写、写写等)。


覆盖准则定义

针对每一个自动识别出的耦合关系,SA-Covalyzer为其推荐适用的覆盖准则,用户可以基于耦合关系实际的功能特性酌情选用。


源代码插桩

根据耦合分析结果,SA-Covalyzer对源代码进行插桩。基于独有创新技术,SA-Covalyzer插桩膨胀率远低于行业其他产品。


收集覆盖率

SA-Covalyzer使用灵活的方式收集覆盖率,支持自动化测试、手工测试、混合测试。SA-Covalyzer也支持分批次收集覆盖并进行累积。


覆盖结果展示与分析

SA-Covalyzer能够直观地展示测试覆盖结果,以高亮方式指出未覆盖的耦合关系;用户可以对未覆盖耦合点加以评注,或者完善代码或用例,执行回归分析。


覆盖报告生成

SA-Covalyzer会自动生成全面的覆盖分析报告,供用户离线使用。 覆盖分析报告支持用户自定义内容和样式。




支持复杂耦合场景

SA-Covalyzer能够支持跨线程、跨分区(嵌入式操作系统、IMA等)、甚至跨板卡的应用间的部件耦合分析。


工具系列的协同应用

★ SA-Covalyzer与SC-Covalyzer协同,在测试活动中同步收集结构覆盖率和耦合覆盖率;

SA-Covalyzer、SC-Covalyzer、Testomator三方协同,在增量测试中不断的累积结构覆盖率和耦合覆盖率;

SA-Covalyzer与SA-Optimizer协同,优化软件架构,减少部件之间的耦合,提高耦合覆盖的工作效率。



上一篇: SC-Covalyzer 软件代码结构覆盖分析工具


下一篇: SA-Optimizer 软件架构优化工具


上海最大AG平台信息技术股份有限公司 版权所有 沪ICP备13019901号-1 COPYRIGHT © 2017SHAVIATION 邮政编码:201203