嵌入式弹载软件代码审查方法研究

2018-06-02 08:50徐白余慧敏周楷林李芳芳
电脑知识与技术 2018年10期
关键词:软件测试

徐白 余慧敏 周楷林 李芳芳

摘要:该文从一般性代码审查出发,对代码审查过程进行论述,指出嵌入式弹载软件着重需要考虑的审查内容和方法,对发现软件问题,提升测试效果,提高软件质量有一定的参考价值。

关键词:嵌入式弹载软件,软件测试,代码审查

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)10-0240-02

Abstract: This paper shows how to do document inspection and code review, demonstrates steps in designing test cases for initialization, system fuction, interface, boundary, surplus, security and strength. In particular, it highlights the points that should pay more attention to in the testing of embeded software running on missiles and the corresponding test method. These have some referential value in debuging and in improving the quality of software.

Key words: embeded Missile-loaded software; software testing; code review

1 概述

软件测试是将软件交付给客户之前所必须完成的重要步骤,在软件的正确性证明尚未得到根本验证情况下,软件测试仍是发现软件错误(缺陷)的重要手段[1-2]。通过测试发现软件缺陷,为产品质量和评价提供依据。对于嵌入式软件,代码审查是发现软件问题的重要手段,而且代码审查实现在动态测试之前,从节约测试资源和提高测试效率来看,做好代码审查工作,是发现软件问题,提高软件质量的重要环节。

在航天航空领域产品中,同一系列的软件有着相同或相似的专业背景,可应用于不同型号,软件的代码可重用率较高,或者是实现的功能类似可借鉴率比较高。在一个型号做完代码审查后发现的错误,可以举一反三应用于其他项目中[3],从而对同一领域中的代码审查工作进行相关总结,对后续其他项目的开展来说,可一定程度提高效率。

2 代碼审查过程

一般性代码审查:作为嵌入式软件特别是弹载软件测评,代码审查是检验软件问题的重要手段之一,主要检查代码和设计是否一致,并配合静态分析工具进行相应静态分析,从某种程度上筛选一定量的代码错误。

弹载软件的代码审查工作一般结合代码审查单进行审查,可从以下几点易出错的情况检查代码的正确合理规范性:企图读取未初始化的变量,对空指针和越界指针的引用,对超界限数组的访问,非法的算数运算(除零错误,负数开方,)整数和浮点数的上溢出或下溢出。多线程应用中未保护数据的访问冲突,不可达到的代码。

在弹载软件测评中代码审查除进行一般性代码审查外,还需要结合弹载软件特性,有针对性地进行特定审查,可从如下几方面考虑。

1)初始化检查

初始化若不正确,定将影响到后面具体功能。初始化工作包括CPU初始化,外设初始化,数据初始化。

定时器初始化,查看定时器控制寄存器配置,周期配置是否正确;

关键变量初始化:各关键变量初始值设置是否合理,比如系统默认工作参数初始值,故障标志位初始值等;

中断初始化:包括中断触发方式,中断优先级,中断使能,中断通道映射等设置是否正确。

接口初始化:对于弹载软件可从串口通信、CAN接口通讯、1553通讯进行审查。 串口通讯查看波特率、字符格式和校验位初始设置是否正确。CAN接口查看接口参数中CAN控制器设置是否正确(BasicCAN模式和PeliCAN模式)。1553通讯中查看发送、接收地址,发送接收传输方式设置是否正确。

其他初始化要求:若需求中有对初始化的量值的具体描述,需按要求一一审查,比如对D/A,D/O,RS422,GB289A等初始化特殊要求输出。

2)系统功能代码审查

系统功能的代码审查是指依据设计方给的需求、任务书、数学模型等,从功能方面检查软件的实现是否与需求和任务书中要求的一致。这个是整个弹载软件测试的核心和重点,依据软件不同功能,基本可分为弹前自检、准备、激活、发射阶段的功能检查和弹离架后飞行控制功能检查。在整个飞行过程的各阶段还需验证软件和各子系统数据交互是否正确,且与任务书和数学模型及接口协议等要求保持一致。

3)通信接口代码检查,

接口代码审查的工作主要在于外部接口,外部接口指系统外部和其他设备有通讯的接口。主要依据设计方出具的接口协议,进行一一检查。包括数据交互速率、波特率、数据交互周期、交互吞吐量确认其设置是否正确;

对于异常数据包处理,查看软件在异常帧情况下是否处理得当,软件是使用默认值还是使用上拍保留值。

对于帧头,若接收缓存为循环队列时查看是否使用长帧头,或帧头是否设置合理。对于帧长度,若有定义则建议识别,需注意接收缓存的数组长度定义的匹配性,以防止溢出。对于帧内容主要指命令字信息和数据信息检查,接收数据时审查数组数据计数变量的复位、清零等是否合理。对协议中各字段字节内容,所表达的定义,比例尺、量程,进行逐一验证,查看数据内容和比例尺是否能正确表示数据量程,注意数据接收后拼接过程是否能正确表达正负数、小数,是否能表达所要求的最大量程并符合协议的要求。还需特别注意数据是否需要限幅。对于帧校验,需查看检验方式是否正确,双方对于数据校验的约定是否一致;起算位是否一致。对于通信周期,需注意用户自定义通信数据包周期需与硬件环境相匹配。

4)性能方面检查

性能方面的检查包括任务书需求等要求的时间特性以及超时处理的相关安全处理措施的检查。

對于时间特性,很多情况下按照周期次数实现的,比如弹动后x(ms)进行某操作,主函数一个调用周期为y(ms),那么在程序中实现为x/y次,在边界处理上要留心细致。在使用周期计算时,要注意具体使用的哪个周期,从而判定是否符合具体要求的时间界定。对于含中断的弹载软件,需要检查定时中断的周期等重要参数。

5)边界点检查

对于弹载软件的边界点检查可从以下两方面出发,关键状态转换边界的检查:比如点火条件,离架条件;功能界限的边界检查:如弹飞后转阶段的各条件边界,它是考察的弹载重要指标和条件。

6)安全性检查

数据安全性检查:检查软件对关键数据进行校验、保护,如防除零保护,剔野保护,输出参数保护如舵输出、各电压值输出等以防止损害硬件;

功能安全性检查:对于嵌入式弹载软件着重查看弹动保护,点火保护,火工品保护等重要处理是否设计正确合理,对关键信号是否进行了复位操作;为防止软件跑飞,查看软件相应看门狗保护。

接口的安全性检查:检查是否有通信握手,通讯超时处理、通讯周期匹配,通讯故障设置是否正确。

3 工程应用

项目组使用本文提出的代码审查方法与传统的方法进行对比,通过对多个型号弹载计算机软件进行测试,对比结果如下表所示:

通过对比可以看出,本文所提出的代码审查方法可明显提高测试质量和测试效率。

4 结束语

以上就系统初始化,系统功能,接口、性能、边界、安全性对嵌入式弹载软件中代码审查工作作了论述,有利于测试人员在测试过程更快适应相关型号测评工作,从而进一步做好嵌入式弹载软件测试,以提高软件质量及其可靠性。

参考文献:

[1] Ron Patto.软件测试[M]. 张小松, 王珏, 曹跃, 等,译. 北京: 机械工业出版社, 2006.

[2] 柳纯录. 软件评测师教程[M]. 北京: 清华大学出版社, 2005.

[3] 张建飞.基于航空领域嵌入式软件代码审查的研究[J]. 科技创新与生产力, 2015(10): 108-109.

猜你喜欢
软件测试
基于OBE的软件测试课程教学改革探索
基于MBD模型自动生成测试用例的软件测试方法
计算机软件测试方法的研究
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
一种航空机载软件测试项目的进度改进模型
军用软件测试文档生成设计与实现
软件测试工程化模型及应用研究
智能电能表软件测试技术概述
《软件测试》课程教学策略研究