APP下载

MC/DC准则基础下的嵌入式软件测试

2020-11-16闫晓艳

数码世界 2020年10期
关键词:嵌入式软件测试技术

闫晓艳

摘要:MC/DC准则是现行软件覆盖率的验证准则,具有高安全性、实用性及有效性强的特点,被广泛应用于嵌入式软件独立测试当中,应用时可以结合该准则及嵌入式软件测试要求构建测试技术方案,经测试可知嵌入式软件在MC/DC准则中的覆盖率,覆盖率越高则代表软件越优秀,否则反之。本文将对嵌入式软件测试要求与MC/DC准则概念进行论述,并提出一种以MC/DC准则为基础的嵌入式软件测试技术方案,验证该方案的有效性。

关键词:MC/DC准则;嵌入式软件;测试技术

引言

嵌入式软件与嵌入主体本质上是两个个体,嵌入式软件与嵌入主体不匹配,可能造成巨大的负面影响,导致系统主体的稳定性大幅下降,因嵌入式软件问题,使得系统主体出现可靠性、安全性上的问题,在嵌入式软件嵌入系统主体之前,必须对软件进行测试,确保软件嵌入不会对系统造成负面影响。嵌入式软件作为独立开发软件程序,其测试不能依照传统方法来进行,必须在专门的准则及环境中开展,这时MC/DC准则(Modified Condition/Decision Coverage,修订的条件/判定覆盖)就提供了一种可用于嵌入式软件测试的环境,对此进行研究可以利用该准则对不同嵌入式软件进行测试,此举具有一定现实意义。

1 嵌入式软件测试要求与MC/DC准则概念

1.1嵌入式软件测试要求

嵌入式软件本身具有实时性、可移植性强,软硬件可灵活调整,硬件平台及操作系统多样,缺陷不易修复,成本昂贵的特征,这些特征使得其在测试中对测试技术有较高的要求,一般不能采用单一技术进行测试,需要将整个测试流程分为不同阶段,再针对各个阶段设定测试技术,最终形成测试技术综合方案来进行测试。根据嵌入式软件本身特征及测试技术要求,通常可以将测试流程分为分析阶段、设计阶段、实现阶段、验证阶段四个部分,以IV&V(Independent Verification and Validation,独立验证与确认)为测试导向,采用静态代码分析/动态覆盖测试技术方案,针对各阶段采用相关方法进行覆盖测试,具体如下。表1为静态代码分析/动态覆盖测试技术方案概况。

1.1.1静态代码分析

静态代码分析是嵌入式软件最基本的测试策略,主要目的是检查嵌入式软件源代码是否正确、质量如何,分析可以分为两个步骤:①通过人工逐条观察嵌入式软件的源代码,对照编码规范进行检查,确认源代码中没有错误代码(如果代码编制存在语法等方法的基本错误也需要指出);(2)在确认源代码正确的情况下,需要对代码进行语义、数据流进行分析,若源代码在这两个层面存在误差(如语义描述不准确)则必须在需求、设计等阶段尽快调整。

1.1.2动态覆盖测试

与静态代码分析不同,动态覆盖测试需要在嵌入式软件运行的状态下进行,主要涉及到两种测试方法,分别为黑盒测试、白盒测试。黑盒测试主要用于嵌入式软件的功能测试中,可知软件功能的覆盖率,若测试结果显示软件功能覆盖率未达到100%就必须进行修补,若软件功能覆盖率达到100%则进行白盒测试。

1.2 MC/DC准则概念

根据静态代码分析/动态覆盖测试技术方案可知,通过这种方案单独对嵌入式软件进行测试,可知嵌入式软件在IV&V中的需求覆盖、结构覆盖表现,前者代表软件内所有目标函数是否被正确执行,则代表软件源代码是否充分及可实现性如何,在测试当中存在相辅相成关系,通过完整测试可判断嵌入式软件是否严格、是否完整。可见两个覆盖测试步骤是分开的,说明静态代码分析/动态覆盖测试技术方案在单独应用中会忽略条件覆盖与判定覆盖相组合的情况,代表该测试方法有缺陷。这一条件下MC/DC准则就对此进行了优化,即MC/DC准则的核心在于条件/判定覆盖,主要以条件覆盖结果为基础,以优化软件结构为目的提出结构覆盖准则,受该准则影响,测试中需要对嵌入式软件代码内的所有可能都进行至少一次的输入/输出取值,所有覆盖条件都进行输出,输出结果应当覆盖所有可能,若输出结果中没有某个可能的结果,则说明软件覆盖率不足100%,存在缺陷。

2 以MC/DC准则为基础的嵌入式软件测试技术方案

2.1基本原理

关于MC/DC准则原理,首先要设定条件判定语句,通常使用布尔操作符构成布尔表达式,通过多个布尔表达式可构成条件判定语句,随之将每个判定中的条件均视为不同条件(即使是相同条件多次出现于相同判定中,所有条件也被视为不同条件),由此进行判定。其次根据条件判定语句,对布尔表达式进行调整,比较常见的A and B就是逻辑布尔表达式,其中A、B均为布尔变量,可取值为{0,1},整体可输出结果C,结果C代表A and B的完备测试用例集。表2为MC/DC准则条件判定语句A and B逻辑与测试集。

根据表2,组别1-2测试中可取条件A的所有取值,要求所有取值均出现一次,在条件B不变的情况下,条件A要具备独立影响对应判定结果的能力;组别1-3测试中可取条件B的所有取值,要求所有取值均出现一次,且在条件A不变的情况下,条件B要具备独立影响对应判定结果的能力,由此取得组别1-2-3交集生成逻辑、最小测试用例集。组别7-8测试中可取条件A的所有取值,要求所有取值均出现一次,在条件B不变的情况下,条件A要具备独立影响对应判定结果的能力;组别6-8测试中可取条件B的所有取值,要求所有取值均出现一次,在条件A不变的情况下,条件B要具备独立影响对应判定结果的能力,由此取得组别6-7-8交集生成逻辑、最小测试用例集。

2.2测试技术方案

根据MC/DC准则的基本原理,下文将提出MC/DC准则嵌入式软件测试方案,并接受方案测试流程。

2.2.1 MC/DC准则嵌入式软件测试方案

因为MC/DC准则的泛用性较强,且测试性能优异,所以经过长期研究出现了很多支持MC/DC准则测试的自动化测试工具,例如Cantata++、VectorCAST,两者均可实现自动化MC/DC准则度量。这一条件下,本文出于便捷性考虑选择了VectorCAST(因VectorCAST可应用于比较常见的Windows、Linux开发平台,所以适用性更好,应用更加便捷),使用该工具即可進行嵌入式软件MC/DC准则测试。

2.2.2 MC/DC准则嵌入式软件方案测试流程

虽然利用VectorCAST即可进行测试,但测试之前必须做好流程规划工作,对此在本文测试方案中测试流程可以分为四个步骤:①在VectorCAST基础上创立工作环境,将待测试嵌入式软件源代码导入,实现条件判定语句及MC/DC插桩,并分离出具有独立影响能力的布尔表达式;②确认每个独立影响布尔表达式的真值,可得每个表达式的最小测试集,根据测试需求将所有最小测试集集成,可得最小测试用例集;③脚本编写后执行最小测试用例集,对测试结果进行分析,可知软件是否存在缺陷。

3 MC/DC准则嵌入式软件测试技术方案验证

3.1测试案例

选择某塑料光谱分选打包控制系统作为测试案例(该系统为嵌入式软件),使用MC/DC准则嵌入式软件测试技术方案进行测试。该系统主控(包括光谱储料仓A阀门、光谱储料仓B阀门)及打包(大件打包C阀门、小件打包D阀门)系统控制配有状态指示灯,根据指示灯颜色不同代表不同含义,蓝色灯为阀门闭合状态、绿色灯为阀门正常开启状态、红色灯为物料阻塞状态),系统需要根据阀门电路状态对指示灯进行控制。依照系统设计,本文对其进行了剖析,获取了电路状态表达式,具体如下:

if(ValveA->SelectedⅡValveB->Selected)&&(ValveC->SelectedⅡValveD->Selected)then ValveSetStatus(Open);else;ValveSetStatus(Close)

3.2測试验证

该系统表达式本质上不属于布尔表达式,因此无法直接应用于MC/DC准则检测当中,必须先进行简化,对此依照准则原理本文将其简化为相关布尔表达式,即if(A or B)and(C or D)then Statement1;else;Statement2,式中A、B、C、D分别代表了一种电路状态,与相关提示等颜色对应,随后考虑到测试验证的便捷性,需要对该表达式进行进一步简化,再针对布尔表达式进一步简化,可得Z=X and Y,式中X代表A or B、Y代表C or D。其次依照简化后得布尔表达式,获取系统中独立影响结果的最小测试集(见表3)进行测试。

依照表3进行方案设置(详见2.2测试技术方案-MC/DC准则嵌入式软件测试方案),完成后进行1-5、1-3、2-4、2-3四个组别的测试,要求1-5组别中条件A具有独立影响判定结果的能力;1-3组别中条件B具有独立影响判定结果的能力;2-4组别中条件C具有独立影响判定结果的能力;2-3组别中条件D具有独立影响判定结果的能力,这一基础上可得组别1-2-3-4-5测试用例。结果显示四组测试均可生成最小测试集,代表该系统MC/DC准则下的覆盖率达到100%,系统可靠性、稳定性良好。

4 结语

本文对基于MC/DC准则的嵌入式软件测试技术进行了研究,阐述了嵌入式软件测试要求与MC/DC准则概念,并以MC/DC准则设计了测试技术方案,同时对方案进行了验证。通过文中设计方式可得MC/DC准则嵌入式软件测试技术方案,该方案在验证中具有完整性强、测试准确率高的特点,可起到对嵌入式软件进行全面测试,获取其覆盖率的作用。

参考文献

[1]葛德明.实时嵌入式软件的测试技术[J].电子测试,2018,000(010):88-89.

[2]谢祥南,魏延栋.耦合条件的MC/DC测试用例集生成算法[J].计算机系统应用,2017(06):166-171.

猜你喜欢

嵌入式软件测试技术
基于ARM7TDMI架构的嵌入式软件逆向工程分析方法
浅析嵌入式软件技术的现状与发展动向
基于模型检查的嵌入式软件构件化分析与验证
大数据测试技术的特点及前景研究
现代测试技术在机械类本科测试技术教学中的渗透
常用电化学研究方法及技术
测试技术课程内容的教学改革
嵌入式软件在计算机软件开发过程中的运用
试论计算机嵌入式软件构件提取与组装技术
机械工程测试技术教学改革方法初探