这周新一篇技术文章来袭,上周我们对故障注入测试(Fault Injection Test)方法进行了初步的了解,本周要分享的技术文章是《故障注入测试(Fault Injection Test)评价类型说明》,将针对故障注入测试进行更深层的说明。


故障注入测试是指在系统正常运转期间,强制注入人为的系统缺陷,检测测试系统对异常情况的反应(强韧性)的方法。在上一篇的技术文章中我们已经介绍了故障注入测试的基本信息,本次将对故障注入测试评价类型进行说明。


故障注入测试的评价类型大致可分为输入/输出功能安全评价和控制功能安全评价。 输入/输出功能安全评价是针对输入/输出数据时可能发生的Fault进行评价的方法;控制功能安全评价是对控制器工作时可能出现的缺陷(Teak, memory等)进行评价的方法。 下面我们来详细了解一下这两种评价方法。

输入/输出功能安全评价

1.Filtering

Filtering方法是确认输入的信号在一定时间内是否保持特定值的一种方法。通过观察输入信号变化的方法,来确认在测试时定义的数据是否正常输入,提取持续输入的数据的平均值,并将输入的值依次与之前的值作比较。如果维持比较的数据,则反映维持值,并可用于控制运算。此时,通过Filtering方法暂时输入的数据与持续输入的数据相异时,会将此数据视为错误并忽略。通过Filtering技术进行故障注入测试时,可检测此错误,从而免受暂时输入的非正常数据的影响,以确保控制器系统的安全性。

2.Complementary Data R/W

Memory注错测试 错误注入测试_故障注入


这是一种为了检测出因内存区域错误导致数据产生变化的方法。由于外部因素导致内存区域发生变形时,与特定区域相邻的内存区域的数据会受损。为感知这一现象,通过检查存储在不同内存空间内的数据和补充值,可以确认数据的完整性。 内存的错误在任何地方都可能发生,但如果用于运算的输入数据受损,则可能会对控制器动作造成严重错误,因此要在数据传入阶段应用此方法进行验证。评估确认是否对超出输入或输出数据范围的数据进Range Check检测。

控制功能安全评价

1.Preiodic Task Check

这是为了检测以一定周期执行的任务的驱动顺序错误而采取的方法。将任务在规定执行时间之前执行时定义为任务过度执行,任务执行时间超出设计时考虑的标准时,将其定义为任务执行延迟。这样的任务执行错误是通过watchdog功能感知到的,Watchdog对每个周期执行的任务进行监视,如果感知到比周期更频繁执行或超出执行时间的任务,则通过OS内部定义的错误处理函数进行相应错误内容的处理。脱离周期的任务对整个系统产生严重影响时,应通过系统Reset进行处理,其影响仅限于发生错误的任务时,可仅对相应任务进行Reset,恢复其功能。通过Preiodic Task Check方法,在故障注入测试中可延长任务的执行时间或制造过度执行的情况,从而评价系统能否正常感知。

2.RAM、ROM ECC(Error Check and Correct) Check

检查用户以读/写访问内存区域的值是否被改变为与存储值不同的值。此时如果因感知错误而发生1bit变更或2bit变更,则根据各MCU的ECC处理方式复原bit或告知用户错误。用于车载控制器的MCU发生1bit变更时可自行恢复bit,2bit发生变更时可告知用户存在错误,以便对感知的错误进行reset等处理。通过RAM、ROM ECC(Error Check and Correct) Check方法,在故障注入测试中发生此类问题时,可感知并评价ECC Check 功能是否正常工作。

3. 堆栈监控

Memory注错测试 错误注入测试_故障注入_02


在执行时间内,检查system是否超过设计的堆栈区域使用的方法。在故障注入测试中,在给定的堆栈区域中分配最大值,发生溢出时,评价是否正常感知及处理。通过堆栈监控方法,在故障注入测试中堆栈溢出时,可通过重置任务或OS来处理。

如今不论是对已体现的功能进行测试的方法,还是对可预见的缺陷提前预防的故障注入测试方法,大家的关注度都在日渐提高。
故障测试方法除此之外还可以无限扩展,青岛硕索福特自主研发的工工具也支持可以确保安全性的故障注入测试。我们的故障注入测试工具FIT可以帮您实现高品质低费用的软件故障自动化注入测试,自动生成测试结果报告,帮您满足ISO 26262故障注入测试标准。