2.2 插桩技术

一般来说,对程序进行动态测试的时候,基本上要使用程序插桩来进行覆盖测试。程序插桩技术是保持被测软件逻辑完整性的基础上,在源代码中插入探针函数,它是一个子过程调用,调用的子过程能在运行到插桩点时记录下有关的运行情况,采集执行程序在真实环境中运行的控制流、数据流等测试数据。插桩时需确保探针函数对源程序执行影响最小。

基本路径测试依赖探针插桩技术完成分支位置点标志位的采集。插桩位置最好选择在应用程序层,重点采集输入输出模块中的上层函数运行信息,底层模块加强单元测试,而在嵌入式软件模块集成时,默认这些模块是正确无误的。根据程序按块划分的原则,可以在子函数出入点、程序块控制流图G的分支节点、功能测试的重点变量处植入探针。

基本路径测试的插桩过程是静态的,数据收集过程是动态的,结束时需恢复现场。动态测试前,被测程序与插桩库连接,完成插桩操作,获取执行程序。执行程序交叉编译后运行于目标实际环境或者仿真环境下,通过探针函数返回动态测试跟踪数据。

2.3 数据处理及分析

目标机在真实环境中运行可执行程序,测试用例集T为运行输入参量,探针采集数据为运行的输出参量。探针函数采集动态跟踪测试数据,传输给宿主机测试平台。宿主机测试平台对接收到的动态跟踪数据进行处理,计算出路径测试覆盖率,并结合数据处理过程中的测试日志分析出最后的测试报告。

3 、测试实例分析

根据上述的嵌入式软件动态测试框架,模拟测试实验室现行项目208型海区终端的航标数据采集模块。

在编译器MPLAB IDE 8.63中编写源代码,并对源代码进行规则检查。图2为航标数据采集模块的主控程序流程图,可将其简化为程序控制流图。