嵌入式软件的覆盖测试(二) 软件测试
5 Logiscope在嵌入式操作系统DeltaCORE测试中的应用
5.1 测试前的准备
测试前的准备即为支持对DeltaCORE的测试所做的移植工作。
目前,Logiscope已经为一些成熟的商用嵌入式操作系统提供了支持,比如pSOS。DeltaCORE是我国自主开发的嵌入式强实时操作系统内核,为了利用Logiscope实现对DeltaCORE的应用程序乃至DeltaCORE本身的测试,我们主要解决了第4节中描述的第1个关键问题。
为了支持嵌入式程序的测试,Logiscope提供了运行在目标机方的程序代码(或称为目标机端的支持库),里面包含了:
*1个用来收集和发送覆盖信息的主循环线程,该线程即是嵌入式应用中的特殊任务;
*实现具体数据传输的函数,包括对串口或网络的驱动,它们将被上述线程调用;
*插装函数的实现,这些函数被被测代码调用,向缓冲中放入覆盖消息块;
*对缓冲信息队列的管理;
*初始化代码。
例如,当被测程序运行进入到一条if(……)语句时,整个过程如图4所示。
为了支持对DeltaCORE的测试,将与这些机制相关的代码进行移植,包括以下几方面:
*将收集和发送覆盖信息的主循环线程作为在目标机端运行的应用程序中的特殊任务;
*对串口的驱动采用LambdaTOOL BSP(板级支持包)中的串口驱动代替,对网络的驱动,用DeltaCORE的配套组件DeltaNET中的驱动程序实现;
*利用DeltaCORE的信箱机制实现消息队列的创建和管理,插装代码向这些信箱发送覆盖消息块;
*在DetaCORE应用程序的根任务中调用Logiscope的初始化函数,达到创建特殊任务信箱的目的。
开发DeltaCORE应用程序时,我们使用了其配套开发工具LambdaTOOL。由于所使用的工具版本没有实现目标服务器(target server)的调试方式,因此对物理端口的使用采用的独占方式,即调试工具不能与其它工具共享同一端口。我们可以用网络试上载并启动目标应用程序,而通过串口传送覆盖信息。
5.2 对DeltaCORE的覆盖测试过程及结果
对于函数内部,Logiscope支持的覆盖策略有:
*指令块IBs(Instruction Blocks)
*判断到判断的路径DDPs(Decision-to-Decision Paths)