模糊控制在软件测试上的应用研究

2019-11-19 06:24刘梦琪彭辉水黄旺中车株洲电力机车研究所有限公司
数码世界 2019年11期
关键词:测试工具测试数据软件测试

刘梦琪 彭辉水 黄旺 中车株洲电力机车研究所有限公司

1 模糊控制算法

1.1 模糊控制算法的基本原理

模糊控制的特点是适用范围广且对时变负载具有一定的鲁棒性,它不依赖于被控对象的数学模型,适用于非线性系统的控制中。

模糊控制基本原理主要包括如下四部分:

(1)模糊化。简单来说就是将清晰量转化为模糊集,根据一定的转换规则,将选定的模糊控制输入转换为系统能够识别的模糊量,具体包括以下三步:

第一,对输入进行处理,使其满足模糊控制的要求;

第二,将第一步处理后的输入进行尺度变换;

第三,确定各输入的模糊语言取值及对应隶属度函数。

(2)规则库。模糊规则库的作用是存放全部控制规则,为下一步的模糊推理提供语言控制规则。这些规则通过专家知识和使用人员经验总结得出,是一种根据人的直觉推理的语言表达形式。

(3)模糊推理。主要实现基于模糊规则和推理合成规则,从输入到输出模糊集的映射,这是模糊逻辑控制器的核心,它将基于模糊概念和推理模糊控制作用,应用模糊关系和推理规则模仿人类做出决定。

(4)解模糊。主要是将推理得到的控制量转化为最终的输出。

2 模糊控制算法在软件测试领域中的应用

2.1 模糊测试研究现状

模糊测试是一种自动化或半自动化的漏洞挖掘技术,多用于安全性测试,通过将非预期的数据插入目标软件程序的输入中,并监测目标程序的异常以识别未知的软件漏洞。模糊测试方法通常分为3 种:白盒,用于测试源代码或反汇编代码;黑盒,则无需审查源代码;以及灰盒,与黑盒相近,但将先前得到的结果数据作为反馈。模糊测试可以通过事先对目标程序进行研究,将得到的经验和知识转化为更高效的模糊器(Fuzzer)。它充分利用了机器随机生成和发送数据的能力,同时试图引入使用人员的相关经验。

模糊测试会根据各种因素如目标系统、需要测试的数据格式等的不同而使用不同的方法,但模糊测试的过程基本由以下几个步骤组成:

(1)确定测试对象和输入向量

不确定目标程序则无法决定决定具体的模糊测试工具或方法。从安全角度考虑,被利用的漏洞几乎都是由于应用程序接收未过滤非法数据或校验确认的用户输入所引起的。无法定位输入源将对模糊测试产生严重影响,因此确定输入向量集对模糊测试而言至关重要。目标程序能够接收的数据都属于输入向量,包括文件、环境变量和命令行参数等,这些都是可能的模糊测试变量。

(2)生成模糊测试数据。确定输入向量后,可以生成模糊测试数据。在实际测试中,会根据目标程序的不同,选择对应的测试数据生成方式,可以采用对数据样本进行变异或根据协议动态生成等方式,自动化生成大量的模糊测试数据。

(3)执行模糊测试数据。这一步与上一步生成模糊测试数据同时进行,也需要使用自动化的工具来执行,执行过程一般包括启动目标程序、发送测试数据到目标程序等。

图2 典型的模糊测试流程

(4)监测异常。在模糊测试过程中,如果失去了对异常的监测,最终即使确定出现异常,也无法判断异常产生的原因,追踪引发目标程序异常的源测试数据。监测方式不必依赖目标应用程序和模糊测试方法。

(5)确定可利用性。虽然该步骤不属于模糊测试的必要流程,但根据软件测试的最终目的,监测到异常后,需要确定所发现的异常能否被进一步利用。不管采用什么类型的模糊测试,该步骤一般由具备丰富的安全领域专业知识和相关的经验的人员手动完成。

除了确定可利用性外,在模糊测试中,都应该考虑到上述其他阶段。各阶段的顺序和侧重点会根据测试人员的最终目标而不同。尽管模糊测试功能强大,但不说明它能发现目标软件中所有的错误。

一个典型的模糊测试的流程如图1 所示:

模糊测试的执行过程可以简单描述为:通过随机或半随机的方式生成输入数据;将数据输入目标程序;检测被测系统的状态是否正常;监控目标程序的状态判断是否存在漏洞。

3 模糊控制算法在测试领域的发展展望

(1) 模糊测试与云计算

9 年前一篇研究文章中提出了“云端模糊测试将彻底改变安全测试”,模糊测试软件可利用大量可用基础设施并行执行不同测试,因此模糊测试十分适用于云计算,将安全测试托管在云端,简化了从每个应用收集信息、推送更新、驱动未来开发改进的过程,也减少了人力物力的投入,甚至可以依靠自动向代码提交不良输入来发现软件漏洞。

(2)模糊测试与神经网络

因为人工智能的不断发展,神经网络可以令模糊测试工具变得更加高效。模糊测试工具可以通过持续的模糊测试训练,学习模糊测试变异的类型或要应用的策略等。为了具备足够的训练数据,产生足够的模式,运用大量的输入-输出样本矢量对对模糊测试工具进行训练。在发现漏洞之后,通过神经网络确认漏洞是否值得利用,以及是否会被利用。模糊测试本身采用传统自动化方法加人工监督的方式进行。

(3)模糊控制用于自动化测试判据

伴随着模糊控制技术的发展和完善,模糊测试在测试用例的需求被不断满足,但从软件测试的流程来看,测试用例仅仅只测试流程的一部分,还有一个重要的项点是测试结果。一般而言,可以根据需求中给定的范围判断测试结果是否通过。但在一些情况下,尤其是处于边界情况时,更多的需要测试人员与设计人员进行沟通,人为确定结论。同时,当结果有特殊波动,但总体或平均值仍在允许范围内时,也存在判断失误的可能性。在测试结论上如果能带入模糊控制理论,配合神经网络算法模型,能更好地改善因边界点等问题所造成的测试判据有误的情况。

(4)模糊测试结合其他安全方法

模糊测试技术在未来有可能会结合其他多种软件漏洞发掘分析方法。例如当模糊测试无法确保足够的代码覆盖时,可以考虑将代码审查同模糊测试相结合,把代码覆盖作为一种度量手段来确定模糊测试的完成程度。还可以考虑另一种混合分析的方法。首先对源代码进行自动化评审,这种典型的白盒测试通常会发现大量的潜在的漏洞,但是可能产生误报,因为它在运行时不能确认结果的最终形式。这时可以利用静态扫描的结果来帮助生成模糊测试用例,协助在动态模糊测试阶段中证明或反驳那些潜在的漏洞。

4 结语

本文对模糊控制的发展历程进行了简要的介绍,并在此基础上分析了模糊测试的研究现状与典型应用,同时展望了未来模糊控制在测试上的发展方向。模糊测试概念的提出已经有些年头了,也得到了一定的重视与发展。但其执行相当困难,很难拥有合适的资源,对一般的公司企业没有太大吸引力。人工智能(AI)或神经网络逐步进入传统模糊测试技术,造就了查找目标程序或系统漏洞的强大工具,企业和软件供应商可以通过模糊测试更容易地找出系统中的潜在可利用漏洞。通过深入研究,模糊测试技术极有可能成为未来混合型软件测试中一个重要的组成部分。

猜你喜欢
测试工具测试数据软件测试
软件测试方向人才培养“1+X”融合研究
基于OBE的软件测试课程教学改革探索
航天软件测试模型构建与应用
测试数据管理系统设计与实现
基于移动平台APP测试
手车式真空断路器回路电阻测试电流线接头研究
关于 Web 应用系统的软件测试的研究
基于自适应粒子群优化算法的测试数据扩增方法
浅谈响应时间测试分析方法
空间co-location挖掘模式在学生体能测试数据中的应用