APP下载

基于国产操作系统的软件测试方法研究

2019-03-29梅磊刘娜

航天标准化 2019年1期
关键词:软件测试麒麟静态

梅磊 刘娜

(中国电子科技集团公司38所,安徽合肥,230000)

文 摘:国内软件研发平台的国产化趋势,使提高国产操作系统平台下软件的质量已经成为软件测试领域所面临问题的重中之重。通过对中标麒麟操作系统 (Kylin)和锐华嵌入式实时操作系统 (ReWorks)的发展现状与使用特点的介绍,结合雷达实际人机软件及数据处理软件的开发环境,对基于国产操作系统的软件测试方法进行研究,分析测试结果,总结软件测试方法设计、应用及实践的过程。

随着网络技术的迅猛发展和移动通信技术的日益普及,部队装备的信息、通信系统时刻面临着前所未有的攻击风险和安全挑战。特别是近年来,在国家大力支持下,军队大力发展信息化建设,构建现代化作战体系,研发自主可控且拥有知识产权的安全、可靠、稳定的信息化系统已经被提升到了国家战略高度[1]。

当前,国防信息化系统的潜在威胁主要体现在:①无线通信网络的开放性与终端安全防护手段的匮乏将为信息化系统带来极大的安全漏洞;②大量装备的应用软件在使用前并未经过严格的软件测评,其软件本身就隐藏着很多的缺陷;③操作系统的核心技术一直以来都被国外公司垄断,在战时可能带来极大的安全隐患[2];④新型的网络渗透性攻击手段多、破坏性强、隐藏深,同样对信息系统构成巨大威胁。

此外,供应链全球化也为信息系统的安全建设带来了严峻的挑战,国产计算机系统的核心硬件基本依赖于外部进口,操作系统、数据库、硬件芯片等专利技术,均被欧美发达国家所垄断[1]。这些产品由于不具有自主可控性,极有可能被预置后门或漏洞,同时,此类设备或系统的维护更新费用高昂,导致长期使用成本居高不下。在最近爆发的中美贸易战中,核心芯片之争带来的高额罚款等一系列惨痛教训更是给所有人都敲响了警钟,没有核心技术,就要受制于人。

通常,装备信息系统的安全防护都体现在网络层或数据层,而无法从根源进行保护。因此,为了提高设备的安全等级,近年来在国内开始推广使用国产操作系统及相关应用程序,这类安全的操作系统具有以下几个特征。

a)最小特权原则,即每个特权用户都只能进行权力范围内的操作。

b)自主访问控制,即每个属主都有权决定是否授予自己客体访问权或部分访问权。

c)强制访问控制,包括保密性和完整性访问控制。

d)网络安全审计,指利用记录、系统活动和用户活动等信息,检查、审查和检验操作事件的环境及活动,从而发现系统漏洞、入侵行为或改善系统性能的过程。

e)安全域隔离,通过安全域划分,限制进程对资源的访问,从而严格控制恶意攻击对操作系统的影响。

由于操作系统是所有软件运行环境的基础条件,对设备的稳定运行起着关键作用。同时,随着国家对核心高科技基础研究的大力支持和建设,国产操作系统的安全性、性能及稳定性也愈发完善。因此,现在越来越多的装备开始优先使用国产操作系统及相关工具链来进行软件的研发工作,其中,最具代表性的就是中标麒麟(Kylin)操作系统和锐华 (ReWorks)嵌入式实时操作系统[3]。

麒麟操作系统和锐华嵌入式实时操作系统具有易使用、跨平台、低成本等特点,最主要的是自主可控,它们可以取代多年来被国外企业垄断的同类产品,如微软公司Windows、风河公司VxWorks以及开源的Linux等操作系统。虽然国产操作系统在装备研发过程中日益普及,但基于这两个系统的装备软件系统测试的研究工作仍处于起步阶段。

1 国产操作系统基本结构及软件测试

1.1 麒麟操作系统基本结构

麒麟操作系统是国防科技大学计算机学院自上世纪80年代以来围绕 “银河”高性能计算机开发出来的操作系统[4]。该操作系统是国内目前安全级别最高的操作系统,同时通过了公安部计算机信息系统安全产品质量检测检查中心的安全认证和中国人民解放军信息安全测评中心军用B+级别安全认证,并且产品符合GB/T20272—2006《信息安全技术操作系统安全技术要求》中相关条款的要求[5]。麒麟操作系统已经逐步应用于政府、国防、金融、证券、电力、电子商务等众多行业,提供安全、可控、稳定的关键应用需求。麒麟操作系统的结构如图1所示。

麒麟操作系统的基础工具环境基于Linux开发,采用X-Window作为系统的基本图形环境,支持Gnome或KDE桌面环境,支持B/S架构的图形化管理工具。麒麟操作系统的开发语言通常采用C++/QT,作为一个跨平台的C++图形用户界面应用程序框架,支持面向对象语言编程,易扩展的同时允许组件化编程,同时,QT提供的IDE开发工具又极大程度提高了开发效率,而强大的跨平台能力,也让软件具有很强的系统兼容性。

图1 麒麟操作系统结构图

1.2 ReWorks操作系统基本结构

ReWorks操作系统是中国电子科技集团公司32所自主研制的嵌入式实时操作系统,在国内要求国防产品自主可控的大环境下,已经在软件的开发研制中得到了大量推广和应用,其组件能够自由构建,同时兼容风河公司的VxWorks产品,提供的可视化开发界面,也使得其开发难度大大降低[5]。ReWorks体系结构如图 2所示。ReWorks嵌入式实时操作系统的特点具体表述见表1。

图2 ReWorks操作系统结构图

表1 ReWorks嵌入式实时操作系统的特点

1.3 软件测试流程

软件测试是指用来促进鉴定软件的正确性、完整性、安全性和质量的过程。简而言之,软件测试的目的是:为在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估。按照目前软件的开发模式,当前软件的测试流程仍主要沿用传统型的系统测试模型,强调对整个软件功能实现的控制与覆盖,并对每个阶段产生的测试产品进行评审来实现对测试产品质量的监控与审核。根据测试需求、类型和每个测试项的充分性要求,设计和编写测试用例,通常要求覆盖各种测试类型,包括功能测试、性能测试、接口测试、人机交互界面测试、安全性测试等。同时,对于发现的缺陷要及时整理问题报告,并协助开发人员完成软件版本的改进和升级。

整个软件的测试流程通常经历5个阶段:测试需求分析、测试策划、测试设计与实现、测试执行和测试总结[6](图3第二行的结构中描述5个阶段需要完成的工作)。测试流程图如图3所示。

图3 传统型系统测试流程图

作为国产操作系统的测试方法,与使用Windows、VxWorks等国外开发环境的区别主要体现在测试执行阶段,由于开发环境的改变,需要针对国产操作系统搭建具有不同适应性的测试环境,包括静态分析、动态执行的测试环境等。同时,根据不用的测试类型,选用不同的测试方法进行验证。

2 基于国产麒麟操作系统的测试技术

麒麟操作系统是目前国内安全级别最高的操作系统,可以为软件提供更加安全、可靠的运行环境[5]。基于麒麟操作系统的静态分析测试环境见表2。

表2 基于麒麟操作系统平台的静态分析测试环境

由于麒麟操作系统基于Unix内核,与Windows系统下使用Klocwork进行静态分析的过程会有差异。为了能够缩减配置的步骤,提高静态分析的效率,利用系统提供的命令行指令编写自动静态分析脚本[6],同时还允许开发人员验证源代码的质量之前向服务器提交源代码进行管理控制[7]。

在使用过程中特别要注意的是,在QT开发环境中需要将被测软件参数中的项目名称和路径修改为被测软件对应的项目信息,而且需要对被测软件项目进行重新编译,编译通过后才能继续使用Klocwork进行静态分析。若为初次使用,必须要设置Klocwork的安装参数,而且项目名称、路径均不能使用中文。脚本自动执行,完成后会将静态分析结果自动上传至测试数据服务器以供测试人员使用。

对于麒麟操作系统下的动态执行过程,根据人机界面应用软件Pro_1的需求规格说明内容进行需求分析,按照其功能、性能以及接口要求,设计测试项与测试用例,每个测试用例都有唯一的名称与标识,同时针对不同的功能对前提条件、初始条件以及终止条件进行约束。搭建测试环境时,首先确保麒麟操作系统以及被测软件的版本与实装环境的一致性;然后,按照测试设计要求,将所有陪测设备与陪测软件通过网络在局域网中进行连接,测试通路后,才能进行测试执行工作。测试人员按照用户手册的要求设计测试步骤,记录每个步骤的输入、输出数据以及每个用例的执行结果,并与评估准则进行比对。若测试结果通过,则表示被测功能正常;若失败,则记录失败时软件的状态与特征,同时详细记录问题发生的过程、影响因素以及初始条件,由监测人员核实并复现后,提交开发人员进行修改,修改后再回归测试中设计用例进行验证。整个执行过程严格受控,确保软件测试行为的有效性和独立性[8]。

麒麟操作系统下,测试执行流程如图4所示。

被测软件Pro_1的测试用例类型统计见表3。

图4 麒麟操作系统测试执行流程图

表3 Pro_1测试用例统计表

3 基于ReWorks操作系统的测试技术

ReWorks嵌入式实时集成开发环境 (ReDe)以Eclipse开发体系结构为基础[9],结合嵌入式软件开发工具链,同时选用国产龙芯3A处理平台,确保数据处理性能指标完成的同时,确保数据通信的安全可控[10]。基于ReWorks操作系统的静态分析测试环境见表4。

表4 基于ReWorks平台的静态分析测试环境

在ReWorks的IDE开发环境中对代码进行静态分析时,首先需要重新构建项目,清理删除软件工程目录中的所有临时文件,然后在ReDe控制台中对项目工程文件使用gnu_make进行统一编译。Klocwork的分析及编译过程见表5。

表5 Klocwork的分析及编译过程

在ReWorks操作系统下的动态执行过程,由于软件Pro_2不具备人机交互界面,因此从需求规格说明中分析提取得到的软件测试需求主要涉及功能、接口、性能、数据处理以及安全性等测试内容[7]。具体的测试过程与麒麟操作系统下动态测试执行的过程类似,最大的区别在于测试环境的搭建。由于嵌入式软件通常运行在数据处理板卡或服务器上,需要通过光纤、网络或串口等方式进行通信,为了保证通信速率以及系统运行的稳定性,通常采用实装环境进行测试,再辅助网络或串口接口仿真软件进行数据的收发仿真。其中,被测软件Pro_2所设计的测试用例见表6。

表6 Pro_2测试用例统计表

4 测试结果分析

我们结合雷达实际人机软件及数据处理软件的开发环境,在为期2个月的工作周期里,搭建了2套国产操作系统的实装测试环境,并对软件项目Pro_1及Pro_2分别进行了静态分析和动态测试执行工作。经过静态分析测试后,测试的结果和缺陷统计情况见表7。

表7 项目Pro_1、Pro_2静态分析测试情况统计

由表7可见,使用Klocwork静态分析工具发现的软件静态分析缺陷主要涉及控制流、数据流及表达式分析等类型,反映出软件需要改进提高的地方。特别对于严重等级的缺陷,还会要求开发人员给出影响域分析和缺陷分析,以确认严重缺陷带来的不确定因素是否会对软件的运行造成不可挽回的损失。测试人员会根据代码的修改情况进行代码一致性比对来确认代码的修改情况,从而达到对软件版本和质量的监督与管理,极大提高被测软件的规范性和可靠性的目的。

项目Pro_1、Pro_2的动态测试执行结果统计情况见表8和表9。

表8 项目Pro_1动态测试情况统计表

表9 项目Pro_2动态测试情况统计表

由测试结果可以得出,麒麟操作系统下的项目Pro_1和ReWorks操作系统下的项目Pro_2的缺陷主要集中在文档缺陷和代码缺陷。对具体的缺陷内容进行分析可以得出以下结论。

a)文档缺陷主要是体现为需求设计与代码实现的不一致,或是需求描述错误,与代码的实际运行情况不符。这类缺陷的严重等级通常为一般,对软件运行不会造成严重影响,通过修改相应需求或设计文档达到关闭缺陷的目的。

b)代码缺陷,则是在代码实现过程中由于对功能实现方式的不明确,未能满足性能指标要求或是由于开发人员个人因素导致的编码错误,此类缺陷往往会带来较严重甚至致命的后果,因此缺陷必须要通过修改代码或重新进行功能模块的设计与实现,才能完成缺陷的闭环。

通过动态测试执行之后,往往能够发现软件更深层次、更具有隐藏性的缺陷,而这也是国产操作系统下,军队装备软件测试工作的实际意义所在。

在当前软件迫切的安全性测试需求下,基于国产操作系统的软件测试也愈发显得重要。随着国产化进程的推进和国家安全形势的日益严峻,特别是现代装备的研制与使用需要大量应用组网通信、无线联网控制等技术手段,而面向服务的体系架构又极容易为外部攻击创造条件。当前基于国产操作系统的软件测试方法研究仍处于起步阶段,发现的缺陷主要集中在常规传统的问题类型,而面对新型网络的渗透性压力攻击时,仍显得捉襟见肘。只有国产操作系统下软件测试方法的日益完善,才能从系统体系的安全层面真正有效抵制各类安全性渗透和病毒及木马程序的入侵。

猜你喜欢

软件测试麒麟静态
麒麟“破冰”
麒麟献瑞
软件测试方向人才培养“1+X”融合研究
麒麟鱼
最新进展!中老铁路开始静态验收
静态随机存储器在轨自检算法
动得多,还要坐得少——评WHO《身体活动与静态行为指南》
航天软件测试模型构建与应用
猜猜他是谁
关于 Web 应用系统的软件测试的研究