ThreadingTest针对车载软件测试ISO26262标准的解决方案

本文主要是介绍ThreadingTest针对车载软件测试ISO26262标准的解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

随着汽车行业的迅速发展,汽车电子电器E/E系统在汽车中的作用不断提高,ECU开发所占用的时间和成本也越来越高。与此同时,越来越多的电子控制系统(例如车身稳定控制系统ESP,防抱死制动系统ABS,自适应前照明系统AFS等)具有与安全相关的功能,因此对ECU的安全要求也越来越高。为了减少产品的开发时间和成本,降低由于安全问题而导致的维护甚至召回的风险,越来越多的整车厂和供应商开始重视汽车领域的功能安全问题 ,ECU软件功能安全的问题也成为汽车行业迫切需要解决的问题,车辆功能安全标准ISO 26262就在这样的环境和需求下应运而生,并于2011年11月正式发布第一版本,该标准是当前汽车业中最流行、最复杂、也是最重要的一份标准。

    ISO 26262的目标是通过避免汽车E/E 系统故障行为可能导致的危害来提高E/E系统的功能安全。ISO 26262采用车辆安全完整性等级(ASIL)来判断系统的功能安全程度,ASIL由ASIL A(最低)、ASIL B、ASIL C及ASIL D(最高)四个等级组成,ASIL等级越高表示系统的功能安全评估越严格,相应的表示系统正确执行安全功能,或者说的避免该功能出错的概率越高,即系统的安全可靠性越高。

 

什么是ISO 26262

国际标准化组织文件第26262号(ISO 26262)为机动车辆开发和测试紧急安全电子系统提供了一个过程框架和程序模型。它是国际电子委员会文件61508(IEC 61508)的派生,其目的是为了适应汽车行业中遇到的挑战。初稿在2009年7月公开刊登,并在2011年发行最终版。标准已经被OEM厂商部分地采用。

基于V模式的ISO26262软件测试生命周期

    如图所示,基于V模式的ISO 26262-6软件测试生命周期可以划分为五个阶段:


静态分析需求和功能需求:在软件级产品开发初始化阶段和软件安全需求规范制定阶段确定了一些基本的嵌入式软件静态分析需求和功能需求,这部分内容是以后设计和测试的基础;

架构验证:在软件架构设计阶段,我们可以使用人工分析的方式来验证和测试软件架构层的内容,但是有条件的话最好使用合适的架构设计工具,在设计的过程中同时进行架构验证;

静态测试:在软件单元设计和实现阶段同时进行静态测试,可以使用开发辅助工具来进行静态测试,这样不必因为静态测试的活动而改变开发流程。

动态测试:在软件单元测试阶段以及软件集成和测试阶段,使用合适的动态测试工具进行动态单元和集成测试,                                                                                                                                                                                                                                                                                                                                                                             

功能验证:在软件安全需求验证阶段,要根据ISO 26262-6的要求进行功能验证,包括进行ECU网络环境测试和实车测试,必要的时候进行HIL测试。

      因为在静态分析需求中所需要满足的方法基本上都是属于静态测试的范畴的,因此我们以ASIL A为例,将软件测试内容分为静态测试、动态测试和功能验证三部分(注:架构验证暂时未包含在内),见下表。


ThreadingTest测试工具介绍

ThreadingTest(简称“TT”)是创新型的系统级白盒测试工具和数字化软件测试装置,它的设计基于融合了4项国家发明专利而打造成的软件测试行业的革新性测试理念-“穿线测试”。TT首次将黑盒测试与白盒测试过程以及方法进行完美的融合,采用ISO26262标准的打桩方式(保证打桩的代码和正常的代码的执行功能是一致的),以黑盒的测试过程及方法,产生白盒测试的数据,真正将软件测试带入数字化测试时代。除了支持传统的JavaEE应用,同时TT也是全球首款商用级别的移动端白盒测试工具,可以对各种类型的移动类应用进行测试。

TT的所有特性基于对代码、测试等的深度量化分析和智能计算,TT除了可以进行白盒测试外,也可以为软件的安全性测试提供全过程、系统性的方法支持,TT可以在安全性测试黑盒方法的过程中,从辅助分析,自动诊断,快速定位等多个层面提供软件安全性测试解决方案。TT提供的功能远超越了传统安全性白盒测试的功能范畴,配合流行Fuzzing安全性测试方法,可以将安全性测试的效率、质量进行大幅度的提升。

TT数字化数据测试方法,完美结合ISO 26262功能安全标准的测试系统方式,支持在单元、集成、系统等多个环节分开进行或实现测试从需求到上线整个测试数字一体化管理。

TT对标准的静态测试解决方案

静态测试内容里面要求采取多种的测试方法,例如‘低复杂度的强制要求’一般需要通过满足一定的度量指标来实现,度量指标包括圈复杂度、嵌套深度等等,而‘使用语言的子集’在汽车行业一般选择MISRA-C,通过强制使用编码规范来排除未定义行为或者实现定义行为等危险用法,除此之外静态测试还要求一些其它的测试方法,例如如果要满足更高的安全完整性等级的话,静态测试内容还需要包括运行时错误检测等,一般需要使用可靠性测试性的测试。

    在静态测试中,静态分析主要包括规则检测和质量度量;可靠性测试主要进行运行时错误的检测。

    上面提到ASIL A中针对编码准则的需求以及其他ASIL等级所强烈推荐的例如使用风格指南等需求都是不需要运行源程序来检测,因此都属于静态分析的范畴,虽然这些需求也可以通过人工检查的方式实现,但一个好的静态分析工具几乎可以自动化地执行满足这些相关需求。

TT针对静态分析的需求,提供了可以自动化地执行码的静态分析;提供项目、文件和函数质量度量;提供方便快捷的代码结构生成控制流程图以及调用关系,高亮显示代码结构并生成报告文档等。

TT可视化的代码结构分析
函数调用图:

TT展示一系列关于软件系统的整体信息。如:类或者函数以及类的成员函数的总数目,调用关系或者类的继承关系的深度、层次结构、语句总行数和总体复杂度,整体的测试覆盖率(分累积的结果和最后一次运行的结果,可选择语句、分支和MC/DC测试覆盖率标准)、整体的性能分析结果以及各模块所占的用时比例、以及全局变量和静态变量的分析结果等;同时,又给出了各个模块具体的信息,包括:各模块的源码行数和复杂度、测试覆盖率分析结果、扇入扇出信息,高亮显示一个模块及其所有相关的模块,或者以任何一个模块为根生成局部子树等。

函数调用图的特性:

TT函数调用图采用了超高速图形绘制技术,不光支持图形的大小缩放和平滑移动,并可按照自己的需求,进行自动绘制类分组聚集布图以及函数调用关系布图,更能实现子树逐级展开和下钻,达到完美结构清晰绘制。

TT会在函数调用图上会展示当前的覆盖率信息, 以及覆盖率与函数相关信息,并通过选择图中任意一个模块而追溯所有调用它的路径和相关模块以及被他调用的模块,达到修改模块不一致性缺陷的预防等。

TT为了使得团队的各个组群或者个人可以方便的得到相关的局部信息,在函数调用图中设计了任何一个模块为根生成局部子图,并且生成子图的相关信息,为了发挥更好的可视化效果,TT还设计了各模块与逻辑框图的链接:完成宏观(函数调用图)与微观视图(控制流程图)的结合。


函数调用聚集图:

以类对函数进行分组,通过图表把同一类的函数聚集在一起进行展示。


类继承图:

显示的是当前项目所有类的集成和派生关系。


控制流程图

通过函数的if-else,while,for,do-while,switch-case等控制语句结构绘制组成的流程关系的展示图;配合下方的源代码展示界面,显示能清晰查看函数内部运行逻辑和结构、条件的真假运行状况、MC/DC的满足率等。

特性:

TT可视化的控制流程图,对主要的控制逻辑语句对应有清晰的图元显示,并支持嵌套显示以及串联显示。当点击控制流图的每个图元可以清晰看到对应的代码段以及代码段的执行次数、覆盖率情况。当条件语句成为选中热点后,可以清楚的展示条件语句的各个子条件的各种组合执行的真假情况。

TT控制流程图为了达到更加的展示效果,支持了缩略图的显示,可平滑的进行缩放以及全屏显示,并实现函数调用图相互自动链接、追溯、转换等功能。


函数列表:

针对整个程序的所有函数,按照各种覆盖率、复杂度进行排序,帮助用户能快速的定位查看所有的函数信息,并通过和函数调用图、控制流程图、覆盖率可视化图以及累计覆盖率图的快速切换,使得用户在查看和解决实际问题上提供了方便。

使用ThreadingTest进行代码复杂度分析和安全检查

复杂软件不稳定,也经不起不可预测的行为。所以,我们努力使软件的复杂度变小。如果有条件采用某种自动化工具,可以通过工具对软件设计或/和代码进行控制,用图形化的方法反映出软件结构中的控制流和数据流,通过连结数/调用数、节点数、嵌套深度等这样一些结构关系的检查,获得复杂度的度量,将会获得很好的效果。

TT在对代码的分析过程中,TT可以直接给出代码复杂度的计算结果,通常复杂度越高的软件模块更容易引入缺陷,也更加容易引入安全性问题,高度复杂的数据结构难以彻底测试,可以采用TT等复杂性评估技术来标示出需要进一步改进的区域,以便提升软件的安全性。



TT对标准的动态测试解决方案

以前的动态测试大部分是通过人工的方式实现,但是由于动态测试巨大的工作量,以及测试用例难以重用,测试覆盖率无法计算的困难,因此在测试解决方案中还是需要选择合适的动态测试工具来执行软件单元测试。又因为ISO 26262对需求和测试有可追溯性的要求,所以最好测试工具可以和相关需求管理工具集成,例如能够从需求管理工具中将需求导入,再将测试用例和需求链接起来,并且实现数据的双向同步。

TT针对静态分析的需求,采用了双向追溯专利技术+API接口开放结合各类项目管理工具,把测试的覆盖率、代码、测试用例、测试需求、BUG进行有效的链接。

TT双向追溯专利技术--测试用例(功能)与源代码关系的自动生成

通过ThreadingTest运行测试用例,采用TT百万图元级别的超高速图形绘制技术展示图,对各种大、中、小型软件进行功能逻辑实现分析,实现测试用例与被测源码间相互追溯。该追溯技术方便了用户查看和设计测试用例通过基于双向追溯的实测用例分析,测试人员可以快速追踪修改代码的波及范围,针对已修改的模块和波及到的模块有针对性的补充测试用例,把回归测试的成本降至最低。

正向追溯技术:

通过点击某个测试用例,追溯到该用例所对应的函数控制图,并展示其测试的逻辑和结构,点击其中某个函数,可以进行该函数的覆盖率、复杂度、代码、控制流程图等信息查看,帮助测试人员通过简单查看发现测试遗漏,并且有利于开发人员直接定位测试发现的缺陷,测试和开发之间的高效互动。想象下,当一个核心工程师离职时,他所带走的是对整个程序的理解及开发思路,交接的工程师需要花费大量的时间去理解,TT通过正向追溯,可以使交接的工程师能通过测试用例所展现的程序逻辑和结构等信息,快速的掌握和理解程序的开发思路。


逆向追溯技术:

通过点击函数列表的某个函数,追溯到该函数所对应的函数调用图、控制流程图以及源码,点击其中的源码,反向追溯到该源码所执行过的测试用例列表。想象下当一个程序需要进行频繁更改升级时,这时对测试人员的压力是无比巨大的,测试人员无法精确到开发人员所更改的代码是否影响到其它的功能,只能对程序进行重新的测试,但通过逆向追溯,测试人员很明确的看到更改的代码所影响到的测试用例表,通过累积覆盖率技术,大大缩短了回归测试的时间。


大部分软件的安全测试都是依据缺陷空间反向设计原则来进行的,即事先检查哪些地方可能在安全隐患,然后针对这些可能的隐患进行测试。因此,反向测试过程是从缺陷空间出发,建立缺陷威胁模型,通过威胁模型来寻找入侵点,对入侵点进行已知漏洞的扫描测试。好处是可以对已知的缺陷进行分析,避免软件里存在已知类型的缺陷,但是对未知的攻击手段和方法通常会无能为力。TT的能够追踪和分析在正反向安全测试过程中,直接给出安全测试过程中程序的执行逻辑分析,结合正常的功能执行逻辑,可以给出详尽的被测试程序对于测试过程中的模拟攻击的免疫和感染程度。当有攻击行为时候,通常程序的执行路径和方式会变得异常诡异,即使在实验室的测试环境,可能因此对暴露在黑客手段下的程序诡异行为也很难分析出更好的防范手段,需要具备一定的漏洞分析能力来研究漏洞,TT会记录暴露在黑客攻击行为下的被测程序的执行细节,包括方法执行次序,条件真假,以及程序段执行序列信息,这样就可以帮助安全测试和开发人员快速理解程序存在的攻击弱点是如何被黑客利用的,并辅助快速的修复该安全问题。

TT的覆盖率技术展示

TT拥有多种测试覆盖率分析结果报告。最高支持ISO26262指定MC/DC欧美民用航空器强制要求遵守该标准。



TT的BUG管理

TT的API接口开放,可以和任何缺陷管理工具或项目管理工具进行集成,通过交互进行BUG和测试用例、测试人员、测试代码等之间的多维度对接,形成各类测试报表。



TT覆盖率可视化专利技术

TT支持各种覆盖的计算的可视化,对每种覆盖率的计算结果给出可视化的直观结果展示,覆盖率可视化界面对以函数为单位的模块进行覆盖数据和应统计数据给出图形化展示,测试人员通过界面的统计数据可以直观得出覆盖率的计算值。避免测试覆盖率计算遗漏和不准确的困难。


ISO26262标准的实车测试

不论是代码测试、模型测试还是网络测试或者HIL测试,基本都是偏研发的测试,在研发后期还需要实车测试。传统实车测试需要专门驾驶员和一些测试人员到现场进行测试并采集数据,而现在比较流行的远程测试则是通过在车上加装一些远程监控设备,将测试系统在测试过程中产生的数据通过远程传输的方式发送到数据后台,并且在测试过程中不仅可以记录测试数据,还能根据测试的要求远程下载测试任务,例如更新需要采集的数据等。

TT针对实车测试解决方案

 TT最新的示波器专利技术,不光拥有采集数据传输的功能,同时支持离线测试的方式,测试人员甚至可以边在行驶过程中操作智能驾驶系统的同时,通过TT的软件示波器即时地获得测试数据和测试结果。测试人员可以在移动的车上进行测试后,然后将一整天获得的测试数据拿回软件平台中进行分析。可以对源代码进行很好的保护以及网络传出的安全的防护,即在户外进行测试的时候并不需要系统的源代码,在需要进行数据展示的时候,仅需要将测试获得的数据拿回到研发实验室进行关联展示和分析即可。

TT示波器专利技术

TT率先将引入的测试示波器概念,它不光具备传输测试数据的功能,更具有安全检测的功能,在实际测试的过程中,可以实时的看到从程序中各种逻辑执行的速率、频率等信息,测试人员可以从传统的对被测应用的黑盒子测试(仅能看到功能的反馈无法看到程序内部的反馈)进而转换成为类似于对于硬件测试的示波器一样,能够对整个测试过程的关键测试数据进行实时的分析和查看。

以及测试进度的调整。



通过示波器,对安全性测试过程中程序在攻击情况下的响应情况进行分析

TT示波器的创意来自于电气设备测试中的电子示波器,它能够精准的、实时的捕捉到程序运行是的各种特性运行指标,TT通过实时的单位时间内程序执行块、条件数、函数的数量等指标图形,分析出来程序的各种运行特性以及运行异常。针对于安全性测试,它可以结合黑盒安全性测试工具,在安全性测试工具进行例如渗透性测试等过程中,实时给出程序的响应的情况。例如在进行代码的渗透性测试过程中,通过TT示波器我们可以展示如下的数据,用来辅助分析渗透性测试的结果:

1. 被测试程序是否会因为攻击行为,而进行持续大量的运算,例如面对DDOS攻击等情况下的反应;

2. 被测试程序在各种攻击行为时,是否会出线瞬时的、或者永久性的拒绝服务(DDos),DDos攻击会通常会表现为部署被测试应用服务器额CPU、内存、网络等资源的消耗,从程序内部角度,将会有一些函数和方法会被密集的非常规调用,这些TT示波器将会进行详细的分析程序执行序列流,以便于快速确定、排查和修复问题;

3. 在模拟非授权攻击的情况下,在没有正常的用户权限的情况下,其后台代码是否会被执行到,通过观察示波器的函数执行的堆栈序列可以检出本类问题。

 

通过示波器,对安全性测试过程中帐号权限进行检测

TT示波器可以对帐号权限进行精准的检测,TT示波器的指标本身具有等价类划分功能,他们可以用来精确的分析程序对于各种用户权限是否有正确处理:

通过运行事先准备好的具有各种权限类别的用例,TT示波器通过用例运行监控数据,会对这些用例进行等价类划分,其原理是软件通常会针对不同的用户执行不同的逻辑,不同的逻辑就会执行程序内部走不通的代码序列,并进而导致TT示波器的三个指标会发生变化,通过分析各个用例TT示波器给出的运行指标,就可以确定,用户权限的代码处理是否存在问题,例如分析出本不应该具有相同权限的用户,示波器却给出了相同的执行指标。本应该相同权限的用户,示波器却给出了不相同的执行指标等安全性风险。

通过示波器,检测多线程程序的运行特性及安全

对于存在多线程操作的软件中,TT示波器可以对多线程的运行情况精细分析,多线程通常会比较容易出现资源争用甚至导致死锁等情况发生,TT示波器可以对线程的运行进行分析,当线程发生死锁的情况下,TT示波器会给出直观的图形给予显示。同时也可以给出在处理大数据量处理情况下,线程数量和程序处理数据吞吐速率的比例关系。

TT测试信息统计报表

在ISO26262中,危险分析和风险评估以及测试进度管理来的至关重要,TT为了让测试负责人时刻的把握整个测试进度,推出了详细的时间报表和综合报表,测试负责人可以更具自己所需来查看,了解整个测试状况,避免测试风险以




开发一个符合ISO26262标准的系统是一件不容易的事情,需要组织在一个深度技术储备和研发的基础上,其核心的白盒测试技术亦长期被国外厂商所垄断,同时还需要在核心技术基础之上建立一个完整的工程技术解决方案,才有可能满足ISO26262产品的需求,基于此,ThreadingTest的车联网软件测试解决方案的出现为国内车载系统研发团队和整车厂商提供一个很完善的满足ISO26262的系统评测平台。




这篇关于ThreadingTest针对车载软件测试ISO26262标准的解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/429683

相关文章

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

C 标准库 - `<float.h>`

C 标准库 - <float.h> 概述 <float.h> 是 C 标准库中的一个头文件,它定义了与浮点数类型相关的宏。这些宏提供了关于浮点数的属性信息,如精度、最小和最大值、以及舍入误差等。这个头文件对于需要精确控制浮点数行为的程序非常有用,尤其是在数值计算和科学计算领域。 主要宏 <float.h> 中定义了许多宏,下面列举了一些主要的宏: FLT_RADIX:定义了浮点数的基数。

js异步提交form表单的解决方案

1.定义异步提交表单的方法 (通用方法) /*** 异步提交form表单* @param options {form:form表单元素,success:执行成功后处理函数}* <span style="color:#ff0000;"><strong>@注意 后台接收参数要解码否则中文会导致乱码 如:URLDecoder.decode(param,"UTF-8")</strong></span>

明明的随机数处理问题分析与解决方案

明明的随机数处理问题分析与解决方案 引言问题描述解决方案数据结构设计具体步骤伪代码C语言实现详细解释读取输入去重操作排序操作输出结果复杂度分析 引言 明明生成了N个1到500之间的随机整数,我们需要对这些整数进行处理,删去重复的数字,然后进行排序并输出结果。本文将详细讲解如何通过算法、数据结构以及C语言来解决这个问题。我们将会使用数组和哈希表来实现去重操作,再利用排序算法对结果

UE5 半透明阴影 快速解决方案

Step 1: 打开该选项 Step 2: 将半透明材质给到模型后,设置光照的Shadow Resolution Scale,越大,阴影的效果越好

MySQL主从同步延迟原理及解决方案

概述 MySQL的主从同步是一个很成熟的架构,优点为: ①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力; ②在从主服务器进行备份,避免备份期间影响主服务器服务; ③当主服务器出现问题时,可以切换到从服务器。 相信大家对于这些好处已经非常了解了,在项目的部署中也采用这种方案。但是MySQL的主从同步一直有从库延迟的问题,那么为什么会有这种问题。这种问题如何解决呢? MyS

安装SQL2005后SQL Server Management Studio 没有出来的解决方案

一种情况,在安装 sqlServer2005 时 居然出现两个警告: 1 Com+ 目录要求 2 Edition change check 郁闷!网上说出现两个警告,是肯定装不成功的!我抱着侥幸的态度试了下,成功了。 安装成功后,正准备 “ 仅工具、联机丛书和示例(T)” 但是安装不了,他提示我“工作站组件”安装过了对现有组件无法更新或升级。 解决办法: 1 打开“控

《C++标准库》读书笔记/第一天(C++新特性(1))

C++11新特性(1) 以auto完成类型自动推导 auto i=42; //以auto声明的变量,其类型会根据其初值被自动推倒出来,因此一定需要一个初始化操作; static auto a=0.19;//可以用额外限定符修饰 vector<string> v;  auto pos=v.begin();//如果类型很长或类型表达式复杂 auto很有用; auto l=[] (int

新一代车载(E/E)架构下的中央计算载体---HPC软件架构简介

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。 无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦躁、焦虑、毁掉你本就不多的热情和定力。 时间不知不觉中,快要来到夏末秋初。一年又过去了一大半,成

一些数学经验总结——关于将原一元二次函数增加一些限制条件后最优结果的对比(主要针对公平关切相关的建模)

1.没有分段的情况 原函数为一元二次凹函数(开口向下),如下: 因为要使得其存在正解,必须满足,那么。 上述函数的最优结果为:,。 对应的mathematica代码如下: Clear["Global`*"]f0[x_, a_, b_, c_, d_] := (a*x - b)*(d - c*x);(*(b c+a d)/(2 a c)*)Maximize[{f0[x, a, b,