APP下载

汇编语言的单元测试研究与应用

2018-06-17施雯洪小骏胡浩陆灵君郑璧青

科学与技术 2018年24期
关键词:嵌入式软件单元测试覆盖率

施雯 洪小骏 胡浩 陆灵君 郑璧青

摘要:针对MCS-51单片机软件中使用汇编语言存在单元测试难度大的问题,采用了TBrun for ASM测试工具和脚本指令解释器进行解决。以某嵌入式软件的单元测试为例给出具体应用,结果表明,TBrun for ASM测试工具既满足软件汇编语言的覆盖率测试要求,又保證了软件测试的质量。

关键词:汇编语言;MCS-51单片机;单元测试;TBrun for ASM测试工具

引言

汇编语言具有非结构化、非标准化、硬件相关性高、灵活性极大的特性[1],所以在的嵌入式实时软件和操作系统等对时间、空间要求较高的软件系统中仍经常使用汇编语言。但是,由于汇编语言结构化程序低、程序不易理解,与硬件关系紧密(使用绝对地址或固定相对位移地址)目前市面上大多是针对高级程序设计语言的测试工具,针对汇编语言的单元测试工具却很少,增加了汇编语言测试难度。本文介绍了TBrun for ASM测试工具,解决了汇编语言单元测试难度大的问题,针对该工具的测试用例设计,不仅方便了汇编语言的测试,还提高汇编语言软件的测试的覆盖率。

1 单元测试基本方法

单元测试是发现软件缺陷的重要测试手段,是对软件单元进行正确性检查,它所包含的测试项目有功能测试、结构覆盖率测试以及性能测试[2]。驱动模块:是调用被测单元的模块,被测模块的主程序;桩模块(Stub):是被测单元调用的其他模块。软件单元测试通过构造隔离的测试环境来实现测试,即构造一个驱动程序代替该单元的驱动模块,以传送测试数据给被测单元,同时为被测单元调用的接口(即桩模块)打桩,以返回一定的测试结果给被测单元,并实现对被测单元不同逻辑分支的覆盖控制[3]。

2 汇编语言测试的难点

2.1 语言特点

汇编是一种低级语言,面向机器,非结构化、非标准化且程序不易理解,与硬件关系紧密。软件在进行单元测试时,汇编语言使用绝对地址或固定相对位移地址,一旦进行插装,将会改变地址的特性,使地址原功能特性改变,增加测试用例设计的难度。

2.2 测试脚本

汇编语言不能自动识别出全局变量、形参等,需要测试人员在测试脚本中自己手动添加寄存器变量、地址和赋值,然后再对地址进行赋值。在进行结构覆盖率测试时,测试人员需在代码审查的基础上进行数据流和控制流分析,增加测试难度。

2.3 测试界面

汇编语言运行测试用例无法运行于后台,测试界面一旦显示语法错误和警告信息,则需要测试人员手动设置断点、以查看内部寄存器变量调试测试脚本。相比高级语言,测试结果输出显示困难。

3 汇编语言单元测试方法

3.1汇编语言测试工具——TBrun for ASM

TBrun for ASM测试工具是一个使用脚本语言来构建测试用例,通过对指令的解释执行来进行测试的汇编语言单元测试工具,使用简捷的脚方便的进行测试用例的构建,具有精确的指令解释执行、简捷的脚言、灵活的函数打桩、全面的功能验证、详细的覆盖率分析、方便灵活的用例管理和可定制的中文测试报告等功能,使汇编语言的单元测试更加可靠、高效和易于管理。

3.2测试用例设计

在进行用例设计前,首先需要确认函数的结束标识和调用语句:RET(汇编语言的子程序返回语句)或RETI(汇编语言的中断程序返回语句)、CALL和LCALL(汇编语言的函数调用和长调用语句)。TBrun for ASM具有高可靠性的指令解释器,来实现汇编语言的指令解释执行。

3.3 TBrun for ASM在汇编软件中的应用

以某嵌入式软件为例,该嵌入式系统采用Intel8031微处理器,软件采用MCS 51汇编语言编制,软件主要通过1553B总线完成数据发送至数管总线。测试人员通过TBrun for ASM工具来实现汇编指令模拟、CPU环境模拟以及外部事件模拟等手段来构建汇编应用程序的运行环境,在该环境下实现了汇编语言程序模拟运行、代码调试、代码分析(包括代码规则检查)、代码测试、外部事件仿真及测试报告生成。

bit_sys对应的地址是0x01,而它是内部存储器,则使用“%%INPUT.IDATA.{BIT∣BYTE∣WORD∣DWORD} ADDRESS={address} VALUE={value}”命令集,JNB bit_sys,NEXT1,要使程序跳转至NEXT分支,bit_sys变量为0,因此测试脚本为:%%INPUT.IDATA.BIT ADDRESS=0x01 VALUE=0

从以上测试用例得出TBrun for ASM不需要对被测软件手工编写测试驱动。用工具自带的指令集来模拟汇编语言,从而使得被测汇编程序在TBrun for ASM模拟运行环境下。这种自编程模拟功能很好地解决汇编语言难测试的问题。执行动态测试后,还能查看已完成的测试语句覆盖率和分支覆盖率,并生成测试报告,能够满足嵌入式汇编语言编程的软件单元测试的要求。

4 结论

本文结合实践,针对嵌入式汇编语言的软件的单元测试难点展开讨论,通过TBrun for ASM测试工具解决了汇编语言单元测试难度大的问题,并应用在某嵌入式软件的单元测试,满足了的测试覆盖率要求,取得了较好的测试效果,为后续软件测试工作提供了重要保障。

参考文献

[1]刘利权 基于51系列的嵌入式软件测试系统研究与实现[J],电子科技大学,2005.

[2]蔡建平 嵌入式软件测试[M].北京:清华大学出版社,2010.

[3]张巍,尹海波,孙立财.软件的单元测试方法[J].光电技术应用,2006,21(2):36-38.

作者简介:施雯(1984.1---)女,汉族,浙江诸暨人,华东师范大学本科,上海航天电子技术研究所,工程师,研究方向:软件设计与测试技术。

(作者单位:上海航天电子技术研究所)

猜你喜欢

嵌入式软件单元测试覆盖率
基于ARM7TDMI架构的嵌入式软件逆向工程分析方法
浅析嵌入式软件技术的现状与发展动向
电信800M与移动联通4G网络测试对比分析
基于模型检查的嵌入式软件构件化分析与验证
我国城镇保障性住房覆盖率影响因素分析
嵌入式软件在计算机软件开发过程中的运用
一年级上册第五单元测试
一年级上册一、二单元测试
第五单元测试卷
第六单元测试卷