一种面向云系统的高效配置模糊测试系统及方法

文档序号:35566565发布日期:2023-09-24 05:41阅读:39来源:国知局
一种面向云系统的高效配置模糊测试系统及方法

本发明属于云系统测试,尤其涉及一种面向云系统的高效配置模糊测试系统及方法。


背景技术:

1、我国云计算发展进入普惠期,从最初的十几亿增长到现在的千亿规模,全球云计算市场规模保持增长势态,多方需求推动云计算向分布式部署模式演进。随着云计算的快速发展,云系统的稳定性保障能力越来越成为业界关注的重点。对于当今部署在云的大型软件系统,配置复杂性和高频率的配置更改给预防、检测和排除配置错误带来了巨大的困难,导致配置错误成为引发故障和性能问题的主要原因之一。2017年,amazon s3存储的配置错误暴露了2亿美国选民的个人信息。2020年,美国互联网服务提供商centurylink数据中心的配置错误导致了严重的技术中断造成全美互联网混乱。2021年,facebook服务器配置错误引起的崩溃影响了数百万用户。除了可靠性之外,配置错误也可能引发安全问题,开放式web应用程序安全项目owasp将配置错误列入十大最关键的web安全风险。由于普遍性、严重性和高维护成本,配置错误已被视为最重要且棘手的系统问题之一。

2、配置错误不同于传统软件错误,即使是代码编写完美的软件也可能在用户的错误配置下产生配置错误。为了预防由错误配置引起的系统故障,需要在系统正式部署前检查配置正确性,现有最先进的方法是基于新语言和框架实现的配置验证技术和基于机器学习和文本分析推断配置值正确规则的配置检查技术。虽然这些技术取得了一定的效果,但也存在较大的局限性。配置验证技术使用专家(如软件开发者)编写的验证代码检查配置值,验证代码将根据有关预期数据类型、数据范围、数据格式等预定义正确性规则检查配置值。然而,验证技术往往需要为每个配置项编写完整的测试集,需要花费大量的人力和资源。配置检查技术通过使用机器学习技术学习配置特征,自动地对正确配置和错误配置进行分类。这种方法通常依赖于训练数据集的数量和质量,而现实场景中很难获得这些数据集。同时,云系统代码的复杂性决定了其特征的复杂性,如果不使用预定义的规则模板确定学习算法的范围,学习算法很难工作。并且以上基于文本获得的配置信息本身并不准确和完整,可能和系统实际代码存在偏差。

3、目前,配置测试技术是配置安全领域发现配置代码缺陷的重要手段,主要分为静态分析技术和动态分析技术。其中,静态分析使用控制流和数据流分析来获取配置规范或受配置影响的特定代码片段。然而,静态分析往往会因为没有实际运行代码而产生大量误报。在动态分析技术中,单元测试和系统测试是两种主要方法。单元测试是一种高效且较为全面的测试方法,可以帮助开发人员发现代码中的低级错误,同时也可以快速验证配置更改的正确性。但单元测试仅检查单个程序组件的正确性,不能完全测试配置下的整个程序行为,因此它不会捕获系统级别的错误。所以,单元测试发现的错误并不一定能够在系统测试中体现。对于配置测试,程序一般会在启动阶段对配置进行检查和初始化,在程序运行阶段配置生效。所以系统测试能完整覆盖配置在程序中存续的整个生命周期,可以发现真实世界中云系统的配置缺陷。但是云系统的复杂性给系统测试带来了比较严重的开销,同时由于云系统的高可配置性,带来配置项组合爆炸和搜索空间巨大的问题,使得单纯的系统测试效率在配置测试领域变得低下。

4、模糊测试(fuzzing)技术是一种系统测试方法,它自动生成大量测试样例并监控程序执行以发现真实世界的错误。模糊测试的优势在于用更短的时间预算或更少的测试样例在大输入空间中发现错误。模糊测试已经成为漏洞挖掘领域最有效的技术之一,特别是轻量级程序,比如命令行程序(afl)和库函数(libfuzzer)。但是在云系统的配置测试中,并没有真正有效的模糊测试工具,原因有以下两点:

5、(1)通过系统测试探索云系统的配置输入空间是极其缓慢的。在每次模糊测试中,一个测试样例输入到被测程序put,然后通过监视put的运行状态确定是否触发了相应的漏洞。因此,在针对云系统的测试过程中,探索每个输入空间时,其缓慢的启动和运行会降低模糊测试执行速度。更糟糕的是,模糊测试需要执行大量的测试样例来探索输入空间。所以,在云系统中直接进行配置模糊测试是非常低效的。

6、(2)在云系统的配置输入空间中产生有效的测试样例是很困难的。云系统以一组配置参数作为输入,大多数配置参数都具有灵活的值范围。单个配置参数中存在约束,不同的配置参数间存在依赖关系。但是,现有的配置测试样例生成方法局限于使用约束关系进行错误配置生成,很难有效地覆盖完整的输入空间。

7、现有的技术方案中存在一种静态语言分析工具pracextrator。该工具采用自然语言处理从软件手册中自动提取配置建议,并将其转换为规范,然后使用生成的规范来检测系统管理员的配置设置中的违规行为。pracextrator属于静态分析技术,可以自动提取配置建议并生成规范,具有较强的扩展性,能够检测很多程序的软件手册并生成配置规范信息。然而由于文本信息本身不是精准和完备的,存在与实际代码不一致性的情况,导致提取的规范并不是完全准确的,并且由于没有实际运行代码会带来大量的误报。

8、现有的技术方案中存在一种检测由于配置更改导致故障的框架ctest。该框架把实际生产系统的配置与单元测试联系起来,可以在相关代码上下文中测试配置更改,能够检测由于配置更改引起的潜在缺陷。ctest在系统部署前检测导致故障的配置更改是有效的,但是仍旧存在不足。ctest将配置更改联系到单元测试,用单元测试的结果作为缺陷检测的标准。但由于单元测试自身的局限性,它并不能够代表系统的实际运行情况,所以仅仅用单元测试来推断配置更改的整个程序行为是困难的。

9、现有的技术方案中存在一种可扩展、高度模块化的配置错误注入测试ceit框架ceitinspector,对不同的配置错误注入测试ceit工具进行评估,可以轻松应用于不同的被测系统,同时可以提高现有配置错误注入测试ceit技术的有效性和效率。ceitinspector工具集成了各种配置错误注入技术,但是配置错误注入测试ceit方法无法检测具有有效值但没有提供预期系统行为的合法配置错误。因此,该技术仅能覆盖部分配置输入空间,难以检测到由于合法配置导致的软件缺陷。


技术实现思路

1、针对现有技术中的上述不足,本发明提供的一种面向云系统的高效配置模糊测试系统及方法解决了云系统配置测试中由输入空间爆炸引起的效率问题。

2、为了达到上述发明目的,本发明采用的技术方案为:一种面向云系统的高效配置模糊测试系统,包括配置项分析器、种子生成器、变异器和配置测试器;

3、所述种子生成器分别与配置项分析器、变异器以及与变异器连接的配置测试器连接;所述配置项分析器与变异器连接;

4、所述配置项分析器,用于对配置文件进行分析和信息提取,得到配置项分类结果、配置项依赖关系、配置项类型推断结果和配置项约束关系,并将所述配置项分类结果和配置项依赖关系传输至种子生成器;将所述配置项依赖关系、配置项类型推断结果和配置项约束关系传输至变异器;

5、所述种子生成器,根据所述配置项分类结果和配置项依赖关系,利用智能种子生成算法,生成种子,并将所述种子传输至变异器;

6、所述变异器,用于根据所述种子、配置项类型推断结果、配置项依赖关系和配置项约束关系,利用变异策略,对所述种子进行智能变异,得到测试样例;

7、所述配置测试器,用于根据所述测试样例,利用快速配置测试策略,得到测试结果,完成测试。

8、本发明的有益效果为:本发明通过配置项分析器提取后续测试工作所需的配置项分类结果、配置项依赖关系、配置项类型推断结果和配置项约束关系,为测试做准备;通过种子生成器,提高种子质量;并通过变异器对种子进行变异,使测试样例能够覆盖更多输入空间,提高了测试样例的质量;在配置测试器对测试样例进行测试时,采用快速配置测试策略,提高了测试样例的执行速度,避免了在无效的测试样例上浪费计算机资源进行系统测试,提高了测试效率,解决了云系统配置测试中由输入空间爆炸引起的效率问题。

9、本发明提供了一种面向云系统的高效配置模糊的测试方法,包括以下步骤:

10、s1、根据配置文件,利用配置项分析器通过配置项分类、配置项依赖分析、配置项类型推断和配置项约束提取,分别得到配置项分类结果、配置项依赖关系、配置项类型推断结果和配置项约束关系;

11、s2、根据所述配置项分类结果和配置项依赖关系,利用种子生成器,采用智能种子生成算法得到种子;

12、s3、根据所述种子、配置项类型推断结果、配置项依赖关系和配置项约束关系,利用变异器采用变异策略对所述种子进行智能变异,得到测试样例;

13、s4、根据所述测试样例,利用配置测试器采用快速配置测试策略,得到测试结果;

14、s5、判断是否停止测试,若是,则结束测试,否则,返回步骤s2。

15、本发明的有益效果为:本发明提出了一种基于配置模糊测试的智能种子生成和变异策略,可以覆盖配置参数的完整输入空间,并考虑它们的依赖和约束关系,提高测试样例的质量。并在配置测试器中一种将系统测试与单元测试结合的快速配置测试方法,发挥系统测试与单元测试各自的优势,用更快的单元测试的结果指导系统测试的执行,减少无用的测试样例的系统执行次数,提高测试样例的执行速度,进而有效地提高配置测试的效率。

16、进一步地,所述步骤s2中智能种子生成算法,包括以下步骤:

17、a1、判断是否基于种子池采样生成种子,若是,则进入步骤a2,否则,进入步骤a3;

18、a2、根据种子生成器的种子池,得到种子;

19、a3、判断是否基于随机采样生成种子,若是,则进入步骤a4,否则,进入步骤a5;

20、a4、根据所述配置项分类结果的可变配置项全集,进行随机采样,得到第一配置项;

21、a5、根据所述配置项分类结果的可变配置项全集,进行顺序采样,得到第一配置项;

22、a6、根据所述配置项依赖关系和配置项分类结果的可变配置项全集,得到第一配置项的关联配置项;

23、a7、合并所述第一配置项和关联配置项,得到种子。

24、上述进一步方案的有益效果为:获取有价值的配置项,生成高质量的种子,以此来提高测试效率,避免计算机资源浪费。

25、进一步地,所述步骤s3中变异策略,包括以下步骤:

26、b1、利用变异器,得到初始化测试样例;

27、b2、根据所述种子,得到种子配置项;

28、b3、将所述种子配置项添加到初始化测试样例中,得到第一测试样例;

29、b4、根据所述配置项依赖关系和第一测试样例,判断是否有存在依赖关系的配置项对,若是,则得到配置项对,根据所述配置项对,得到变异方法,根据所述变异方法、配置项类型推断结果、配置项约束关系和配置项对,利用变异器得到第一新配置项值,并进入步骤b5,否则,得到不存在依赖关系的剩余配置项,根据所述配置项类型推断结果、配置项约束关系和剩余配置项,得到新配置项值,进入步骤b6;

30、b5、根据所述配置项依赖关系和第一测试样例,判断是否有不存在依赖关系的剩余配置项,若是,则得到剩余配置项,根据所述配置项类型推断结果、配置项约束关系和剩余配置项,得到第二新配置项值,根据所述第一新配置项值和第二新配置项值,得到新配置项值,并进入步骤b6,否则,根据所述第一新配置项值,得到新配置项值,进入步骤b6;

31、b6、将新配置项值覆盖所述第一测试样例的配置项值;

32、b7、根据变异器的变异次数,判断是否停止变异,若是,得到测试样例,否则,返回步骤b4。

33、上述进一步方案的有益效果为:采用变异策略,根据种子配置项对应的依赖关系和约束关系,对种子进行变异,得到高质量的测试样例,提高测试效率,避免计算机资源浪费。

34、进一步地,所述步骤b4中的变异方法有四种:

35、第一种为对于依赖关系为控制依赖的配置项对,所述配置项对包括配置项a和配置项b,得到配置项a和配置项b中待变异的配置项,设置对应的控制条件后,基于待变异的配置项的约束关系进行变异;

36、第二种为对于依赖关系为值依赖的配置项对,所述配置项对包括配置项a和配置项b,同时基于配置项a和配置项b的值依赖关系以及配置项a和配置项b的约束关系进行变异;

37、第三种为对于依赖关系为默认值依赖的配置项对,所述配置项对包括配置项a和配置项b,根据配置项a和配置项b得到变异配置项和默认配置项,根据变异配置项的约束关系进行变异,得到变异值,并将所述默认配置项的值更新为变异值;

38、第四种为对于依赖关系为行为依赖的配置项对,所述配置项对包括配置项a和配置项b,分别基于配置项a和配置项b的约束关系进行变异。

39、上述进一步方案的有益效果为:根据不同的依赖关系,得到不同的变异方法使得测试样例能够覆盖更多输入空间,提高了测试样例的质量。

40、进一步地,所述步骤s4中快速配置测试策略,包括以下步骤:

41、c1、根据所述测试样例,通过测试样例的配置项与单元测试间的映射关系,得到单元测试集合,并进入步骤c2;

42、c2、对所述单元测试集合进行单元测试,得到单元测试运行结果,并进入步骤c3;

43、c3、判断单元测试运行结果是否为失败,若是,得到第一故障测试样例,并进入步骤c4,否则,得到概率测试结果,并进入步骤c5;

44、c4、对所述第一故障测试样例进行系统测试,得到系统测试结果,并进入步骤c6;

45、c5、判断概率测试结果是否为验证,若是,则进入步骤c7,否则,完成测试,得到测试结果;

46、c6、判断系统测试结果是否为失败,若是,调用配置测试器的去重模块对第一故障测试样例进行去重,得到测试结果,否则,得到测试结果,并将第一故障测试样例加入种子生成器的种子池;

47、c7、对测试样例进行系统测试,得到系统测试结果,并进入步骤c8;

48、c8、判断系统测试结果是否为失败,若是,得到第二测试样例,并调用配置测试器的去重模块对所述第二测试样例进行去重,否则,完成测试,得到测试结果。

49、上述进一步方案的有益效果为:在系统测试之前进行单元测试,过滤无效的测试样例,进而有效地提高配置测试的效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1