立即登录

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

*为必填项注册新会员

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

立即登录

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

*为必填项找回密码

  • 注册邮箱:

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

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

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

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

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

您的位置: 首页 > pk10官方 > SA-Covalyzer 软件耦合覆盖分析工具

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


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


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


航空: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 (Software Architecture based COVerage anALYZER)为实现软件架构的测试覆盖分析,提高测试充分性,提供了一套完善的解决方案。


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


软件部件的定义

SA-Covalyzer允许用户以自然而直观的方式,根据软件架构来定义软件部件。部件的定义支持“By File”和“By Function”两种粒度。


耦合关系的识别

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


覆盖准则定义

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


源代码插桩

根据耦合分析结果,SA-Covalyzer对源代码进行插桩。SA-Covalyzer同样使用最新的专利技术对源代码进行低膨胀率插桩。


收集覆盖率

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


覆盖结果展示与分析

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


覆盖报告生成

SA-Covalyzer会自动生成全面的覆盖分析报告,供用户离线使用。






上海爱韦讯信息技术股份有限公司 版权所有 沪ICP备13019901号-1 COPYRIGHT 2017SHAVIATION 邮政编码:201203