软件测试中的一种实用的嵌入式软件测试方法研究
嵌入式系统安全性的失效可能会导致灾难性的后果,即使是非安全性系统,由于大批量生产也会导致严重的经济损失。这就要求对嵌入式系统,包括嵌入式软件进行严格的测试、确认和验证。随着越来越多的领域使用软件和微处理器控制各种嵌入式设备,对日益复杂的嵌入式软件进行快速有效的测试愈加显得重要。
1、引言
嵌入式计算技术在现代信息技术中的应用越来越广泛,应用所涉及的软、硬件系统越来越复杂,对系统软件可靠性、健壮性及系统性能的要求越来越高。如何提高嵌入式计算系统的软、硬件可靠性和整体性能,及如何对这些指标进行有效测评,是目前嵌入式应用领域的重要课题和研究方向[1]。
2、嵌入式软件测试方法研究的现状
从国内外目前的嵌入式系统软件测试研究现状来看,对于软件分支覆盖率、性能分析等重要指标的获取,无外乎采用的都是介入式[2]与非介入式[3]两种方法之一。介入式方法主要还是采用静态分析和产生可执行代码的插桩式动态分析等方法进行的。而非介入式测试方法则是主动采集被测试系统运行状态数据并根据测试需求进行必要的分析但不影响目标系统的运行,通过获取目标系统运行时全部或必要的状态信息,结合被测试目标软件的静态特征,来了解目标软件的实际执行情况。但是无论采取那种测试方法,到目前为止都仍然有其各自的不足和缺陷如表1所示。
表1 两种测试方法及测试项目对照表
从表中可以发现,对于应用比较普遍的介入式测试方法,由于人为插桩而引入的程序段诱发BUG的概率太高,给测试工作会带来额外的工作量,因此也就间接的延长了程序的研发周期,使研发效率大大降低。而测试效果较好的非介入式测试方法,由于对硬件环境的要求比较苛刻,需要一个特制的运行平台,适合于应用在特定程序的测试,到目前为止还没有形成可重用的架构环境,因此推广起来相对比较困难。
3、系统设计思想
我们在对国内外嵌入式软件测试方法的应用情况研究的基础上,通过长期的探索试验,参考已有研究成果[4],设计了一套基本上可以实现无干涉测试的应用工具和方法,其系统设计思想框架如图1所示。
图1 系统设计框架
从图中可以看出,核心实际上是两个部分:信号采集部件和综合分析模块。
(1)信号采集部件:
在所实施的实际系统中,信号采集部件的硬件实现如图2所示。
图2 信号采集硬件连接原理图
设计采集传感器的时候主要采用了并行接口芯片8255A作为信号采集卡的核心部件,结合数据锁存器(74LS245)、地址锁存器(74LS244)、地址译码电路(74LS138)等电路,外部接口采用PCI总线标准与HOST主机并行口相连,另一端连接JTAG下载板,JTAG下载板通过扁平排线连接ARM板,主要抓取目标机在程序运行过程中的缓冲器的信息,然后将采集到的所有信息上传到信息格式化处理器,对所关心的信号进行保留并进行格式化处理,根据宿主机发出的控制指令将处理好的信息暂时存入信息存储器,以备宿主机对这些信息进行分析。信息格式化处理的处理格式见表2所示。
表2 信息处理格式
其信号采集流程如图3所示。
图3 信号采集流程
信号采集实现程序块如下:
得到的信息如图4所示。
图4 信息表
得到采样信息后,要对其进行跟踪,看调入目标机缓存中的代码是否和采集到的信息完全相符,经甄别后将已经被执行的代码按照表2的格式给出(见图4)。