国产操作系统自动化测试平台技术研究

    王晖

    

    

    摘 要:自主可控是确保我国网络空间安全可托底的基础,近年来,我国自主可控信息技术和产业持续跨越式前进,国产操作系统是构建自主可控的信息安全体系的关键,其本身的稳定性、可靠性和安全性至关重要。因此,操作系统在研发过程中,全面严格的测试验证成为必需,同时,为减少手工测试的劳动量和出错率,按照预定计划实现自动化测试,是操作系统研发测试验证的必然趋势和要求。文章通过自主开发以及引入完善、综合应用主流商用或开源软件测试工具,研究构建由测试管理、自动化测试、缺陷管理等子系统组成的国产操作系统测试体系,实现测试全过程管理的统一高效的国产操作系统自动化测试平台,以保证国产操作系统研发和维护时的质量可靠性,满足建立完整的国产操作系统生态链的需要。

    关键词:操作系统;自动化;测试;自主可控

    没有网络安全就没有国家安全,自主可控是确保我国网络空间安全可托底的基础。近年来,随着国家“863”计划、核高基等重大科技专项的展开并逐渐取得成果,我国自主可控信息技术和产业持续跨越式前进,以龙芯等为代表的处理器,以及以中标麒麟操作系统、达梦数据库等为代表的基础软件,均已初步具备与国外同类产品竞争的规模和能力,并逐渐形成国产自主可控领域基础软硬件生态产业链,为我国构建安全可靠的信息系统提供了强有力的基础软硬件环境支撑。

    操作系统是计算机软件的基础和灵魂,更是软件产业的战略制高点。操作系统研发工程浩大,其中涉及的技术方方面面,从底层各种各样硬件设备的适配到种类繁多的上层应用软件的支持,过程复杂、历时持久,整个项目中产品质量控制显得尤其重要。操作系统在研发、使用、升级等环节,都需要对系统中每一个组件或功能模块进行全面严格的测试验证。为达到提高操作系统软件质量的目的,减少手工测试的劳动量和出错率,通过引用或自研工具,按照预定计划,实现自动化测试,是操作系统研发测试验证的必然趋势和要求。

    因此,本文将针对在研发和维护国产操作系统过程,研究并构建一个统一的、高效率的自动化测试平台,以保证国产操作系统产品的质量可靠性,同时,进一步满足打造和完善完整的国产操作系统生态链的需要。

    1 体系结构

    通常情况下的软件測试,测试人员首先设计合理的测试用例,按照预定测试计划流程,实现基于测试用例的软件测试并得到测试结果,最后与预期结果进行比对,形成软件测试结论。自动化测试,则实现上述软件测试过程中尽量将手动的测试行为转化为机器执行,以达到减轻人工劳动量、节省时间、减少手动出错率、提高测试效率的目的。

    对于满足以下条件的软件开发,将更有利于实现自动化测试。

    (1)软件需求明确具体、相对固化。

    自动化测试脚本的编写实质上也是一个软件开发的过程,如果软件需求模糊或变更频繁,将直接造成测试脚本编写和测试用例设计的难以形成或不断调整,从而增加了自动化测试开发维护的成本和时间。

    (2)软件生命周期阶段清晰、时间长。

    软件测试过程一般包括:测试计划、设计开发(测试脚本编写和测试用例设计)、测试执行和测试评估,整个过程需要一定的时间周期,这就要求被测试软件本身的生命周期各个阶段划分清晰明确、整个开发时间较长,否则,将难以支撑软件测试过程的时间需要。

    (3)测试脚本、测试用例能够复用。

    测试脚本的重复使用率越高,构建自动化测试体系平台的成本也就越低,效益发挥也就越明显。另外,针对手工软件测试无法完成或重复劳动的工作,比如性能压力测试、大数据量测试用例输入测试等,也可以考虑引入自动化测试。

    国产操作系统作为自主可控领域的基础软件,研制周期长,功能需求相对明确,针对龙芯、申威等国产化硬件平台的各种不同版本,都是基于同一个版本针对不同CPU特点和需求延伸定制而来,大部分模块功能稳定、重用性高,测试过程中的回归测试次数多,因此,通过自主开发以及引入完善、综合应用主流商用或开源软件测试工具,制定有效可行的测试计划、执行准确完整的测试用例,构建全过程管理的统一高效的自动化测试平台非常有必要,用以保证国产操作系统研发、使用和维护时的质量可靠性,满足建立完整的国产操作系统生态链的需要。

    国产操作系统自动化测试平台由测试管理、自动化测试、缺陷管理等子系统组成,其体系结构如图1所示,包括测试需求规格说明、测试计划制定、测试脚本编写和测试用例设计、测试执行结果获取、测试评估报告撰写和软件缺陷改进跟踪等过程。

    2 设计实现

    2.1 缺陷管理子系统

    在整个缺陷的生命周期中,缺陷管理子系统实现将对缺陷进行追踪管理。主要包括以下功能:报告软件缺陷、检索功能、软件缺陷变更邮件通知功能、软件缺陷历史变更记录、跟踪和描述处理软件缺陷、软件缺陷的相关附件管理、产品分类管理、软件缺陷的审核机制、支持存储大量软件缺陷记录、友好的用户界面、灵活多样的配置设定等。软件缺陷管理子系统与测试管理子系统组合集成一个整体的自动化测试管理平台,缺陷管理与测试管理两个子系统之间通过增加设计的外部接口进行彼此的关联和统一,实现报告的软件缺陷与操作系统的版本、测试用例多对一的对应关系,即一个测试用例可提交多个软件缺陷。

    2.2 测试管理子系统

    测试管理子系统包括以下功能:测试计划制定、测试用例管理、测试执行、测试用例与软件缺陷关联。测试计划制定,实现对操作系统产品的测试规划,划分测试任务的范围、方法和时间等,形成产品测试计划,并具备测试计划的复用机制;测试用例管理,对操作系统各个模块的测试用例按制定的测试计划分类创建和管理,具体包括:测试方案拟制、测试方法技术和策略选择、测试目标确定、测试环境配置、测试数据输入、测试步骤选定、预期结果设定、是否自动化实现设置、附件文档管理等,测试用例管理可实现用例评审标记,并具备复用机制。

    测试执行管理为动态过程,包括:手动测试执行和自动测试执行,能够全方位地观察测试用例的执行结果,以及加强对测试过程的全时记录,手动执行测试利用手工记录每一次执行测试用例后的结果,自动执行测试在配置的测试环境下,将测试用例与自动化测试子系统中的测试脚本匹配关联,自动调用相应的测试脚本执行测试任务;同时,通过测试用例与对应的缺陷管理的关键字进行匹配关联,实现缺陷管理子系统与测试管理子系统的有效整合。

    标识测试用例是否能够进行自动化测试,是否可自动化主要通过对后台数据库中的标记测试用例配置自动化状态并添加唯一指定标识来实现;且优先在自动化测试脚本库中查询指定的测试脚本名。

    配置执行自动化测试用例时测试环境,需要标明一个测试执行对应一个测试环境,一个测试环境中可包括全局测试环境与本地测试环境,可以通过IP和测试用户配置实现多台测试主机以及测试执行的权限管理。

    2.3 自动化测试子系统

    自动化测试子系统,根据测试管理子系统中是否自动化配置状态和指定标识,实现手动测试或自动化测试。根据实际测试需求,制定出相应的测试策略,对操作系统测试环境进行配置,包括测试环境的参数配置(主机网络地址IP、操作系统等)、测试数据管理配置(测试脚本与数据的存放位置)、邮件提醒配置、测试结果数据配置(测试结果的原始数据及测试日志的存放位置),关联测试管理子系统提供的测试用例,支持对操作系统自动化测试脚本和测试工具的统一管理和调用。另外,实现對测试结果数据、测试日志的处理分析,得到自动化测试执行的结果,还可以对回归测试中或者基准测试中的一些对比测试结果数据进行图标直观输出。主要功能模块包括:单元测试、GUI测试、安全测试、性能测试、设备模拟框架及硬件兼容性测试、可靠性测试、命令测试等。操作系统自动化测试子系统的系统结构如图2所示。

    (1)单元测试:对操作系统软件中的最小可测试单元进行检查和验证。主要实现:提供对源代码的3种测试方式(白盒测试、黑盒测试以及回归测试)、提供对于主流编程语言(例如C,C++,Java,Python等)不同的自动化测试。

    (2)GUI测试:对操作系统GUI界面进行测试和验证。主要实现:支持脚本化语言、支持对操作系统界面中所有与对象的识别、支持函数的可重用、提供扩展接口。

    (3)安全测试:对现有的开源或者商业工具进行研究或二次开发,实现操作系统安全测试子系统,包括分析检查器、内存泄漏检测、二进制代码扫描器、应用程序痕迹检查(Application Footprinting,AF)、模糊测试(Fuzz Testing Tools and Techniques,FTTT)、静态代码分析(Static Code Analyzers,SCA)等功能。主要实现:针对源代码测试出静态类型的弱点、对任何类型的补丁创建基线并进行回归测试、帮助测试人员找到可能触发或隐含恶意代码的地方、支持处理大容量的源代码或很大的可执行文件、不改变被测试的软件和不影响源代码、产生有价值的诊断预测和度量分析报告。

    (4)性能测试:实现针对操作系统的性能测试,用于查找软件性能瓶颈,进行优化,保证提升操作系统的性能;实现针对应用的性能测试,用户常使用的应用软件,其性能直接影响了用户对操作系统的评价和使用意愿性。主要实现:支持对系统的整形运算、浮点运算能力和系统调用、编译器性能、文件读写速度等性能参数进行测试;支持对系统进程处理能力、进程切换开销、文件处理能力和内存调度等方面进行测试;支持针对TCP/UDP请求/响应的速率和吞吐率进行测试;支持针对SMB文件服务器负载能力和吞吐量进行测试;提供测试系统IO处理能力;支持实际用户的操作行为模拟和实时性能监测,实现对静态的和动态的资源(文件、Servlet,Perl脚本、数据库、FTP服务器、HTTP服务器等)的性能进行测试;支持不同压力类型下的整体性能分析,更快地确认和查找问题,找到系统的瓶颈。

    (5)设备模拟框架及硬件兼容性测试:实现设备模拟框架,为所有设备提供一个易用的输入输出控制接口;该设备模拟框架可以加快测试用例的开发,使调试和测试设备代码变得更加容易。同时,提供各种常规硬件设备的测试方法,实现相应的硬件兼容性测试;操作系统的硬件兼容性一直是困扰操作系统行业发展的一个重要问题,关于设备模拟框架和硬件兼容性测试的研究实现,将有力支撑国产操作系统对多种外围设备的支持和优化。主要实现:支持提供设备模拟框架;支持提供操作系统内核空间到用户空间的输入输出控制接口;支持内核的特定目标区域测试用例执行;支持执行可能不存在设备的驱动程序内核代码;支持硬件兼容性测试,包括硬件设备的识别、配置、加载以及性能等方面测试。

    (6)可靠性测试:验证国产操作系统的需求是否被正确实现,并找出所有对软件可靠性影响较大的问题,通过使可靠性测试工作自动化来帮助改进OS内核。主要实现:提供测试Linux内核和相关部件的测试套件,完善并扩充相关的测试用例集;支持实现针对系统调用、内存、IPC,I/O、文件系统和网络等的测试。

    (7)命令测试:国产操作系统中,一切都是文件,系统管理的命令(内置Shell命令和OS命令)是其正常运行的核心,实现操作系统命令测试,发现问题并改进操作系统质量可靠性。主要实现:支持覆盖命令测试用例的测试数据文件和测试脚本编写及复用;支持测试实际结果与预期结果比较分析。

    3 结语

    国产操作系统作为构建自主可控的信息安全体系的关键基础,构建自动化的测试平台,是其质量可靠性的重要保证。自动化测试平台应支持对操作系统测试流程的全方位管理,具有严格控制用户权限及系统灵活配置功能,支持测试用例可自动化设置,测试执行提供手动执行与自动执行类型选择,软件缺陷与测试用例存在关联统一的机制,通过配置可以使整个项目的参与人员及时地获取软件缺陷变化的信息,具备测试结果的统计功能以及支持多种类型的自动化测试。

    [参考文献]

    [1]蔡开元.软件可靠性工程基础[M]. 北京:清华大学出版社,1995.

    [2]宫云战,刘海燕,万琳,等.软件测试性的分析与设计技术研究[C]. 北京:2000 年全国测试学术会议,2000:271-274.

    [3]JIN Z,OFFUTT J. Deriving tests from software architectures[C]. Hong Kong:International Symposium on Software Reliability Engineering,2001:308-313.

    [4]杨芙清,梅宏,吕建,等. 浅论软件技术发展[J]. 电子学报,2002(12a):1 901-1906.

    [5]GAO JZ,TSAO J,WU Y. Testing and quality assurance for component-based software[M]. Boston:Artech House,2003.

相关文章!
  • 融合正向建模与反求计算的车用

    崔庆佳 周兵 吴晓建 李宁 曾凡沂<br />
    摘 要:针对减振器调试过程中工程师凭借经验调试耗时耗力等局限性,引入反求的思想,开展了

  • 基于MATLAB 的信号时域采样及

    唐敏敏 张静摘要:频率混叠是数字信号处理中特有的现象,发生频率混叠后,信号会分析出错误的结果。而采样过程中,由于频率不够高,采样出

  • 卫星天线过顶盲区时机分析

    晁宁+罗晓英+杨新龙<br />
    摘 要: 分析直角坐标框架结构平台和极坐标框架平台结构星载天线在各自盲区状态区域附近的发散问题。通过建