技术文章

智能装备软件测试探索

时间:2024-04-10

作者·王忙生

随着互联网和物联网的发展,过程中产生的数据量正在呈指数级增长,因此大数据、云计算等技术也都应运而生。而要处理分析这些海量数据,并满足个性化需求,单靠人工或传统的软件已无法满足需求,软件必须能够处理复杂任务,能够处理和分析海量数据集,帮助人们从中提取有价值的信息才能满足要求,因此智能软件也就呼之欲出。而智能软件自身所拥有的特性与优势,也使得智能软件必将会应用在复杂的高安全领域,因此智能装备软件也将是未来的必然趋势。

  

一、 智能装备软件

要理解智能装备软件,首先需要了解智能软件。而智能的含义很广,其本质有待进一步探索,因而对“智能”难于给出一个完整确切的定义,但一般可作这样的表述:智能是人类大脑的较高级活动,它至少应具备获取和应用知识的能力、思维与推理的能力、问题求解的能力和学习能力。

因此,智能软件(intelligence software)可定义为能产生人类智能行为的计算机软件。更详细点可以定义为能够模拟人类智能行为,具有一定程度的自主学习、推理、理解、感知和决策能力的软件。

而智能装备软件可泛指在高安全领域应用的智能软件,它们被设计用于提高装备操作的各方面的效率和效能。这些软件通常包括高级的数据分析、自主决策支持系统、情报收集与处理、战术决策辅助、战场管理、无人机控制、网络安全、信号处理、仿真模拟等功能。例如当下热门的蜂群无人机应用,既可以进行情报收集,也可以进行自主决策、战术决策辅助等,属于典型的智能装备软件,且各国也都在紧锣密鼓的研制过程中。

装备领域由于其特殊性,也使得智能装备软件与普通智能软件相比有其特殊性,区别主要体现在以下几个方面:

  1. 安全性和保密性:智能装备软件由于其应用的敏感性,这类软件必须具备极高的安全性和保密性,以防止敏感信息泄露或被敌方利用。而普通智能软件虽然也需要考虑安全性,但通常不需要达到装备级别的高度保密。
  2. 可靠性和鲁棒性:智能装备软件在装备应用中,软件的可靠性和鲁棒性至关重要,因为任何故障都可能导致严重的后果。因此,装备软件需要经过严格的测试和验证。而普通智能软件虽然也需要可靠,但通常没有装备软件那么严格的要求。
  3. 实时性和响应速度:智能装备软件在许多场景中,软件需要能够实时处理大量数据并快速做出响应,这对于战场决策至关重要。而普通智能软件虽然实时性也很重要,但通常没有装备应用中那么紧迫。
  4. 适应性和环境复杂性:智能装备软件需要能够在复杂多变的战场环境中正常工作,这可能包括极端气候、电磁干扰等。而普通智能软件通常在更为稳定和受控的环境中运行。
  5. 应用领域的特殊性:智能装备软件有专用目的设计,包括但不限于情报分析、武器系统控制、战术决策等。而普通智能软件应用于商业、医疗、教育、娱乐等多个民用领域。

相比来说,智能装备软件的设计和开发过程更加严格,要求更高的安全性和可靠性,并且需要适应复杂的战场环境。而普通智能软件则更侧重于民用需求,虽然也需要考虑安全和可靠性,但通常没有装备软件那么高的要求。

 

二、 智能装备软件测试

软件测试作为软件开发过程中的一个重要组成部分,贯穿整个软件开发生命周期,是对软件产品(包括阶段性产品)进行验证和确认的活动过程。其目的是尽快尽早地发现在软件产品中所存在的各种问题,与用户需求、预先定义的不一致性。检查软件产品中可能存在的Bug,并且编写缺陷报告,交于开发人员修改。软件测试人员的基本目标是发现软件中的错误。

无论是普通智能软件还是智能装备软件,都对软件测试带来了新的挑战,不论是代码规模还是复杂程序都提升了几个量级。而如何应对新形势下的智能软件测试,都对测试厂商及工具提出了更高的要求。

从软件测试本身来讲,测试技术按照不同维度进行划分,有多种分类方式。如果按照测试执行方式分类,可以划分为静态测试和动态测试两大类。从这两方面来讲,无论是普通智能软件还是智能装备软件,不管是在代码规模还是复杂程序方面都提升了好几个量级,这对于软件静态测试和动态测试都提出了更高要求。

两种分析技术相比而言,静态测试更容易应用于智能软件测试。静态测试可使用自动化工具对软件代码进行分析,以查找潜在缺陷和错误,而不需要实际运行软件。这种测试方法可以在智能软件开发周期的早期阶段进行,可以帮助开发团队识别和修复问题,从而减少后期维护成本和提高软件质量。

而面对大代码量的静态测试,对测试工具而言要求就非常高,不仅要保证分析质量,还要保证分析速率,无疑对静态测试工具提出很高的要求。智能软件静态测试通常包括以下几种类型:

  1. 代码审查:通过人工或工具检查代码,查找潜在的错误和不符合编码标准的地方。
  2. 代码质量分析:使用工具对代码质量进行分析,如圈复杂度、代码重复、代码规范等。
  3. 静态代码分析:使用工具对代码进行分析,查找潜在的错误和不符合编码标准的地方。这包括控制流分析、数据流分析、语法分析等。
  4. 静态应用程序安全测试:使用工具对代码进行安全漏洞扫描,查找潜在的安全问题,如缓冲区溢出、SQL注入、跨站脚本攻击等。

 

智能装备软件动态测试方面是在实际运行环境中对软件进行测试,以验证其功能、性能、稳定性等是否满足预期要求。可以按照传统动态测试方法为黑盒测试与白盒测试。黑盒测试又称功能测试、数据驱动测试或基于规格说明的測试,这种测试不必了解被测对象的内部情况,而依靠需求规格说明中的功能来设计测试用例。主要包括功能分解、等价类划分、边界值分析、判定表、因果图、随机测试、猜错法、正交实验法几种方法。

白盒测试又称结构测试、逻辑测试或基于程序的测试,这种测试应了解程序的内部构造,并且根据内部构造设计测试用例。包括控制流测试、数据流测试、程序变异、程序插装、域测试、符号求值几种方法。

由于智能装备软件通常具有复杂的算法和决策逻辑,动态测试的难点以及测试用例设计与普通软件也所有不同:

  1. 在测试用例设计方面,装备智能软件的行为往往难以预测,因为它会根据输入数据和先前的学习经验不断调整其行为。用例输入数据可能非常复杂,包括大量的训练数据、实时数据流等,需要设计能够适应软件自我优化的测试用例。与普通软件的固定值、边界值或者一些特定的数据组合为用例输入有所区别。这也就要求测试人员设计出能够全面覆盖各种可能情况的测试用例,以确保软件在各种情况下都能正确运行。
  2. 在测试环境构建方面,装备智能软件通常需要大量的数据和复杂的环境才能运行,可能需要使用特定的硬件或软件工具来模拟学习环境,因此构建一个能够模拟真实运行环境的测试环境也是一项挑战。同时在测试执行过程中可能会出现各种意外情况,需要测试人员具备快速定位和解决问题的能力。
  3. 在结果分析方面,装备智能软件的输出往往是基于概率和统计模型的,这使得测试结果的分析和评估变得更加复杂,测试时需要考虑输出结果的分布和置信区间。测试人员需要具备一定的数据分析和机器学习知识,才能准确评估测试结果。
  4. 在性能测试方面:装备智能软件的性能测试不仅需要关注其功能是否正确,还需要关注其响应时间、资源消耗、泛化能力等性能指标。这些指标通常受到数据规模、算法复杂度等多种因素的影响,难以精确控制和评估。

 

总的来说,装备智能软件的静态测试基于现有的测试工具及方法基本可以正常开展,而动态测试则面临更多的挑战,需要综合考虑多个方面,且对测试人员能力提出了更高的要求,要求测试人员具备丰富的经验和跨学科的知识背景。但随着技术的发展与进步,相信也会出现更高效的动态测试辅助工具,为测试人员带来便利。

技术文章

姓名

公司

电话

邮箱