基于TFTP协议的嵌入式平台测试方法研究与运用

2021-09-18 00:46李海海陈晓轩刘心田
铁道通信信号 2021年8期
关键词:测试用例用例镜像

李海海,陈晓轩,刘心田,沈 悦

安全控制单元VCU(Vital Control Unit)是一套二取二架构的嵌入式实时安全平台[1],目前已经被广泛应用于铁路道岔控制单元、输入/输出控制单元、信号灯控制单元等系统[2]。这些系统的上层应用软件可以通过调用VCU 平台提供的接口进行二次开发,而整个系统的安全性、冗余性以及数据的正确读取则依靠VCU平台保证。

在对VCU 平台软件进行测试时,需要在源代码中插入大量的测试桩代码[3],如果采用固定桩代码,完成一个用例测试后就需要改变代码,关掉已执行的用例桩,打开新的用例桩代码,并重新编译和烧录,而编译和烧录过程比较耗时,严重影响测试效率[4],因此需要开发自动化测试平台[5-6]。

1 测试平台

1.1 测试平台结构

VCU 平台分为主安全控制单元(Master Vital Control Unit,MVCU)和从安全控制单元(Slaver Vital Control Unit,SVCU),MVCU 和 SVCU之间采用TFTP协议[7-10]进行通信。

测试平台框架如图1 所示,分为PC 端和嵌入式端。其中,MVCU 可以通过网线与PC 端相连,PC端通过TFTP协议发送命令给MVCU,由MVCU 执行相应的操作;PC 端向SVCU 嵌入式端发送命令时,由MVCU 嵌入式端将该命令转发至SVCU 嵌入式端[9]。

图1 测试平台框架

嵌入式端包含4 部分,分别为桩代码解析模块,解析上位机发送的命令;桩代码模块,用于用户自定义实现其所需功能;重启模块,接收PC 端重启命令,复位单个软件,实现软件的重新启动;配置&镜像更新模块,接收到配置和镜像文件后,写入内存,更新系统配置或者镜像。嵌入式端软件需要分别与MVCU 和SVCU 一起编译生成可执行文件,可执行文件运行后,测试平台嵌入式端跟随MVCU和SVCU软件运行。

PC 端主要包含3 部分,分别为用例管理模块,按照不同的用例,发送命令给嵌入式端;电源管理模块,控制整个系统的电源,可实现自动上电和断电;日志管理模块,接收嵌入式端发送的日志,并记录在相应的测试用例下。

1.2 测试平台功能

1) 用户自定义功能。用户可根据需求,自定义PC 端命令和嵌入式端命令,从而实现特定测试。PC 机端发送控制命令,嵌入式端收到命令后进行解析,打开已有的桩,实现某些用例特定功能,如发送变量值、改变某个变量值等。

2)自动记录日志。PC 端发送控制脚本命令后,将嵌入式软件发送的测试日志记录在相应的测试用例文件夹下,方便自动化测试结果的查看。

3)发送重启命令。通过PC 端测试脚本的编写,控制整个系统电源周期性或随机性开关,以及单个软件周期性或随机性重新启动。

4)自动更新配置。在测试过程中,每个测试用例需要对应不同的配置,可以先更新用例所需要的配置,再执行测试用例,从而实现多用例的自动化测试。

5)自动更新镜像。对于某些特定的用例,需要特定的嵌入式软件镜像,在执行用例前,PC 端首先发送更新镜像的命令以及镜像,当嵌入式端收到镜像更新命令后,再将收到的镜像更新到指定的内存地址,重启后就可以运行新的镜像。

测试平台实现了动态桩注入,相比固定桩重复地编译烧写节约了时间;相比使用仿真器改变变量值,节约了仿真器成本,而且平台可实现多个用例顺序执行,提高了自动化测试水平,节省了手动执行的时间;平台可扩展性强,PC 端和嵌入式端可由用户自定义,适用于带网络通信的嵌入式系统。

2 测试实例

2.1 用户自定义桩代码准备

测试前,需要编写嵌入式端桩代码。嵌入式端桩代码以枚举的方式列出,以测试用例号和步骤号为标识。打开桩代码后,桩代码执行的命令可根据用户需要自定义,如改变SVCU 变量值,控制外部继电器的输出命令等。嵌入式端桩代码示例见图2,用例SwRTC_0001 的第2 步为改变系统的运行模式,通过动态改变系统的运行模式,可影响SVCU 的输出命令,例如在运行模式为1 时,SVCU对外输出数据为全0。

图2 嵌入式端桩代码示例

PC 端编写相应的桩脚本文件后,通过TFTP协议传给MVCU 板卡,由其转发至SVCU 板卡。当SVCU 板卡收到命令后,打开SwRTC_000101和SwRTC_000102,SwRTC_000101 将输出端口的状态发送给MVCU,MVCU 再转发给PC 端,PC 端将日志记录在此用例的文件夹下,方便人工查看;SwRTC_000102 桩改变SVCU 的运行状态。一个用例执行多个桩命令时,可以通过延时来控制发送2个桩命令的时间间隔。PC端命令行见图3。

2.2 平台自动化测试执行流程

为了节约测试时间,提高测试效率,平台自动执行所有的测试用例。在PC端,将要执行的用例写入Python脚本中,脚本运行后可顺序执行用例,当PC端捕捉到用例执行完成后,再发送下一个用例的桩;在嵌入式端,当用例的最后一个桩执行完成后,发送用例执行结束命令。具体执行流程见图4。

图4 平台自动化测试执行流程

3 适用性分析

测试平台适用于带有网络,且采用TFTP 协议进行通信的嵌入式系统。对于不能优先启动TFTP协议的嵌入式系统,在TFTP任务挂起前的任务不能使用此平台进行测试;如果被测软件对任务启动顺序没有定义,可先启动测试平台的嵌入式端软件,待嵌入式端与PC 端通信正常后,再启动被测试软件的其他相应任务。

采用该测试平台时,需要将测试平台嵌入式端与被测对象一起编译生成可执行文件,可执行文件运行后,测试平台嵌入式端跟随被测软件运行。该测试平台支持自动执行模式,可大大提高测试效率。

4 结论

对于安全的嵌入式软件来说,通过插桩来模拟软件运行时遇到的各种故障,是验证软件功能的重要手段[11],基于TFTP 协议的测试平台,不仅能够实现被测软件动态故障模拟,全面验证嵌入式软件的安全性,还可以实现自动配置以及镜像更新、日志自动记录,减少了人工烧录镜像的步骤,提高了测试效率。

猜你喜欢
测试用例用例镜像
基于LDA模型的测试用例复用方法*
镜像
镜像
资费拨测系统的研究与应用
软件测试中的测试用例及复用研究
用例规约在课程成绩管理系统需求分析中的应用研究
镜像
使用用例建模进行软件需求分析研究
测试工时受限的测试策略研究