航空军工产品配套软件定型测评
2017-12-30秦浩
秦 浩
(中航工业西安航空计算技术研究所,西安 710068)
航空军工产品配套软件定型测评
秦 浩
(中航工业西安航空计算技术研究所,西安 710068)
软件测试是保证软件质量的重要手段之一。航空军工产品配套软件定型测评是定型测评机构依据国家相关标准考核航空军工产品配套软件是否符合系统研制总要求(含软件研制任务书或软件需求规格说明),排除软件缺陷、评价软件质量的过程。介绍了航空军工产品配套软件定型测评工作的目的、测评过程,详细论述了软件定型测评的技术和方法。
航空军工产品配套软件,定型测评,测评过程,测评技术和方法
引 言
随着现代航空装备的发展,计算机技术在航空装备中的应用越来越广泛,软件系统在计算机系统中所占的比重越来越高,软件本身也越来越复杂。软件从最初的不到万行规模,发展到现在动辄数百万行甚至上千万行的规模。这么巨大规模的软件,如果在实际使用过程中发生问题,可能会导致巨额的维护费用,也会给用户的使用带来不便,严重的还会造成人员伤亡。软件质量保证和软件测试是保证软件质量的两种重要手段[1],尤其是软件测试,能够直接发现软件中存在的缺陷,将软件中的缺陷消灭在研制阶段,经过全面、完整测试的软件,其可靠性既可以得到提高,相关功能也可以得到验证。航空军工产品配套软件测试按研制阶段可分为内部测试、三方测试,以及定型(含鉴定)测评。其中,定型(含鉴定)测评作为航空军工产品配套软件随所属武器系统定型的最后一道“关口”,其作用和意义尤为重要。
1 航空军工产品配套软件定型测评的目的
航空军工产品配套软件是指航空军工产品定型委员会负责定型的航空军工产品所涉及的配套软件产品,包括计算机程序、相关的文档和数据,以及固化在硬件中的程序和数据等。
软件定型测评结论与其它定型试验(试飞)结论共同构成航空军工产品配套软件及其所属武器系统定型的依据[2]。实践表明,对航空军工产品配套软件实行定型测评制度,把好软件定型的最后这个“关口”,可以有效地保证航空军工产品配套软件及其所属武器系统的定型质量,并且在一定程度上可以促使研制单位提高其软件的工程化水平。
2 航空军工产品配套软件定型测评的过程
航空军工产品配套软件定型测评的程序[2]通常包括:申请软件定型测评;拟制软件定型测评大纲;审批软件定型测评大纲;实施软件定型测评;出具软件定型测评报告。
按照航空军工产品配套软件定型测评的程序,航空军工产品配套软件定型测评的过程一般包括:测试需求分析、测试策划、测试设计和实现、测试执行、测试总结。
2.1 测试需求分析和测试策划
2.1.1 确定测试级别和测试类型
航空军工产品配套软件定型测评的测试级别一般包括配置项测试和系统测试。
航空军工产品配套软件定型测评的测试类型一般包括:文档审查、静态分析、代码审查、功能测试、性能测试、接口测试、边界测试、人机交互界面测试、安全性测试、强度测试、可恢复性测试、余量测试等内容[3]。可根据软件需求对测试类型进行裁剪,但须在测评大纲中说明理由,并给出各测试类型的测试方法。
2.1.2 确定测试策略
确定测试级别和测试类型后,要分析软件研制任务书和软件需求规格说明等文档,结合软件特点和测评环境,制定测试策略。
2.1.3 明确测试内容及充分性分析
分别针对文档审查、静态分析、代码审查、动态测试等测试类型说明测试内容,并建立各级别动态测试项对测评依据文档需求的覆盖追踪矩阵,进行充分性分析。
文档审查:列出文档审查的全部文档清单,依据确定的文档检查单,检查文档种类的齐全性;文档标识和签署的完整性;文档编制内容的完备性、准确性、一致性;文档内容的详细性;文档编制格式的规范性。
静态分析:根据被测软件的特点,选择软件静态分析工具;利用软件静态分析工具对程序进行检查,并对检查结果作进一步分析确认;通过软件静态分析工具统计软件的质量度量信息。
代码审查:列出代码审查的全部程序文件清单,依据确定的代码检查单,检查代码和设计的一致性,代码的规范性、可读性,代码逻辑表达的正确性,代码实现和结构的合理性。
动态测试:依据软件研制任务书和软件需求规格说明划分测试项,对每个测试项详细说明测试方法、输入条件或场景、预期结果、观测手段和通过准则等信息。
2.1.4 其它策划内容
其它软件测试策划内容包括:明确软件问题类型、严重性等级,以及处理方法;明确测评环境软件项、硬件项、测评场地、测评环境与实装环境的差异性分析;明确测评工作安排,包括进度、人员分工情况等;明确测评结束条件,包括测评中止及重启条件、测评结束条件;明确软件质量评价内容与方法,包括文档质量评价和程序质量评价;明确测评通过准则;明确配置管理、质量保证、安全保密与知识产权保护等措施;对测评项目存在的风险、概率、影响进行分析,并给出相应的应对措施;明确输出的测评文档及要求。
最后,将以上全部测试需求分析和测试策划结果按照GJB 6921-2009《军用软件定型测评大纲编制要求》编写成为航空军工产品配套软件定型测评大纲。
2.2 测试设计和实现、测试执行
按照经过评审的航空军工产品配套软件定型测评大纲,完成全部文档审查、静态分析、代码审查和测试用例设计,并与软件开发方沟通静态测试问题和测试用例设计情况。完成静态测试回归后,在航空军工产品配套软件定型测评大纲确定的测试环境下开展动态测试,记录测试结果和发现的软件缺陷,并完成回归测试。
2.3 测试总结
航空军工产品配套软件测试总结阶段应对以下方面进行总结:
2.3.1 测评过程概述
应按航空军工产品配套软件测评项目经历的测试需求分析、测试策划、测试设计和实现、测试执行和测试总结5个阶段对测试过程进行概述。
2.3.2 测评环境说明
应说明实际测评使用的测试环境软件项、硬件项、测评场所、测评数据、环境差异影响分析。
2.3.3 测试方法说明
对实际测评使用的各测试类型的测试方法进行说明。
2.3.4 测试执行情况
分别对文档审查、静态分析、代码审查、配置项测试和系统测试内容、执行结果、发现的缺陷、影响分析及回归测试的结果进行说明。
2.3.5 软件问题
对测试各阶段发现的问题,按照问题类型、严重程度、确认问题数、已归零问题数和遗留问题数进行统计。
2.3.6 测试有效性和充分性说明
应分别对静态测试和动态测试的有效性和充分性进行说明。
2.3.7 测试评价
按照测评大纲要求对软件文档质量和程序质量进行评价,列出被测软件对系统研制总要求、软件研制任务书、软件需求规格说明规定内容的完成情况的详细对照表,并给出软件功能、性能、接口、安全性等方面明确的结论。
2.3.8 改进建议
针对航空军工产品配套软件定型测评过程中发现的软件问题情况,向软件开发方提出后续软件开发过程中软件工程化改进方面的合理建议。
最后,将上述全部测试的总结内容,按照GJB 6922-2009《军用软件定型测评报告编制要求》,编写软件定型测评报告。
3 航空军工产品配套软件定型测评的技术和方法
3.1 文档审查
文档审查一般分两个阶段进行,一是编写航空军工产品配套软件定型测评大纲前的初审,二是之后的正式审查。初审主要是先对软件研制任务书、软件需求规格说明,以及软件概要设计文档进行审查,目的主要是理解软件需求和执行流程,为编写测评大纲动态测试项做好准备。正式审查时则需按照GJB 438B-2009《军用软件开发文档通用要求》,以及航空军工产品配套软件定型测评大纲确定文档检查单,对全部软件文档进行逐一审查。
3.2 静态分析
静态分析主要完成两个方面的工作:一是质量度量,统计软件质量度量信息,如圈复杂度、注释率、单元行数、扇出数等,一般在定型测评报告中需要统计初始版本和最终版本软件的度量信息;二是违反型号编码规则检查,并根据违反编码规则的情况进行进一步分析,确认软件问题。
3.3 代码审查
高质量的代码审查能够发现60%以上的软件问题,而且往往能够发现很多通过工具和动态测试无法发现的深层次代码问题,如算法实现问题、软件架构问题、时序逻辑问题等。对于如何做好定型测评的代码审查,总结了以下几点方法:
3.3.1 静态规则扫描结果确认
对被审查代码可用采用“以人工审查为主,静态分析工具规则扫描确认为辅”的方式进行,并且应先开展静态规则扫描确认,这样可以先排除代码形式化的错误。
3.3.2 人工审查方法
采用先通读、精读,再重点审查的方式进行。
(1)通读,即对照软件研制任务书、需求和概要设计文档,把握软件整体架构、大致执行流程和各功能模块划分。
(2)精读,即从主函数出发,对照详细设计文档,按程序执行流程,检查每个函数功能实现的正确性、与详细设计的一致性、程序逻辑、时序处理的正确性,以及全局数据传递的正确性等。
(3)重点审查,对一些较复杂或完成重点功能的代码段进行重点审查,审查者利用自身经验,从用户可见的功能出发,假设一些比较复杂的使用场景、极端情况或异常情况,先思考可能会碰到的问题,然后带着问题,通过审查代码,验证这些问题是否被设计人员考虑到并已解决。该方法类似于代码走查,从测试人员的角度去思考代码逻辑的严谨性,往往能够发现一些较深层次的软件缺陷,对于一些安全性等级较高的软件尤为重要。
3.4 动态测试
动态测试的技术和方法主要从实际测评经验的角度出发,对最常见测试类型的技术和方法进行总结:
3.4.1 功能测试
用正常值的等价类输入数据值测试;用非正常值的等价类输入数据值测试;对控制流程的正确性、合理性等进行验证。
3.4.2 性能测试
对时间性能指标的测量主要有3种手段:
(1)对精度要求不高的,如秒级或分钟级性能指标要求的,可以使用秒表。
(2)带操作系统的软件可以在调试环境下计算tick数。
(3)对精度要求较高的,如达到ms级、µs级的,可以在程序中插桩设置时间戳,用示波器进行测量。
3.4.3 接口测试
对模拟量、离散量等接口测试,首先考虑是否能够通过万用表、示波器等设备直接测量,若不能,可考虑通过功能验证进行测试;对数字量,如RS422、RS232、АRINС429、1553B、САN、以太网等接口,应通过接口仿真软件(如串口调试助手等),从以下几方面进行测试:
(1)正常命令的解析和响应:按照协议格式和内容输入正确命令帧,若有直接反馈命令帧,则观察反馈命令帧是否符合协议格式和内容;若无,则通过判断功能响应是否正确来间接地验证接口是否正确。
(2)异常命令的处理和响应,即在输入数据异常,如状态为非法值、数据超范围等,输入帧格式不满足协议要求,如帧头、长度、命令字、校验和、帧尾等发生错误的情况下,软件的处理和响应能力。
3.4.4 边界测试
边界测试主要指输入、输出数据边界,以及状态转化边界、功能界限边界、性能界限边界和容量界限边界等测试;数据边界要测试边界上、边界内和边界外3个点,按照数据分辨率的最小精度进行测试。
3.4.5 余量测试
存储空间余量包括静态存储空间余量和动态存储空间余量。其中,静态余量可通过计算编译后烧写目标代码量与存储空间的比例得到。动态余量一般可通过两种方式计算:一是通过动态地址分配函数malloc()预先分配占用要求余量的空间,观察软件是否正常运行;二是通过map文件计算实际占用空间。
处理时间余量主要是指有周期处理功能的软件的实际执行时间余量。
3.4.6 强度测试
3.4.6.1 时间强度
测试系统连续运行时间超过通常使用的最大值时,软件能否始终保持正常状态。
3.4.6.2 性能强度
性能强度测试的主要方法包括:提供要求处理的信息量,测试超过设计允许的最大值;数据传输能力的饱和试验,测试超出设计能力的数据传输能力,包括内存的写入和读出、外部设备、其它分系统及内部界面的数据传输等;存储范围(如缓冲区、表格和临时信息区)超过额定大小的能力测试。
3.4.6.3 降级能力强度
对设计上允许降级运行的软件,在部分硬件失效(或瞬间失效)时,验证其自恢复能力。
4 结束语
软件定型测评作为航空军工产品配套软件随所属武器系统定型的最后一道“关口”,具有重要的意义。因此,定型测评机构需以《军用软件产品定型管理办法》、《军用软件质量管理规定》、《航空军工产品配套软件定型管理工作细则》及软件工程化管理相关军用标准为具体指南,严格按照规范化的测评流程,加强软件定型测评管理、测评方法手段、测评队伍及测评条件建设,继续推进航空军工产品配套软件定型测评和软件工程化管理工作科学发展,促进航空军工产品配套软件研制、定型质量提高,更好地为军队服务战斗力生成模式转变服务。
1 洪伦耀, 董云卫. 软件质量工程[M]. 西安电子科技大学出版社, 2004: 120~121
2 航空军工产品定型委员会. 航定〔2007〕31号, 航空军工产品配套软件定型管理工作细则[S]. 2005
3 总装电子信息部. 〔2005〕装电字第324号, 军用软件测评实验室测评过程和技术能力要求[S]. 2005
1009-8119(2017)05(1)-0053-04