Ada语言软件测试方法探讨
2015-03-07张驰
张 驰
1.上海航天控制工程研究所,上海 200233 2.同济大学软件学院,上海 201804
Ada语言软件测试方法探讨
张驰1,2
1.上海航天控制工程研究所,上海200233 2.同济大学软件学院,上海201804
摘要软件测试是保证软件质量的重要手段。本文结合某卫星型号嵌入式星载软件的工程实施介绍Ada语言软件测试的工具和方法。
关键词软件质量;测试方法;测试环境
0 引言
进入21世纪,计算机技术发展日新月异,作为计算机技术的重要组成部分,软件的质量成为控制产品质量的关键所在。特别是一些航空航天领域的应用,软件设计的可靠性和安全性更为突出[1]。如何保障软件质量?测试环境则显得尤为关键。软件测试可以验证其能否符合特定的需求以及预期设计目的,是通过软件测试工程师或者专业的软件测试工具测试特定软件运行的系统工程。
单元测试是软件开发设计周期中级别最低的测试活动。所谓单元测试,即将软件分离成独立的单元模块,再与其他模块进行测试。所以单元测试应该具备复制性,无论在程序修改过程中还是在环境复制过程中。因此,所有版本的单元测试都应该是在软件的开发生命周期中进行的。本文笔者主要论述了软件测试的流程以及测试工具。
1 Ada语言简述
Ada是普通程序经常使用的设计语言,当年美国国防部花费巨资,耗时二十余年,历经万难而研发出来。该语言大受赞誉,一经推出,即成为第四代计算机语言的成功代表,是迄今为止,最具复杂性和完备性的程序开发语言。相比其它程序设计语言,Ada既体现众多软件技术开发的基本原理,也成功将这些理论基础付诸实践。运用Ada语言可显著提高软件系统的有效性,可靠性,可维护性甚至改善软件系统的清晰性。目前,美国国防部唯一指定的可用于军用系统开发的语言就是Ada语言。同时,该语言也是我国军方内部开发的标准语言。
2 某卫星型号测试工作简介
2.1 静态分析
工作内容:方案设计师与软件设计师走读代码。
常见问题:
1)逻辑判断语句else涵盖范围:除if和else if语句特殊处理的情况,其他情况均按else分支进行处理,需确定是否有漏考虑特殊情况,或可并入else分支统一进行处理。
2)边界条件的判断:>和>=,<和<=是否有用错;
3)循环变量的累加是否越界。
4)分母为变量时分析其初始值及物理意义。
2.2 单元/组装测试
某卫星型号的单元测试和组装测试均使用LDRA公司的Testbed软件,故合并来讲。
软件测试环境:某卫星型号 GNC软件单元测试环境由开发上位机完成,其中开发上位机安装开发环境(ADAERC-32编译器)、部件测试分析工具(Testbed TBrun)。
软件测试的硬件和固件项:一台上位机(内存为2G,有串口),上位机的配置见表1。
表1 测试环境的软件项
系统配置:因为测试工具Testbed为windows版本,而编译器为Linux版本,所以在系统中配置了Samba服务用以实现Windows系统和虚拟机的Linux系统之间的同网段文件夹共享功能。
(注:Samba是一个工具套件,在Unix上实现SMB (server messag block)协议,或者称之为NETBIOS/ LanManager协议。SMB协议通常是被windows系列用来实现磁盘和打印机共享。)
测试前准备工作:
1)将被测代码及所有被调用文件拷入samba服务配置好的共享文件夹,并拷入Testbed的驱动程序ldra_testbed_run.bat。
2)新建一个格式为[测试项目名].lib的文件,用来储存测试程序的调用关系、数据流等信息。
3)新建一个集合(creat new set),该集合包含程序的所有头文件(.ads),并进行静态分析;如.ads文件比较少也可以逐个分析,静态分析时需选定之前新建的.lib文件作信息记录。
4)选定测试模块(.adb)并开始测试。
测试内容:分支/语句100%覆盖测试。
发现问题:如有不可达分支/语句,则可根据具体情况判断。通常来说出现不可达分支是因为接口参数不充分和程序逻辑问题。
2.3 确认测试
测试环境:如图1,某型号的确认测试在实时仿
真实验室进行。GNC计算机为低等级产品,单机使用Matlab搭建的动力学模型进行仿真,数管软件和AD信号等均为模拟信号。
确认测试工具:工具为上海创景公司自主研发的RTInsightPro。该套工具包括RTInsightPro主机一台及配套上位机软件,主机与上位机通过网线连接,通讯与设置遵循TCP/IP协议。RTInsightPro的工作原理为在目标代码内插桩,然后通过监测CPU对于插桩点目标地址的读写操作来抓取数据包,最后将数据包通过网线传入上位机软件里,实现监控源代码覆盖率的功能。因为涉及CPU信号的读取,测试前创景公司需与单机设计师讨论并设计符合CPU预留接口的电路板。工具系统架构见图2。
测试内容:分支/语句100%覆盖率测试。
3 结论
通过对软件进行单元测试,确保了软件在编码上的逻辑正确性、验证了软件功能与文档设计的一致性。降低了软件开发风险以及开发成本。更是对航天飞行器软件的高可靠性、安全性提供了保障。
参考文献
[1]易海胜.单元测试用例设计方法初探[J].武汉科技学院学报,2006,19(5).
[2]张巍,尹海波,孙立财.软件的单元测试方法[J].光电技术应用,2006,21(2).
[3]中国航天科技集团公司软件专家组.航天软件工程实施技术指南及范例(修订版).
中图分类号TP3
文献标识码A
文章编号1674-6708(2015)139-0137-01