关键词:
状态变迁矩阵
软件测试
瘦中断
数据竞争
原子性违背
结构分解
组合测试
摘要:
航天软件评测中心统计数据表明航天领域大型实时嵌入式软件故障80%是由中断嵌套引起的,而中断嵌套产生的原子性违背(Atomic Violation)问题至今没得到有效解决;基于多核CPU的嵌入式软件由于多线程交织导致数据竞争(Data Race)问题以及运行结果随机而难以保证其可信性,不得不采用多个单核CPU通过网络通信避免数据竞争问题,这势必影响多核CPU在航天领域的应用;针对这类实时嵌入式软件测试,存在测试用例数量庞大问题,难以评估其可信性。本文从以下几方面开展研究,解决上面提出的几个亟待解决的问题:针对中断嵌套引起的原子性违背问题,本文提出瘦中断处理(Re-Engineering Interrupt Processing)的状态变迁矩阵(State Transition Matrix,STM)模型用于解决中断嵌套引发的原子性违背问题,即把中断处理程序中访问共享变量的程序块移植到主程序STM中,而中断处理程序仅负责将外部中断请求数据存到缓冲区当中,由主程序STM完成中断处理及中断嵌套功能,从而有效解决了原子性违背问题。针对多线程交织引发原子性侵犯和数据竞争问题,提出基于STM的多线程访问控制与访问分离方法:首先建立多线程的STM模型,为了验证多线程模型,通常采用集成的方法进行验证,但容易造成状态空间爆炸,因此,提出控制-访问分离方法,即将各个STM中访问共享变量的控制逻辑集成到一个独立的STM中,最终实现共享变量的控制与访问分离,只需要对控制STM进行验证,这样可以解决多线程验证的状态空间爆炸问题。针对嵌入式软件实时性集成测试用例生成问题,提出层次模型的时间约束和循环约束的集成测试方法。本方法通过对待测系统进行层次化模型的设计,并建立针对规模大结构复杂的软件系统实时性的测试方法,通过增加测试用例的结构复杂度,最终生成比待测模型更为复杂的正则测试用例串,从而找出隐藏较深的软件功能问题。针对复杂软件集成测试的模型划分和用例化简问题,提出模型结构分解方法与测试优化方法。通过对待测软件整体功能的有限状态自动机(FSM)对应的有向图进行结构分解,对分解后的子模型先进行功能测试,根据模型有向图的连通特征以及语义网络的语义特征进行状态聚类,并生成相应的测试用例,然后对系统进行组合测试,进而发现更深层次的错误。最后,利用上述研究方法在航天控制系统中得到实际应用,有效解决数据竞争和原子性违背等问题。在智能电视,电机控制等实际应用中对实时的结构复杂的大型软件进行集成测试,找出隐藏较深的缺陷。经过验证后,发现多状态机模型的验证问题以及对于同类型系统普适性测试问题,将在以后解决。