ISO26262 - Coverage

上一期我们讲到了ISO26262的相关知识ASIL,相信大家对ASIL有更深入的理解了吧,那我们就一起来看看本周的新内容!大家有没有发现一个现象,就是往往我们知道要过认证,但是在庞大的知识体系下,我们却很难找到我们到底应该怎么去做,那这期就来聊聊过ASIL D对软件部分所要求的 — 覆盖率。

在我们过ASIL等级的时候,ISO26262的指导文件中有对覆盖率的详细要求,从图一中,我们能够很清楚的看到,ASIL C、D等级对Function coverage(函数覆盖率)和Call coverage(调用覆盖率)有++的要求,那你对这两种覆盖率是否了解,是否知道他们的作用?如果你还是有那么一点点不清楚,那阅读完这篇文章,你会牢牢掌握这些关于覆盖率的知识。

 (图一)

我们要了解这两种覆盖率,那么首先我们要从他们的定义入手。从图二中我们可以非常清晰地读懂这两种覆盖率的定义,但是读完之后,大多数人可能读懂了字面意思,碰到具体情况的时候,脑中刚记得的定义又开始模糊了,这个时候我们就需要一些简单的例子,来帮我们巩固这两种覆盖率的相关知识,借着例子,我们也能更快速地了解为什么我们要对这两种覆盖率有要求。

 (图二)

一起来看一下图三中的第一个例子。在这个例子中,我们有三个函数,但是在main函数中,因为if的条件为假,所以function3(4),永远不会执行,通过两种覆盖率的概念我们可以很快的计算出对应的覆盖率数值:

函数覆盖率为100%,因为所有的子函数都至少执行了一次。

调用覆盖率为75%,因为所有调用4次的函数中,function3(4)没有被执行。

所以说,100%的函数覆盖率不意味着100%的调用覆盖率,调用覆盖率能帮助我们发现需求错误,程序错误,死代码等问题。

(图三)

理解了第一个例子,那我们继续来看一看第二个例子。在第二个例子中,代码执行情况又不同了,main函数中的if条件为真,那function1(1),function1(2)一定会执行,但是function3()根本就没有被调用,那我们不难计算出两种覆盖率:

函数覆盖率为66.6%,因为所有的子函数中function3(int c)压根就没执行。

调用覆盖率为100%,因为所有调用2次的函数中,function1(1),function(2)都被执行了。

所以例子二能说明,100%的调用覆盖率不意味着100%的函数覆盖率,函数覆盖这个指标能帮助我们发现多余的未使用的函数,进而优化我们的代码。

(图四)

这两个例子虽然比较简单,但是还是大家需要仔细理解的,这样才能对这两种覆盖率有较深的掌握。讲完这些基础概念,那下一个难题就是如何去满足这些覆盖率要求,Parasoft的C/C++test就是我们手中强有力的“武器”了,C/C++test支持最全的九种覆盖率,用户可以任意选择,同时支持多种嵌入式环境,用户再也没有必要在选择工具上苦恼了,而且C/C++test在工具的使用方面也是非常便捷的,可以通过界面的点击操作,就能获取到您需要的覆盖率了,同时生成的报告也直接可以作为ISO26262的认证证据。

 这期读完之后,你了解了这两种覆盖率吗?如果还没有掌握好,要再多读两遍哦!下期内容预告,我们讲讲Verfication&Validation,也就是大家常听到的双V,这个双V的区别在哪呢?我们如何做好这个要求呢?

我们下期继续。

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值