基于执行序列的嵌入式软件时序异常检测探究

2018-09-13 05:43何银川周翔邓任锋
无线互联科技 2018年10期
关键词:嵌入式软件软件测试

何银川 周翔 邓任锋

摘要:时序特性是嵌入式软件的重要特性,实时嵌入式软件运行的正确性不仅依赖于任务执行结果,更依赖于任务执行时间。执行任务往往具有多个时间约束,且相互之间可能存在制约关系,对时间约束进行验证和确认是嵌入式软件测试过程中一个非常重要问题,因而文章提出了一种基于执行片段的嵌入式软件时序特性检测方法,简单地说,即通过执行片段对软件的时序进彳亍特性检测。

关键词:执行片段;时序缺陷检测;软件测试;嵌入式软件

时序特性是否满足设计要求将对实时嵌入式软件的正常运行有着至关重要的影响,因为时序异常极有可能会造成任务执行的失败,甚至在很多时候还会造成系统的极大破坏,因此正确的嵌入式软件时序的设计不仅是软件开发的重中之重,更是软件正常实现的关键。

1 研究背景

要想准确地掌握目标系统的时序特征、合理地对时序序列缺陷进行检测都是要建立在精确、完整建模的基础上。接口自动机(Interface Automata,IA)作为一种轻量级的形式模型,其主要是通过状态机的相关接口去实现对构件间通信以及交互过程的描述,并且还可以进行对构件内部结构的隐藏,实现对外部环境有关行为特性的刻画,同时在这个环境下,还可以自动地进行相容性检测和精化检验,因而是一种可组合的、非常适合软件系统建模的常用工具。

2 时序缺陷检测关于相关性的分析

在对时序进行缺陷检测的时候,需要借助清除、简化、整合、自动化(Eliminate Simplify Integrate Automate,ESIA)模型和执行路径在时间约束方面的相关性进行分析,因此需要对执行片段中预先提取的各类信息进行自动检测,以排查软件在执行过程中各种时序错误,并借此检查软件相关的异常处理机制是否符合设计需求。本文为了更好地对序列的执行过程进行描述,把其定义为一个行为执行序列。

在对执行片段进行提取的过程中也有一些注意事项,比如可能会有信息不存在的情况,这时只需要让相应元素空缺即可,而又如某一项执行片段缺失时间信息,那么这时也就没有与之相关联的任何信息进行描述的必要[1]。此外,在基于执行片段的嵌入式软件时序特性检测(Trace-BasedTemporal Defect Detection,TBTDD)方法中,应当保证执行片段相关记录的规范性和完整性,以帮助后续的解析和检测任务的顺利进行。并且对于软件异常时序机制处理的检测和验证也是必不可少的,以此来避免非预期结果的出现。

出于這些因素考量,本文中又将时序片段分为正常和异常两个部分,其具体定义如下。

2.1 正常时序片段

如果该执行片段仅包含正常的时序序列和与之对应的执行分支,则被叫作正常片段。

2.2 异常时序片段

如果该执行片段包含异常时序和与之相对应的异常处理分支,则被叫作异常片段。

但需要注意的是,在对执行片段的提取上应当尽可能地对各种正常或者异常的时序进行覆盖,以达到对目标软件的所有异常时序充分检测的目的。

3 执行片段注意事项

3.1 对执行片段进行匹配

如果所执行片段中的序列信息能够与ESIA模型中的执行路径相符,则就称该执行片段能够被ESIA模型所接受。因此制定出相关的可接受准则是首要解决的事,并在此准则的基础上提出一种基于广度优先算法的候选状态选取策略,然后再逐项地对执行片段上的各种信息进行匹配,通过这种方法找到所有能与ESIA模型相匹配的执行路径,如果不能找到正确的匹配路径则把不能匹配的片段进行滤除。由于ESIA模型中既有正常的时序信息也有异常的时序判断,所以在对可接受准则的制定上应当以能够适应这两种匹配过程的准则为先导。以下是对相关可接受准则的一个定义。

(1)从j=1开始,即从λ1开始,选择VP中某一个候选元素作为起始状态,启动Trace进行匹配。

(2)如果候选集合中存在着与λ1相一致的状态迁移,则对该状态移动以及相应的目标状态进行记录。通过这种方法,让λ1对所有的候选状态基于该过程进行匹配,并把匹配过后所得到的记录状态的集合对当前的状态候选集合进行更新,到此λ1完成所有匹配过程。

(3)根据执行片段的顺序,使Trace重复进行步骤(2)。如果Trace中的所有过程均能够被正确匹配,则表示能够找到一组与之相符的ESIA执行路径,反之,则不行。但值得注意的是,往往在匹配的过程中不是只有一个候选状态能与执行片段相匹配,换句话说就是有多个状态迁徙能够与执行片段相匹配,因此与之相符的ESIA执行路径可能不只一条[2]。

但面对ESIA的执行路径存在多条的时候,则要根据具体的问题具体进行分析,一般从执行路径与时间约束之间的关系着手。如果不同的匹配路径其时间关系不同,则不能轻易地判断该执行路径是符合时序的相应设计要求的。针对以上情况,还需要通过对匹配路径的有关时间约束和时序序列进行缺陷检测来增强准确判断的筹码,如果检测的结果是执行片段中的相关时间信息不能满足匹配路径对于时序的要求,则判定该软件的时序存在缺陷或异常,不过具体存在何种问题则还需要进一步的进行验证和分析。

此外,如果没有一条与该执行片段相符合的执行路径,则过滤该执行片段,也不再对其进行其他的相关障碍检测,在这种情况下有两种可能性,一种就是ESIA模型描述的场景不全面,另一种就是软件存在着功能性障碍,具体是哪一种情况,还需要对相应执行片段及其功能设计进一步的进行审查,但不能笃定地说软件一定存在着时序缺陷。

3.2 对时序进行缺陷分析

对嵌入式软件进行故障检测、定位、隔离、重构以及修复是故障管理的5个主要方面。如果目标软件存在着较多的时序缺陷或者故障的时候,其检测、定位也将更加复杂,并且常常由于故障之间的某种关系或者作用,使得许多故障在检测的过程中极有可能被掩盖,因而本文主要针对的是目标软件中某一个单一的时序序列,通过检测、识别、定位等步骤对其故障进行排查。所以,首先要对软件在执行过程中有可能会出现的类似于时序异常、功能性障碍等情况进行分析和判断,根据分析结果确定相关的时序缺陷类型[3],并以此为基础有针对性的制定出检测过程中的特性检测准则,从而达到对异常时序检测、识别有效性和可靠性的目的。此外,如果目标软件程序在ESIA模型之上不存在与之相匹配的执行路径,则该软件在程序的实现上可以判断为有功能性缺陷,甚至在运行的过程中极有可能有以下时序异常的发生。

(1)违反特定的时间约束,即对于时间变量的取值不符合特定的时间约束,或者是在对其状态匹配的过程中未能找到与之相对应的时间约束。

(2)违反相关的时间约束,简单地说就是在时间变量的取值上不满足时间约束之间的关系。

(3)违反计时起点设置要求,即对某些时间变量进行计时起点设计的过程中不满足有关设计要求。

(4)错误的异常时序处理,也就是说对于异常时序的相关处理机制不符合设计要求。

3.3 对时序进行缺陷检测

通常通过执行片段中的时间信息与检测过程中所制定的相关标准之间的关系来判断所设计的软件时序是否满足设计要求。因此,在TBTDD方法中,首先需要分析和掌握时序的缺陷类型,并根据该类型制定满足时序特征的相关准则,再由此把ESIA模型中对于时间需求的描述当作检测的一个度量,然后检测正在执行中的有关片段的时间信息和异常处理机制,并且对异常时序机制的检测还可以保证软件运行的可靠性和健壮性。此外,这种方法还可以通过ESIA的有关执行路径对有缺陷的时序进行定位,对违反相关或者特定时间约束的、不符合设计特定时序异常处理机制要求的、计时起点设置错误的等缺陷情况,都能够非常有效和充分地进行检查和测试。

[参考文献]

[1]汪普庆.计算机软件安全及其防范探讨[J].数字技术与应用,2016(1):219.

[2]王磊.计算机软件安全问题及防御对策研究[J].工业c,2016(3):229.

[3]吴巍.计算机网络安全问题及有效防范措施研究[J].计算机光盘软件与应用,2015(2):164-165.

猜你喜欢
嵌入式软件软件测试
基于OBE的软件测试课程教学改革探索
基于人工智能的模块化嵌入式软件开发研究
EXCEL和VBA实现软件测试记录管理
实时嵌入式软件的测试技术
关于软件测试技术应用与发展趋势研究
全景相机遥控器嵌入式软件V1.0 相关操作分析
基于Eclipse的航天嵌入式软件集成开发环境设计与实现
航天嵌入式软件浮点运算误差分析与控制
智能电能表软件测试技术概述
嵌入式软件算法级能耗建模与分析