欢迎来到天天文库
浏览记录
ID:46601642
大小:331.43 KB
页数:7页
时间:2019-11-26
《星载软件可测试性设计方法》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、2010年8月中国空间科学技术31第4期乙hinese5paceScienceand1echnology星载软件可测试性设计方法袁利王磊(北京控制工程研究所。北京100190)摘要随着星载软件复杂度的增加,提高软件测试效率对保证软件质量越来越重要,软件的可测试性设计成为提高软件测试效率的关键手段。文中针对星栽软件的可测试性设计提出了四种方法:设计可测试的分层体系结构可将软件故障限制在层次范围内;合约式任务模板可规范任务的输入输出,降低任务问的耦合性;状态序列编码可用于动态指示软件的切换与流向;多任务调度记录与堆栈使用记录可用于静
2、态复现一段时间内软件的详细工作过程。可测试性设计方法应用在某项目的软件研制中,软件测试效率有明显提高,证明方法可行有效。关键词星载软件可测试性设计软件体系结构任务模板状态序列航天器1引言随着我国航天技术的发展,星载电子线路趋向集成化,综合电子系统逐渐应用,星载软件也随之集中在单个处理器上运行。这不仅包含了提供运行环境的系统软件,还包括了原属于各个分系统的应用软件,如遥控遥测、数据管理、姿态与导航控制、热控以及有效载荷的管理。集成后的星载软件具有功能和逻辑复杂度高、规模庞大、界面复杂以及验证难度高的特点。因此,如何保证星载软件产品
3、的品质是研制的关键性课题。软件测试是查找软件设计错误、运行故障的重要手段,为保证软件产品的品质,就必须保证软件测试的覆盖性和有效性,提高测试效率。可以采取两种技术来提高软件测试的效率,一种方法是选择那些有非常强的故障揭示能力的测试用例来进行软件的测试;另一种更具有主动性的办法是在软件进行初期规划和设计时,就采用可测试性设计方法,提高软件的可测试性,为后期的测试提供便捷的条件。国内外有一些学者对软件可测试性进行了研究[1-7]。软件的可测试性是软件在特定的输入分布下进行随机黑盒测试时暴露故障的能力,是软件固有的品质特性[z],是指
4、系统发现软件故障并隔离、定位的能力,以及在一定的时间和成本前提下,进行测试设计、测试执行的能力。软件的可测试性设计方法基本上源自电子线路的可测试性设计方法,如合约式设计DBC(designbycontract)、内建式测试BIT(Bulit—InTesting)和内建式自测试BIST(Bulit—InSelfTesting)[7]。这些理论方法目前在我国星载软件设计中的应用还很少。软件的可测试性设计也体现了软件测试的一个发展趋势:软件测试向软件开发的前期发展、与软件开发的设计和编码阶段相结合,易于测试的软件本身所包含的缺陷也会减
5、少。本文结合星载软件的特点,探讨软件可测试性设计问题,提出星载软件的几种可测试性设计方法,并对这些方法在测试过程中的应用进行了分析。收稿日期:2009—10-16。收修改稿日期;2009—11-11中国空间科学技术2010年8月2可测试性设计方法软件的生产过程包括需求分析阶段、设计阶段和测试阶段,设计阶段又可以根据软件的不同层次分为结构设计阶段、模块设计阶段以及单元设计阶段。在需求分析阶段,需要对星载软件的可测试性设计作为一项需求进行分析,提出可测试性设计规划,在不同的设计阶段实现。在结构设计阶段,通过构建多层次的软件体系结构来
6、提高可测试性,对应于一个稳定的软件体系结构,其针对体系结构的测试用例是可以再用的;在模块设计阶段,软件功能对应到不同的任务(Task)实现,而每一个任务均使用统一的合约式任务模板。这样的模板一般分为三类(永久任务、同步任务、异步任务),因此,针对任务的测试用例也可以模板化;在单元设计阶段,为每一个单元设计内嵌的状态输出,并统一编码,测试时可以根据状态输出判断程序的逻辑和运行结果。另外,在软件体系结构内内置任务调度记录和堆栈使用记录,可在测试时观察任务运行状况。上述可测试性设计方法以及在测试阶段的应用如图1所示。结构3阶段i单元设
7、计阶段(验收交付)▲l体系蔷旃测试确认测试阶段f组装测试阶段单元测试阶段f测试准备阶段图1可测试性设计方法以及在测试阶段的应用2.1可测试体系结构软件体系结构的设计是星载软件设计的第一步,并成为以后各种设计和实施具有指导、控制、管理作用的依据。目前的星载软件一般采用结构化设计方法,层次不够清晰,对于功能复杂任务繁多的星载软件难于测试,发现问题不容易定位,采用分层结构是提高软件可测试性的重要改进。从体系结构的设计开始,就考虑软件的可测试性,可以降低测试复杂度。设计多层次的可测试体系结构,以明确的层间接口和数据交换模式来划分每一层的
8、功能,是降低软件复杂度的良好手段,主要目的是将可能发生的软件故障限制在层内,降低层间的耦合关系,因此可以简化软件测试矩阵。分层模块化体系结构分为三层(见图2):系统软件层、系统应用层和用户应用层。每一层又可以细化为多个层次,不同卫星项目的软件、硬件的不同可以在系
此文档下载收益归作者所有