军用软件自动化测试与质量监督的探讨
2019-01-15马红星张洋
马红星,张洋
(1.海军驻合肥地区军事代表室,安徽合肥 230088;2.安徽赛宝工业技术研究院有限公司,安徽芜湖 241006)
0 引言
近年来,随着计算机科学技术的高速发展,军事装备中计算机软件的应用已经非常广泛而深入,同时,随着军用软件规模的不断扩大,软件设计的复杂程度不断地提高,软件开发中出现错误或缺陷的机率也越来越高。随着软件产业化的发展,人们对军用软件质量的要求越来越高,对军用软件质量的重视程度也越来越高,这就直接导致了军用软件测试过程质量控制也更加重要。在军用软件测试过程的质量监督上,应该充分地利用现代信息技术、软件自动化测试的最新成果,创新软件测试过程的质量监督方式,以确保军用软件测试过程的质量。
军用软件测试一般分为手工测试和自动化测试两类。随着军用软件规模的不断扩大,手工测试的效率低下问题给软件测试工作带来了很多问题。一种成熟的军用软件自动化测试机制,可以在测试工具空闲时执行无用户参与的自动化测试,在相同的测试案例中使用相同的测试数据进行再测试,做到以最小的代价进行全面的系统测试,可以降低人为因素对测试过程的干扰,排除测试的随机性和盲目性,降低冗余,减少遗漏等。
1 军用软件自动化测试的涵义及其现状
军用软件自动化测试是指执行某种程序设计语言编制的自动测试程序,控制被测软件的执行,模拟手动测试步骤,完成全自动或半自动测试。自动化测试能够通过自动化测试工具或其他手段,按照测试工程师的预定计划进行自动的测试,目的是提高军用软件测试的效率,降低人为因素带来的风险,从而达到提高军用软件测试质量的目的。军用软件自动化测试涉及测试流程、测试体系、自动化编译、持续集成、自动发布测试系统和自动化测试等方面的整合。
自动化测试最初是通过外部的手段录制测试的操作过程,再回放其过程从而达到自动化测试的目的。随着研究的不断深入,又诞生了基于数据驱动、基于领域驱动和基于功能驱动等多种不同的自动化测试技术。自动化测试技术的诞生不仅提高了测试的效率,同时也提高了测试的精度。虽不能完全取代手动测试工作,但对测试技术的发展起到了巨大的推动作用。就目前的操作系统而言,自动化测试技术主要有以下几种。
a)Phoronix Test Suite
可支持多种类型操作系统的性能测试,但配置文件的处理方式简单、不利于扩展添加。
b)Autotest
支持Linux系统内核的自动化测试,但搭建困难、对支撑军用软件的版本要求严格。
c)Linux Desktop Testing Project
用于功能的自动化测试,但脚本重用率低、对测试人员的要求较高。
2 军用软件自动化测试框架
通过分析当前主要的测试标准和现有的工具情况,本文提出了一种基于过程的军用软件自动化测试模型,通过对测试过程的抽象达到自动化测试的目的。该模型将测试过程中使用的测试用例、测试脚本和测试数据按照预定的准则进行标准化,并以配置文件的形式进行执行过程的编辑,最后通过脚本驱动将配置文件内容转化为自动化测试流程。
2.1 军用软件自动化测试框架系统的结构
军用软件自动化测试框架主要包括测试工具库、接口库、测试脚本库、测试数据结构和测试驱动等,其结构如图1所示。
图1 军用软件自动化测试框架
a)测试工具库
主要用于存储测试工具和执行配置文件,在配置文件中按照预定义标准将测试工具在执行测试时的执行过程进行脚本化抽象,测试执行时测试驱动会对该配置文件进行 “翻译”,将其转换为可执行的shell脚本。
b)接口库
主要用于存储被测系统的操作接口,包括系统的远端连接连口、执行监控接口、日志提取接口和命令执行接口等。
c)测试脚本库
主要用于存储被测系统的功能测试脚本和接口脚本,由于系统的非图形化功能都可通过命令行实现,因而通过设计自动化测试脚本,自动执行并返回系统执行结果可有效地帮助测试人员节省测试的时间开销。
d)测试数据结构
主要用于存储测试结果数据测试结构及组成,由于不同种类的测试工具或测试脚本执行所得到的测试结果的数据结构并不完全相同,因此为了保证系统的可扩展性可自定义测试数据的解析方法。
e)测试驱动
主要用于将测试工具库中的配置文件转换为可执行脚本,执行自动化测试并记录测试结果数据。
2.2 军用软件自动化测试框架原理
自动化测试框架分为用户接口层、业务处理层和数据处理层,如图2所示。
图2 军用软件自动化测试框架业务模型
a)用户接口层提供了使用该平台的一整套API,通过这些API用户可以方便地进行机器性能测试,包括测试用例选择、测试机器选择、查看测试结果和查看每个机器的运行状态等功能。这些API以Soap协议方式和本地调用两种方式提供给使用者,包括机器信息模块、测试用例模块、测试记录模块、启动测试模块和运行时监控模块。
b)业务处理层接收测试作业,然后安排测试作业的执行。实现方式是为每个测试机器建立一个单独的线程,专门处理该机器的测试任务。根据系统的资源耗用程度动态地调整测试任务分配,保证在系统健康、平稳运行的过程中完成所有的测试任务。
c)数据处理层负责和数据库交互,提供系统运行时所需要的数据以及保存运行产生的数据。对上提供查询数据服务,业务处理层需要的数据全部由数据处理层提供,包括查询机器信息、查询测试用例信息和查询测试记录信息等。
2.3 军用软件自动化系统性能测试的框架
2.3.1 军用软件自动化系统性能测试
自动化系统性能测试的着重点是准确地获取系统在某一状态下的性能指标,具有以下特点。
a)测试结果准确
自动化系统性能测试通过模拟用户操作,对服务器发起负载,同时监控服务器的状态,考察系统业务的响应时间和资源之间的关系,从而获取系统的性能指标。通过工作负载分析,建立尽可能接近实际情况的测试场景,同时通过一系列的测试前准备工作,以及测试采样设置,降低性能测试中的干扰因素。
b)节约测试成本
进行性能测试的成本,特别是硬件的成本很大。在保证测试准确性的基础上,节约测试成本,如在企业员工的机器上安装负载生成器,每台机器在测试时分担一小块的负载生成任务。
c)减少手工工作量
性能测试需要使用大量的不同用户进行操作,手工创建这些用户帐号信息,以及设置权限等的工作量非常大,借助自动化捕获回放工具可以完成这部分工作,同时可使用前面的自动化系统回归测试框架进行关键功能的冒烟测试。
2.3.2 军用软件自动化系统性能测试框架的构建
性能测试框架的搭建通常包括以下流程。首先,配置标准版本的系统软硬件环境,并安装性能监控器部件;然后,从版本管理系统上将稳定的代码待测版本取下,进行构建并部署到专门的性能测试环境中,完成系统的配置和初始化。系统在进行性能测试前经过自动化系统回归测试框架的冒烟测试,验证系统的基本功能正常,同时通过自动化工具进行测试用数据创建,如用户帐号信息、权限和其他的测试实体,尽可能地减轻手工工作量。在以上任务完成后根据工作负载模型和测试用例,创建和执行测试脚本和场景,收集并分析测试数据,得出系统性能指标。
3 军用软件测试过程的质量监督
3.1 控过程,增强质量监督效果
军用软件测试过程的质量监督非常重要,需要严格把控,注重质量监督的效果。要强化专项监督,使基本要素受控。要重视软件产品质量历史状况与数据,找出自身薄弱环节和隐患所在,有针对性地选取若干监控要素,现场重点监督验证,强化软件测试的过程质量意识,确保软件质量。
通过优化过程监督,对软件测试进行跟踪,使重点过程受控。通过科学设置里程碑的软件测试质量监督点,选取对产品质量影响比较大的重点测试项目和过程进行针对性的监督,提高质量监督的费效比。同时,可以借助信息技术、智能监控设备和实时程序控制等工具,判断测试过程有无异常、是否受控,进而对产品的质量作出评价,实现可靠的远程质量监督。
通过深化重点监督,使关键环节受控。关键测试点对装备质量来说都具有牵一发而动全身的作用,因而必须重点关注。结合国内现有的、先进自动化测试检测手段来完善回归测试,经过深入的测试和科学分析,确认对装备质量没有影响才准予放行,对于偏离许可、让步接收,更要慎之又慎。
3.2 严把关,确保软件测试质量
要遵循测试程序。软件的测试既是对产品自身质量的一次测试,更是对软件质量工作的一次把关。基于此,我们应该严格地按照规范及标准的要求,按程序和步骤监督测试的各项工作。测试前,要认真学习需求技术文件,熟悉相关标准要求;测试中,要按规范一丝不苟地认真监督,把控测试过程,审查测试记录数据;测试后,会同测试单位召开总结会,通报测试结果,总结经验教训,为下一步的质量控制提供依据。
要吃透标准。即要对军用软件测试标准烂熟于心,对测试规范了然于胸,如此方能做到驾轻就熟,确保软件测试质量。
4 结束语
军用软件自动化测试具有效率高、能快速全面地实行回归测试等特点,因而正在成为军用装备中主要的软件测试方法之一。尽管如此,军用软件自动化测试还不能解决软件潜在的所有问题。21世纪是质量的世纪,武器装备的快速发展,对军用软件设计开发和测试质量监督工作提出了更高的要求。我们应正确地认识和把握软件测试质量监督工作,从中不断地总结经验,吸取教训,强化科学监督,消除产生和诱发军用软件质量问题的各种因素,不断地提高军用软件质量,在软件的具体测试过程中去探索、去研究、去实践、去规范,为装备的质量建设作出新的贡献。