基于图的MC/DC最小测试用例集快速生成算法

合集下载

基于DO-178C机载软件验证过程的研究

基于DO-178C机载软件验证过程的研究

基于DO-178C机载软件验证过程的研究发布时间:2023-02-22T02:56:10.592Z 来源:《中国科技信息》2022年19期作者:冯义飞荣华[导读] 本文通过对RTCA DO-178C标准机载软件生命周期过程的研究冯义飞荣华中电科航空电子有限公司四川成都 610000摘要:本文通过对RTCA DO-178C标准机载软件生命周期过程的研究,分析了软件验证过程需要开展的活动,并提出了相应的实施方法,对后续机载软件研制过程中如何开展软件验证提供了参考。

关键字:DO-178C软件生命周期软件验证方法软件验证活动Research on Software Verification Process of DO-178CFengyifei Ronghua(CETC Avionics Co., Ltd., Chengdu, Sichuan 610000)Abstract:With the research of the airbornesoftrware life cycle process which focus on DO-178C standard, this paper analyze the software verification activities and the verification method.It will provide referrence for the software verification in the subsequent onboard software development process.KeyWord:DO-178C software life cycle, software verification method, software verification activies1概述随着我国民机的发展,机载软件的验证也变得越来越重要,为了满足适航标准要求,机载软件验证活动则需要基于DO-178C标准开展。

汽车电子软件开发流程 ISO 26262说明书

汽车电子软件开发流程 ISO 26262说明书

符合ISO 26262的汽车电子软件开发流程董淑成**************************MathWorks中国ISO 26262(2011)高完整性软件开发标准和基于模型的设计01219901995200020052010基于模型设计的应用标准生效的年份DO-178B (1992)NASA-GB-8719.13(2004)IEC 61508(1998)DO-178C(2011)IEC 61508(2010)EN 50128(2001)EN 50128(2011)IEC 61511(2003)软件开发标准里出现基于模型的设计为什么?大纲▪ISO 26262软件开发项目的启动▪符合ISO 26262的软件开发过程软件开发ISO 26262定义的软件开发过程系统集成和测试系统设计软件需求验证软件集成和测试软件单元测试软件单元设计及实现软件需求定义软件架构设计系统测试软件测试软件测试软件测试设计验证设计验证设计验证软件开发ISO 26262的软件项目启动系统集成和测试系统设计软件需求验证软件集成和测试软件单元测试软件单元设计及实现软件需求定义软件架构设计系统测试软件测试软件测试软件测试设计验证设计验证设计验证1.软件开发计划2.软件验证计划3.编程、建模语言的选择4.编码、建模标准5.工具的选择6.工具应用指南建模/编程语言的选择及相关标准▪建模或者编程语言的选择标准–明确的定义–支持嵌入式实时软件和运行时错误处理–支持模块化、抽象及结构化▪语言本身不能涵盖的上述标准应通过相应的指导或开发环境涵盖TopicsASILA B C D 1a Enforcement of low complexity++++++++ 1b Use of Language subsets++++++++ 1c Enforcement of strong typing++++++++ 1d Use of defensive implementation technique O+++++ 1e Use of established design principles+++++ 1f Use of unambiguous graphical representation+++++++ 1g Use of style guides+++++++ 1h Use of naming conventions++++++++▪通常,汽车电子软件选择C语言–基础软件手工编写C代码–控制策略软件通过Simulink建模并自动生成代码C代码•建模/编码标准要涵盖的内容Simulink/Stateflow建模标准▪汽车行业建模标准(MAAB)–专门为汽车行业Simulink用户制定▪高完整性系统建模标准–专门为民航、火车、汽车等高完整性系统建模制定设计工具/验证工具的选择 工具的分类及资质审核TI 2TI 1TD 3TD 1TD 2TCL 3TCL 2TCL 1工具错误的检测工具置信水平高中无/ 低增加审核需求工具的影响ASIL 为TCL2级的资质审核无需额外的资质审核为TCL3级的资质审核工具分类工具资质审核UC 1..n 软件工具有引入错误或者不能检出错误的可能工具的功能/用例TÜV SÜD认证的工具▪Embedded Coder™功能:生产针对嵌入式优化的C和C++代码▪Simulink® Verification and Validation™功能:验证模型和模型生成的代码▪Simulink® Design Verifier™功能:定位设计错误,生成测试用例,并根据需求对设计进行验证▪Polyspace® Client™ for C/C++功能:证明源代码没有运行期错误▪Polyspace® Server™ for C/C++功能:在计算机集群执行代码验证并发布度量开发工具的应用指南▪除了选择开发工具之外,还要提供开发工具的应用指南▪Embedded Coder等工具具有非常详实的用户手册需求分析•模型架构•可实现性•可测性•可追溯•可配置模型建立•建模语言•建模标准•模型复杂度•平台化开发模型验证•建模标准•模型评审•形式化方法验证•功能测试代码实现•数据管理•等效性测试•代码验证•代码集成需求分析•模型架构•可实现性•可测性•可追溯•可配置模型建立•建模语言•建模标准•模型复杂度•平台化开发模型验证•建模标准•模型评审•形式化方法验证•功能测试代码实现•数据管理•等效性测试•代码验证•代码集成汽车电子软件的现状和复杂软件开发的困境▪GM汽车上的代码量▪软件工程师的工作效率▪解决复杂软件开发效率低下的途径–模块化开发模块化的原则和目标▪模块划分的一般原则–从功能上–高内聚–低耦合▪模块划分的目标–简化设计–便于分工–便于测试–便于后期维护▪In order to avoid failures resulting from high complexity, the software architecture design shall exhibit the following properties,–Modularity;–Encapsulation; and–Simplicity.ISO 26262软件架构设计原则▪软件架构设计原则MethodsASILA B C D1a Hierarchical structure of software components++++++++ 1b Restricted size of software components++++++++ 1c Restricted size of interfaces++++ 1d High cohesion within each software component+++++++ 1e Restricted coupling between software components+++++++ 1f Appropriate scheduling properties++++++++ 1g Restricted use of interrupts+++++软件的层次化结构设计▪模块如何划分–从功能上划分组件▪以发动机为例,分为:点火、进气、油量计算、怠速、巡航等▪模型实现上model reference发动机控制点火控制进气计算燃油控制怠速控制巡航控制其他–对复杂组件进一步划分为单元模块▪以发动机的怠速控制为例,分为暖机怠速、闭环速度控制、扭矩请求等单元▪模型实现上model reference系统级组件级单元级单元模块的设计不建议使用Model Reference.基于模型的嵌入式软件开发需求分析•模型架构•可实现性•可测性•可追溯•可配置模型建立•建模语言•建模标准•模型复杂度•平台化开发模型验证•建模标准•模型评审•形式化方法验证•功能测试代码实现•数据管理•等效性测试•代码验证•代码集成Simulink建模语言▪使用建模语言的子集▪Simulink和Stateflow之间的选择–如果算法是复杂的逻辑运算,使用Stateflow;–如果算法主要是数据运算,使用Simulink;▪Stateflow的flow chart和state chart之间的选择–如果算法本质上是计算工作状态或者离散状态,使用state chart;–如果算法本质上是if-then-else结构,使用flow chart或者真值表;ISO 26262软件单元的设计原则▪Example: Parallel states should not appear at the top level of a state-chart.--Misra Modeling GuidelineMethodsASILABCD1a One entry and one exit point in subprograms and functions++++++++1b No dynamic objects or variables, or else online test during their creation +++++++1c Initialization of variables++++++++1d No multiple use of variable names+++++++1e Avoid global variables or else justify their usage ++++++………1h No hidden data flow or control flow +++++++1jNo recursions++++++▪软件单元的设计和实现原则模型复杂度监测对单元模块进行复杂度监测–Model advisor–圈复杂度Simulink模型的平台化开发▪Model Variants–通过配置不同的参数选择不同的被引用模型–比如,K_Param== CLASS_A,选择Model_A.mdl;K_Param== CLASS_B,选择Model_B.mdl–支持生成条件编译的代码▪System Variants基于模型的嵌入式软件开发需求分析•模型架构•可实现性•可测性•可追溯•可配置模型建立•建模语言•建模标准•模型复杂度•平台化开发模型验证•建模标准•模型评审•形式化方法验证•功能测试代码实现•数据管理•等效性测试•代码验证•代码集成软件开发ISO 26262定义的软件开发过程系统集成和测试系统设计软件需求验证软件集成和测试软件单元测试软件单元设计及实现软件需求定义软件架构设计系统测试软件测试软件测试软件测试设计验证设计验证设计验证MAAB及相关规范的检查▪Model Advisor实现建模规范检查▪定制检查集▪定制检查项模型评审▪模型和需求的双向追溯–模型→需求–需求→模型▪Simulink Report Generator生成报告–为非Simulink用户生成报告▪Simulink Report Generator实现不同版本模型比较使用Simulink Design Verifier检查逻辑错误▪设定生成测试用例目标为MC/DC100%覆盖▪生成测试用例▪逻辑错误导致无法生成100%覆盖的测试用例,并提示错误逻辑使用Simulink Design Verifier检查数据错误▪通过算术运算分析定位错误–数据溢出–被零除▪证明没有错误的运算演示Simulink Design Verifier检查错误单元模块的功能测试▪仿真测试▪覆盖率分析模型测试的覆盖率要求▪对单元软件测试的结构覆盖率要求–覆盖率达到分支覆盖率100%–MC/DC 要求▪对软件架构测试的覆盖率要求MethodsASILABCD1a Statement coverage ++++++1b Branch coverage+++++++1cMC/DC (Modified Conditional/Decision Coverage)+++++MethodsASILABCD1a Function coverage ++++++1bCall coverage++++++模型的集成测试▪模型的组件级集成测试▪模型的系统级测试–模型在环测试–快速原型▪不同组件之间的接口测试▪不同组件功能上是否冲突基于模型的嵌入式软件开发需求分析•模型架构•可实现性•可测性•可追溯•可配置模型建立•建模语言•建模标准•模型复杂度•平台化开发模型验证•建模标准•模型评审•形式化方法验证•功能测试代码实现•数据管理•等效性测试•代码验证•代码集成代码生成的前提条件 模型经过充分验证模型符合建模标准功能测试覆盖率足够高模型不含有无效逻辑模型不含有数据错误GenerateCode数据对象和数据字典▪使用数据对象定义数据属性Properties (属性)Classes (类)Package (包)SimulinkSignal DataTypeData Storage ClassMin/Max ParameterData TypeData Storage ClassmodelName = 'f14';dictionaryName = 'myNewDictionary.sldd ‘;dictionaryObj =Simulink.data.dictionary.create(dictionaryName);set_param(modelName,'DataDictionary',dictionaryName);▪使用数据字典管理数据对象数据字典管理数据按照组件划分进行数据管理代码生成工具配置1. 通过系统目标文件设定回调函数2. 在代码生成设置的回调函数里固化设置软件工具除确定id 和版本号之外,还需要确定配置等效性测试▪SIL测试/PIL测试都是等效性测试–验证生成的代码和用于代码生成的模型具有相同的行为属性–PIL除等效性验证之外,还可以用来测量运行时间▪等效性测试的测试用例–功能测试的测试用例–Simulink Design Verifier自动生成▪模型覆盖率和代码覆盖率的比较代码的集成和集成测试▪代码集成的两种方式–单元模型的代码生成,代码级别做集成–模型级别集成,然后生成代码▪软硬件的系统级集成–硬件在环测试–台架测试–实车测试Plant model uController models1s2s3+Plant Model in PC uControllers1s2s3+基于模型的嵌入式软件开发需求分析•模型架构•可实现性•可测性•可追溯•可配置模型建立•建模语言•建模标准•模型复杂度•平台化开发模型验证•建模标准•模型评审•形式化方法验证•功能测试代码实现•数据管理•等效性测试•代码验证•代码集成MathWorksChange the world byAccelerating the paceof discovery, innovation, development, and learningin engineering and science。

基于DO-178的机载软件结构覆盖分析

基于DO-178的机载软件结构覆盖分析

基于DO-178的机载软件结构覆盖分析左泽轩;薛战东【摘要】随着民用飞机机载软件的应用越来越广泛,软件复杂程度越来越高,按照DO-178设计保证指南进行机载软件开发逐渐成为行业规范。

机载软件测试是验证过程的关键,对测试结果的覆盖分析中的结构覆盖,DO-178仅提出了相关目标的抽象要求,在工程实际验证软件过程中不便理解和实现。

本文结合适机载软件工程实践,浅析对测试覆盖分析过程的理解。

%With the wider use of airborne software on civil airplane, and its higher complicity, it is gradually becoming a common standard to develop the airborne software according to DO-178 design guidance. Airborne software test is the key method of verification process. But for structural coverage, which is a step of test coverage analysis, only general requirements has been claimed in DO-178, which leads to the inconvenience of understanding and realization for software verification in engineering. In this essay, combined with experience from both suppliers management and communication with airworthiness certification side, test coverage analysis process is explained from engineering side.【期刊名称】《科技视界》【年(卷),期】2016(000)015【总页数】3页(P1-2,25)【关键词】DO-178;机载软件;结构覆盖;MC/DC【作者】左泽轩;薛战东【作者单位】上海飞机设计研究院,中国上海201210;上海飞机设计研究院,中国上海201210【正文语种】中文随着电子信息技术的发展,机载电子设备和机载软件在民用运输飞机上的应用越来越广泛。

VectorCAST61ReleaseNote - Chinese

VectorCAST61ReleaseNote - Chinese

Release Notes - VectorCAST 6.1VectorCAST C,C++,Ada (Core)19605: 新的覆盖率选项:针对语句覆盖率进行区域插桩VectorCAST 6.1版本实现了一个新的覆盖率选项叫做“针对语句覆盖率进行区域插桩”,该功能针对应用程序内存有限的用户。

该选项在插桩过程中的覆盖率选项中包含语句覆盖率时或相应的测试等级包含语句覆盖率(如DO-178B 等级B,该等级同时包含语句覆盖率与分支覆盖率)时有效。

设置完毕后,该选项将导致覆盖率插桩生成更小的执行数据,因为VectorCAST将只对连续的代码块的最后一个语句进行插桩以确定语句覆盖率。

中间的语句将被推理为已覆盖,但并不会针对它们生成覆盖率数据,这样最终生成的TESTINSS.DAT文件和插桩后的文件都会更小。

在将VectorCAST的覆盖率从一个环境导入到另一个环境的时候,两个环境插桩过程中的这个选项“针对语句覆盖率进行区域插桩”配置都要是相同的,否则VectorCAST将会提示一个错误,覆盖率不能被成功导入。

该选项目前只针对C和C++源代码文件有效,不能和原有的其他种类插装文件一起使用。

clicast -lc option VCAST_COVER_STATEMENTS_BY_BLOCK True|False默认情况下为False。

22134: 可分离的MDI窗口VectorCAST 6.1版本支持所有的MDI窗口从VectorCAST程序主窗口中分离。

用户现在经常有至少两个到三个显示器或更多,这个新的窗口分离功能允许用户在使用VectorCAST的时候在其他桌面上开辟新的使用区域。

要激活该功能,请针对一组窗口或单个窗口单击新添加的方向按钮。

或者直接双击某标签来分离或结合某MDI窗口。

基于一直以来的情况,VectorCAST MDI 窗口一般按照类型在被包含的窗口中打开。

例如查看每个测试用例都会被包含到一个叫做“测试用例”的窗口中,我们称这些包含窗口为“父窗口”,用户可以从父窗口中分离单独的窗口,或者直接将父窗口分离,一旦这些分离后的窗口重置,独立的窗口将会恢复到父窗口下,父窗口将会返回VectorCAST主程序窗口。

mst检测原理

mst检测原理

mst检测原理
MST(最小生成树)是用于在一个带权无向连通图中找到一棵生成树,使得树的所有边的权重之和最小。

常用的MST算法有Prim算法和Kruskal算法,下面分别介绍它们的工作原理:
1. Prim算法:
- 选择一个起始节点作为生成树的根节点,并将其加入集合V(已访问节点集合)。

- 在集合V与剩余节点的边中选择一条权重最小的边,并将其对应的节点加入集合V。

- 重复上一步骤,每次选择与集合V中节点相连的权重最小的边,并将对应的节点加入集合V,直到集合V包含了图中的所有节点。

- 最终得到的生成树即为最小生成树。

2. Kruskal算法:
- 将图中的所有边按照权重从小到大进行排序。

- 依次选取权重最小的边,若将该边加入当前的生成树中不会形成回路,则将该边加入生成树。

- 重复上一步骤,直到生成树中包含了图中的所有节点。

- 最终得到的生成树即为最小生成树。

无论是Prim算法还是Kruskal算法,它们的目标都是选择权重最小的边,并构建一个连通的生成树,直到生成树包含了图中的所有节点。

不同之处在于Prim算法是基于节点的选择,而Kruskal算法是基于边的选择。

这两种算法的时间复杂度都与图中的边数E和节点数V相关。

Prim算法适用于稠密图,时间复杂度为O(V^2)或O(VlogV);Kruskal算法适用于稀疏图,时间复杂度为O(ElogE)或O(ElogV)。

MST算法在网络设计、电力传输网络、路径规划等领域有广泛的应用,通过构建最小生成树,可以实现高效的资源利用、减少成本和提升系统性能。

2022年嵌入式系统设计师下午真题卷

2022年嵌入式系统设计师下午真题卷

2022年嵌入式系统设计师下午真题卷2022年嵌入式系统设计师下午真题卷问答题(共5题,共5分)1.阅读以下关于数据采集与处理系统的说明,回答下列问题。

[说明] 某公司承接了一个数据采集与处理系统的项目,由刘工负责系统的方案设计,刘工的设计方案如图1所示。

该方案是基于PCI总线的多功能处理系统,PCI设备1是以太网,PCI设备2用于数据采集,PCI设备3、PCI设备4用于和该系统中的其他处理模块进行互联,LEGACY设备1、LEGACY设备2用于处理系统中一些慢速设备。

1、在以下描述PCI总线的基本概念中,正确的表述有______、______、______、______、______、______。

A.PCI总线是一个与处理器有关的高速外围总线B.PCI总线的基本传输机制是猝发式传送C.PCI 设备一定是主设备D.PCI的物理地址与其他总线一样,是由内存地址空间和I/O地址组成E.PCI设备的地址译码不能对配置空间直接寻址F.PCI设备识别主要是对开发商代码和设备代码进行识别G.访问配置空间时,PCI桥应提供IDSEL信号以选择PCI设备H.系统中只允许有一条PCI总线I.PCI总线是高速串行总线J.PCI总线有3种桥,即HOST/PCI桥,PCI/PCI桥,PCI/LEGACY桥K.PCI桥是可以把一条总线的地址空间映射到另一条总线的地址空间2、PCI设备2和主CPU之间采用双口RAM方式交换数据,双口RAM是常见的共享式多端口存储器,其最大的特点是存储数据共享。

它允许两个独立的CPU或控制器同时异步访问存储单元。

既然数据共享,就必须存在访问仲裁控制,否则就会出现错误或冲突。

内部仲裁逻辑控制提供以下功能:对同一地址单元访问的时序控制;存储单元数据块的访问权限分配;信令交换逻辑(例如中断信号)等。

两个端口对同一内存操作有4种情况:A.两个端口同时对同一地址单元读出数据;B.两个端口同时对同一地址单元写入数据;C.两个端口不同时对同一地址单元存取数据;D.两个端口同时对同一地址单元,一个写入数据,另一个读出数据。

Tessy — 嵌入式软件单元测试、集成测试工具

Tessy — 嵌入式软件单元测试、集成测试工具

Tessy —嵌入式软件单元测试/ 集成测试工具Tessy是一款专门针对嵌入式软件进行单元/ 集成测试的工具。

它可以对C/C++ 代码进行单元、集成测试,可以自动化搭建测试环境、执行测试、评估测试结果并生成测试报告,其多样化的测试用例导入生成方式和与测试需求关联的特色,使Tessy 在测试组织和测试管理上也发挥了良好的作用。

目前Tessy广泛应用在汽车电子主流客户中。

主要特点在V 模型开发中,Tessy 主要应用在单元测试和集成测试阶段。

单元测试通过运行代码检测出函数中错误,比如算法错误、接口问题等;集成测试则在单元测试的基础上验证单元之间接口的正确性。

基于越早发现bug 开发成本越低的原则,在进行代码功能验证的过程中,按照V 流程右半部分先完成单元测试再进行集成测试的测试顺序更为有效。

另外,Tessy 也可以满足各类标准(如ISO26262、IEC61508、EN 50128/50129 等)对测试的需求,比如Tessy 可以满足ISO26262 中各等级对单元/ 集成测试的要求,当然Tessy 本身也通过了TUV 的认证,证明该软件是安全可靠的,可以在安全相关的软件研发过程中使用。

主要功能•自动生成测试环境、一键执行及评估结果Tessy 可以自动生成驱动程序、桩函数,帮助测试人员提高单元测试效率。

Tessy 支持一键执行测试,并自动对测试结果进行评估,可生成多种形式的报告。

•便捷的测试用例设计方式除软件界面手动设计测试用例外,Tessy 还支持导入导出多种格式的测试用例。

另外,Tessy 集成了分类树编辑器CTE,有效利用等价类划分以及边界值法,辅助设计出更全面更有效的测试用例。

•高度自动化的回归测试Tessy 通过分析源文件自动识别函数及相关接口,在接口发生变更时,支持通过简便的操作进行测试数据复用,保证便捷有效的回归测试。

•测试覆盖度分析Tessy 提供分支覆盖、修正条件/ 判定覆盖MC/DC(Modified Codition/Decision Coverage)、多条件覆盖MCC(Multiple ConditionCoverage) 等多种覆盖度分析。

软考软件评测师2017年下半年下午题

软考软件评测师2017年下半年下午题

软考软件评测师2017年下半年下午题试题一阅读下列C程序,回答问题1至问题3,将解答填入答题纸的对应栏内。

【C程序】Int DoString(char*string){char *argv[100];Int argc=1;while(1) { //1while(*string&& *string!='-')//2,3String++;//4if(!*string) //5break; //6argv[argc]=string;while(*string && *string!="&& *string!='\n'&& *string!= '\t')//7,8,9,10 string++; //11argc++;//12}return 0; //13}【问题1】请针对上述C程序给出满足100%DC(判定覆盖)所需的逻辑条件。

【问题2】请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。

【问题3】请给出问题2中控制流图的线性无关路径。

试题二阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】某银行B和某公司C发行联名信用卡,用户使用联名信用卡刷卡可累计积分,积分累计规则与刷卡金额和刷卡日期有关,具体积分规则如表2-1所示。

此外,公司C的会员分为普通会员、超级会员和PASS会员三个级别,超级会员和PASS会员在刷卡时有额外积分奖励,奖励规则如表2-2所示。

银行B开发了一个程序来计算用户每次刷卡所累积的积分,程序的输入包括会员级别L、刷卡日期D和刷卡金额A,程序的输出为本次积分S。

其中,L为单个字母且大小写不敏感,D由程序直接获取系统日期,A为正浮点数最多保留两位小数,S为整数。

【问题1】(5分)采用等价类划分法对该程序进行测试,等价类表如下表所示,请补充表2-3中空(1)~(5)【问题2】(9分)根据以上等价类表设计的测试用例如下表所示,请补充表2-4中空(1)~(9)【问题3】(6分)如果规定了单次刷卡的积分上限为20000( 即S取值大于等于0且小于等于20000),则还需要针对S的取值补充一些测试用例。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
于布尔表达式( lr 2adp r 4 ad(5o p ) 其 ( op ) p n 3 p)中假设 o t u 端有输 出表示为 1 ,无输 出表示
语法树如 图 1 所示.
为0 ;每个开关 p 闭合表示为 1 打开表示为 0 按照 i , . 上述默认值 赋值规则赋值之 后, 以获得唯一 一条通 可
集就是不完整 的.
C i nk hl si原则:对于使用 MCD 方法的任何表 e /C
达式 当具有 N 个条件 时, 一个测试集合最少含 有 N 1 + _
组元素【 引.
定义 2 .设 A是一布 尔表达式, lp ,…, n 为 A p,2 p 中 n个分量记为 p(≤i ) i 1 ≤n称为 A 的条件,当 p每 i 个只 出现一次则称 A为非平凡布尔表达式 [ 6 】 .
口点至少被执行 一次. / C准则要求中④ 是现在 编 MC D 程规则一般要求,关键 的是前 三项要求p 】 .
条件表示 不含有布 尔操作符 号的布尔表 达式.判
定表 由条件和零或者多个布尔操作符号组成 的布尔表
A pi eh iu p ldTcnq e应用 技术 1 5 e 4
计 算 机 系 统 应 用
图 2 不带布尔运算符 的图 为 了说 明算法 原理,我们可进一步,将 图 2简化 为一个 电路 图.图 2的简化形式如 图 3所示.
2 算法设计与验证
任 何一 个布 尔表达 式都 可 以归结为 一个语 法树 。
布 尔表达式 的条件 由树 的叶节 点表 示, 尔表达式 中 布
的 ad o、 o、 o 等布 尔运算符 由非叶节点表示. n 、 rxrnt 对
路 p -3 5 使得 o t l - , pp u 端有输 出, 我们把这条路径称之 为 图的关键 路径,下述生成测试用 例集 的方法称之 为 关键路径法.由于隶属于关键路径 的每个 开关 p 可 以 i
独立影响 o t u 端的结果, 其特征符合 MCDC准 则要求, /
因此,根据 关键路径法可 以直接生成最小测试用例集 .
成,分别 使得判 断结 果为 “ ” “ ” T 和 F ,同时构成 这两
个布尔取值项 中的条件 有且只有一个条件 的布尔取值
发生变化,而其他条件 的布 尔取值 不变【. / C 准 4 MCD 】
则要 求测试用例集 覆盖所有条件,即任一条件 存在测 试用例对应 其至少一个 MCD 对,否则该测试用例 /C
兰 式,然后 归约得 到真值 表,最后化 解真值 表到 最小 测 试集合 【 l 】 .快速 生成 法算法 不对布 尔表达 式进行 任 何转化,而 是根据 布尔 表达式 与语法 树对应特 征,绕
过语法树直对布尔表 达式进行归 约得 出最小化测试用 例 集【 2 】 .目前这些方法只适合处理 由标准运算符 ad n、 o r构成 的非平 凡布 尔表达式,而且难 以避免手工基于 MC/ C准 则分析 复杂的逻辑关系而造成 的考虑不全 D
由图 3的当前状态, 我们可直接得到表 1中第 1组测
试用例.同时,根据定义 1 我们可 以由关键路径获得 , 与第 1组测试用例 构成 MCD 对 的其他三组测试用 /C
图 1 语法树
例.由于隶属于关键路 径的节 点取值 的变化可 以独立 影响 o t u 端的结果 , 因此直接把在第 1 组测试用 例中隶 属于关键 路径 的节 点的值进行翻转,就可 得到表 1中 的 2 、4三组测试用例, 、3 它们和第 1 组形成 MCDC /
HUAN G io Lu Xa- n
( h n qn fr t n eh oo y ol e C o g ig 0 0 1C ia C o g ig nomai cn lg l g , h n qn 4 0 , hn ) I oT C e 4
A b tac : rt e p o e fe ce c o i i u e tCa e S to C/ C,b s d o C |D C rt ra a d te sr t Fo h r blm o f i n y f rM nm m T s s e n M i D ae nM c e n h i i
算法 ,该算法利用 二叉树 对布 尔表达 式进行 转化,然
后将 二叉树依据规 则转换为 图结构,最后直接 从图 中
快速得 出最 小化测试用例集.
1 MCDC / 相关概念
MC D 准 则要求 : 判 定中的每一个条件 的所 /C ① 有可 能结果至 少 出现一 次:② 每 一个判 定本 身 的所
式 、定义. 应用对等测试标准相 比较, / MCDC标准是一 种 非常严格 的测试 标准,已在 国外 的国防、航 空航 天 领域得到广泛应用.在 国内, 对 MCD 针 / C的测试用例 集 生成 算法研 究方 面,主要有 最小真值表 法和快速 生 成 法.最小真值表 法将原 始的布尔表达 式转换 为逆波
系为研究对象,采用将原始布 尔表 达式转化为语法树,再将语法树 转化为图,分析 图中节点对判定结果 的影 响的 方法, 究了基于 图快速 生成最小测试用例集 的算法 . 研 最后 结合实例对该算法进行 了验证,并与其他算法进行 了
比较,结果表明该算法在手动和 自动生成最小测试用例集 时具有实用 性和优越 性.
关键词: / ; MCDC 测试 用例:语法树;图
Ra i l Ge r tngAl o ihm o i i um s s to C/ p d y ne a i g rt f rM n m Te tCa eSe n M DC s d o a Ba e n Gr ph
c mp e eai n h p f o i ai n o n i o sa d d cso , h a e mn d ao g n l o l a x r s in i t o lx r lt s i so mb n t f o d t n n e ii n t ep p r u e r i a o e n e p e s o a o c o c i t i b o n
s n a r e t e u n d t es tx te n o a g a h y tx te , n tr e y a r e it r p .Ac o dn o te e e to o e ft e g a h t h e iin h e h h n c r ig t h f c n n d so h p o te d c so ,t r
3 算法分析
根据上面算 法的步骤和规则便可快速 实现 自动和
手动生成 MC/D C最 小测试用例集 的具体方法.与最
获得这个节点独立影响判定 结果 的 MCD / C对 . 如此循 环,直到最 后一个节 点被替换. 根据 C i nk 原则,为 hl si e 了直接获得最 小测试用例 集,在 以新 的关键 路径 生成
按照一 定的转换规则 , 我们 可 以将语法树 转换为 不带布尔运算符的 图, 其转换规则如下: d 点包含 n a 节 的子节 点,子节 点之 间 由串联关系表示;o r节 点包含
的子节点, 子节 点之 间由并联关系表示; O 节 点同 o Xl " T 节点处理规则; 于 n t 对 o 节点, 则将 n t o 运算符按布尔
MCD (P 正条件 判定覆 盖 / C  ̄修 标准 是由欧美 的航
空/ 天制 造厂 商和 使用 单位 联合制 定 的 “ 空运输 航 航
本文结合快速 生成法 与布尔表达式 的树 型结构的 思想,设计 了一种基于 图结构快速 生成测试用 例集 的
和 装备系 统软 件认 证标 准” .与完 全节 点式 、完 全边
代数 的基本定律和规则沿子树下移, 如遇 a d子节 点, n
则改为 O r子节 点,反之亦然,直到叶子节 点, 与叶子
21 年 第2 卷 第 1 02 1 l期
ht:w . sa r. t / wwc -. gc p/ - o n
计 算 机 系 统 应 用
点 p ) 如 果有,就进行替换( p 打开, 2 闭) 2, 即 l p关 ,每次 仅替换一个节 点,这样形成 了新 的关键路径(2p .5. p -3p ) 与之 前 的关键路 径相 比,只 改变 了一 个节 点,我们 可
对. 接下来,再考 虑其他 的节 点,为了满 足 MCD / C准 则要 求,我们 只需 改变关 键路径 ,纳入其 他节 点,然
后按照上述方式生成测试用例.改变关键路径 的规则: 以当前关键路径为对象(1 3p ) p . -5,考虑每个节点是否 p 有并联节点与之形成并联关系( p 如 l顶 点存在并联节
pa e r p s d te g a h ba e a tag rt m o ge e ae t e s l s e fts a e . n l , e p pe e fe n p rp o o e r p - s d f lo h t n r t mal tsto tc s s Fi al t a rv ri d a d h s i h e e yh i c mpae eag rt m t t e s t er s lss o t a eag rt m a r ci ai n u e o i . o r dt l o i h h wiho r . e ut h w t lo h h sp a tc l y a d s p r r y h h h t h i t i t Ke ywo d : C/ r sM DC; e tc s ; y txte ; r p ts a e s n a r e g a h
非运算.图 1中的语法树经转换赋默认值后得到的图 如图 2所示, 中顶 点 V 、v、v 其 S i e是为便于描述添加 的虚顶 点.在 图中,以同一个顶 点为弧头 的邻接 点称 之为并联节点( p , , 4,否则为串联 节点( p ) 如 l2 p) p 如 3. 每个顶点 的默认值赋值规则为:串联节点赋默认值 1 , 在构成并联关系 的节 点中任选一个 并联 节点赋默认值 1 其余赋默认值 0 , .
相关文档
最新文档