一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种对分布式系统进行模糊测试的方法和系统与流程

2022-10-13 05:26:07 来源:中国专利 TAG:


1.本发明涉及软件测试领域,特别涉及一种对分布式系统进行模糊测试的方法和系统。


背景技术:

2.分布式系统可以提供高性能的网络服务,因此应用于包括云计算、大数据分析在内的多个重要场景中。分布式系统有多种类型,包括分布式数据管理系统、分布式协调系统等。分布式系统能够支持多种不同的分析和计算任务。为了提供丰富的功能,并解决分布式环境下的一致性、可用性问题,分布式系统一般需要实现复杂的算法并且处理很多异常情况,使得开发者容易在开发过程中引入错误,导致分布式系统产生各类缺陷。因此,需要对分布式系统进行缺陷检测。
3.现有的对分布式系统进行缺陷检测的方法主要包括:形式化方法、静态分析方法、日志分析方法和随机测试方法。这些方法都有一定的缺陷,从而限制了其使用。例如,形式化方法分析效率低,且需要较多人力工作;静态分析方法误报率较高;日志分析方法需要大量人力工作以产生足够的测试用例;随机测试方法覆盖率和测试效率较低。
4.因此,设计一种良好的测试方法成为分布式系统测试中亟待解决的问题。


技术实现要素:

5.本发明公开了一种对分布式系统进行模糊测试的系统和方法,系统包括:测试用例生成器,被配置为通过把对用于所述分布式系统进行测试的至少一个已有测试用例作为种子进行变异,生成多个待用测试用例,所述已有测试用例和所述待用测试用例中的每个测试用例包括多个输入条目,条目之间具有时间间隔;输入控制器,被配置为将所述多个待用测试用例输入所述分布式系统;运行时监控器,被配置为从所述分布式系统获得所述输入的多个待用测试用例的多个运行结果。
6.本发明提出的对分布式系统进行模糊测试的方法和系统可以从多个维度自动生成符合分布式系统特点的具有时序信息的测试用例,大量减少人力生成测试用例的工作。并且该模糊测试的方法和系统测试覆盖率高,测试效率高,从而帮助开发人员更早地发现分布式系统中的问题。
附图说明
7.本发明上述的步骤和解释从下面结合附图对实施方式的描述中将变得明显和容易理解,其中:
8.图1示出了根据本发明实施例的模糊测试系统的结构示意图。
9.图2示出了根据本发明的实施例的一种对分布式系统进行模糊测试的方法的流程图。
10.图3示出了根据本发明实施例的模糊测试系统获得新的种子的流程。
具体实施方式
11.以下描述包括体现本发明技术的示例性方法、系统、和存储介质。然而,应该理解,在一个或多个方面,可以在没有这些具体细节的情况下实践所描述的发明。在其他情况下,没有详细示出公知的协议、结构和技术,以免模糊本发明。本领域普通技术人员将理解,所描述的技术和机制可以应用于对分布式系统进行模糊测试的的系统、方法、以及计算机可读存储介质。
12.下面参照附图来说明本发明的实施例。在下面的说明中,阐述了许多具体细节以便更全面地了解本发明。但是,对于本技术领域内的技术人员明显的是,本发明的实现可不具有这些具体细节中的一些。此外,应当理解的是,本发明并不限于所介绍的特定实施例。相反,可以考虑用下面的特征和要素的任意组合来实施本发明,而无论它们是否涉及不同的实施例。因此,下面的方面、特征、实施例和优点仅作说明之用而不应被看作是所附权利要求的要素或限定,除非权利要求中明确提出。
13.根据背景技术,现有的对分布式系统进行缺陷检测的方法主要包括:形式化方法、静态分析方法、日志分析方法和随机测试方法。其中,除了背景技术描述的各种方法的缺陷以外,形式化方法、静态分析方法和日志分析方法都必须使用已有的测试用例,自己不能生成新的测试用例;随机测试方法虽然可以生成随机的测试用例,但是生成测试用例时缺乏指导,使得测试效率较低,无法快速提高分布式系统程序覆盖率。
14.模糊测试是一类应用广泛且效果良好的程序动态测试技术。模糊测试通过变异预先设定的程序输入,不断产生大量测试用例,可以在一定程度上克服已有方法的缺陷,提升程序的测试效果。对于单机程序而言,输入一般是简单的文件或直接读取用户输入,是一维的。现有模糊测试方法基本都是针对单机程序,只生成无时序信息的一维文件输入,用以测试单机程序。而分布式系统的输入通常是多维的,因此使用现有模糊测试方法难以生成针对分布式系统的有效测试用例,无法有效测试大多数分布式系统。
15.因此,设计一种良好的模糊测试方法和系统成为分布式系统测试中亟待解决的问题。
16.本发明提出了一种对分布式系统进行模糊测试的方法和系统,通过把用于对所述分布式系统进行测试的至少一个已有测试用例作为种子进行变异,生成多个待用测试用例,所述已有测试用例和所述待用测试用例中的每个测试用例包括多个输入条目,条目之间具有时间间隔;然后将所述多个待用测试用例输入所述分布式系统;最后从所述分布式系统获得所述输入的多个待用测试用例的运行结果。
17.本发明提出的对分布式系统进行模糊测试的方法和系统可以自动生成符合分布式系统特点的具有时序信息的多个测试用例,大量减少人力生成测试用例的工作。本发明提出的对分布式系统进行模糊测试的方法和系统测试覆盖率高,并且测试效率高,从而帮助开发人员更早地发现分布式系统中的问题。
18.下面结合附图来具体描述本发明。
19.图1示出了根据本发明实施例的模糊测试系统100的结构示意图。根据图1,模糊测试系统100对分布式系统104进行模糊测试。模糊测试系统100包括测试用例生成器101、输入控制器102和运行时监控器103。测试用例生成器101被配置为通过把用于对所述分布式系统进行测试的至少一个已有测试用例作为种子进行变异,生成多个待用测试用例,所述
已有测试用例和所述待用测试用例中的每个测试用例包括多个输入条目,条目之间具有时间间隔。
20.一个测试用例包括多个输入条目,条目之间具有时间间隔。输入条目包括以下至少一个:客户端输入、网络消息、文件操作和节点管理命令。表1示出了输入条目的一些示例操作。
[0021][0022]
表1
[0023]
首先假设测试用例的应用场景为:一个由3个节点构成的分布式系统,功能是用户操作客户端向每个节点上存一个相同的数字,具体操作过程中,用户操作客户端向某一个指定节点存入一个数字,该指定节点向其他节点同步该数字。这里使用一个例子来解释已有测试用例。假设一个已有测试用例(后续称该已有测试用例为已有测试用例1)由条目1、时间间隔t1、条目2、时间间隔t2、条目3、时间间隔t3、条目4组成,各条目和时间间隔分别为:
[0024]
条目1:用户操作客户端向节点1写入5,
[0025]
时间间隔t1:0.2秒,
[0026]
条目2:节点1成功发送一条网络消息给节点2,
[0027]
时间间隔t2:0.1秒,
[0028]
条目3:节点2成功进行了一次文件写入操作,
[0029]
时间间隔t3:0.1秒,
[0030]
条目4:重启节点3。
[0031]
已有测试用例可以是来自记录一次分布式系统的运行过程而得到的。已有测试用例也可以是直接由用户提供。已有测试用例还可以是从其他外部系统输入来的。本领域技术人员可以知道还可以采用其他方法得到已有测试用例。
[0032]
由于输入条目包括4种类型,相应的变异也是对这4种类型的条目进行改变,换句话说变异包括以下至少一个动作:修改和/或增加客户端输入、修改网络消息、修改文件操作和修改和/或增加节点管理命令。表2示出了变异动作的一些示例操作。
[0033][0034][0035]
表2
[0036]
在一种实施方式中,变异还包括修改条目之间的时间间隔。对时间间隔的修改包括增加时间间隔和/或减少时间间隔。具体来说,可以对某些时间间隔增加,对另外的时间
间隔减少;也可以对所有的时间间隔都增加;也可以对所有的时间间隔都减少。
[0037]
经过上述变异过程,在少量已有测试用例情况下,可以自动生成大量符合要求的待用测试用例,不需要太多人力工作。
[0038]
例如,将获得的已有测试用例1输入测试用例生成器101,作为种子(作为种子的已有测试用例需要满足一定的条件,后面将详细描述),经过上述变异后,可能得到以下两个待用测试用例,分别为待用测试用例1和待用测试用例2。
[0039]
待用测试用例1的组成为:
[0040]
条目1:用户操作客户端向节点1写入10,
[0041]
时间间隔t1:0.2秒,
[0042]
条目2:节点1尝试发送一条网络消息给节点2,但失败了
[0043]
时间间隔t2:0.2秒,
[0044]
条目3:节点2尝试进行了一次文件写入操作,但失败了
[0045]
时间间隔t4:0.3秒,
[0046]
条目4:重启节点2。
[0047]
待用测试用例2的组成为:
[0048]
条目1:用户操作客户端向节点1写入3,
[0049]
时间间隔t1:0.5秒,
[0050]
条目2:用户操作客户端向节点2写入2,
[0051]
时间间隔t2:0.1秒,
[0052]
条目3:节点1成功发送一条网络消息给节点2,
[0053]
时间间隔t3:0.2秒,
[0054]
条目4:节点2进行了一次文件写入操作,但失败了,
[0055]
时间间隔t4:0.1秒,
[0056]
条目5:重启节点3,
[0057]
时间间隔t5:0.1秒,
[0058]
条目6:停止节点1。
[0059]
上述将获得的已有测试用例1输入测试用例生成器101后生成两个待用测试用例仅仅是一个示例,本领域技术人员可以知道,已有测试用例输入测试用例生成器101后,可产生多个待测测试用例,不限于两个。
[0060]
在一种实施方式中,输入控制器102被配置为将测试用例生成器101利用已有测试用例作为种子进行变异生成的多个待用测试用例输入到分布式系统104中。分布式系统104接收到多个待用测试用例后,就可以运行并对每个输入条目产生运行结果,一个测试用例的运行结果就是其包括的输入条目的运行结果的总和。
[0061]
在一种实施方式中,运行时监控器103被配置为从分布式系统104获得输入的多个待用测试用例的多个运行结果。
[0062]
在一种实施方式中,运行时监控器103还被配置为:从分布式系统104获得输入的一个特定待用测试用例的对应运行结果;判断所述对应运行结果是否满足预定条件;响应于所述对应运行结果满足预定条件,将该特定待用测试用例作为新的已有测试用例。也就是说,可以在生成的待用测试用例利用其输入分布式系统的运行结果进一步挑选作为种子
的已有测试用例,从而能够生成更多合适的待用测试用例。
[0063]
在一种实施方式中,预定条件可以为使分布式系统程序覆盖率提升。本领域技术人员可以知道所述的程序覆盖率是指单个测试用例运行后,程序运行的代码数量(例如行数)与代码总数(例如总行数)之比。本领域技术人员还可以知道,还可以采用其他类似的思想定义程序覆盖率。
[0064]
例如,每次分布式系统运行一个测试用例都有一个对应的程序覆盖率,当下一个测试用例对应的程序覆盖率比规定的测试用例的总体程序覆盖率提升时,该下一个测试用例被认为满足预定条件,可以被作为新的已有测试用例,进而生成更多的待用测试用例。
[0065]
上述规定的测试用例可以是预定个数的测试用例,也可以是所有代用测试用例的某个百分比的测试用例,本领域测试人员可以对规定的测试用例进行其他的定义,所有这些定义都在本发明的保护范围之内。
[0066]
通过不断寻找使程序覆盖率提升的测试用例,并将其作为新的种子,生成更多的符合要求的测试用例,本发明提出的对分布式系统进行模糊测试的方法和系统测试覆盖率高,并且测试效率高,从而帮助开发人员更早地发现分布式系统中的问题。
[0067]
在另外一种实施方式中,预定条件还可以由用户自定义。
[0068]
在一种实施方式中,模糊测试系统100还可以包括缺陷检测器105,其被配置为对生成的多个待用测试用例的多个运行结果进行检测以判断该运行结果中是否存在缺陷。例如,可能有一个测试用例的对应运行结果存在缺陷,也可能若干个测试用例的对应运行结果存在缺陷,等等。优选地,缺陷检测器105可以对有缺陷的运行结果生成缺陷报告106。
[0069]
通过对运行结果进行检测,可以有效降低缺陷报告的误报率。通过上述缺陷报告,测试人员可以方便地分析缺陷,提高分析效率。
[0070]
图2示出了根据本发明的实施例的一种对分布式系统进行模糊测试的方法200的流程图。方法200可以由图1所示的模糊测试系统100执行。根据图2,在步骤201,模糊测试系统100通过把用于对分布式系统104进行测试的至少一个已有测试用例作为种子进行变异,生成多个待用测试用例,已有测试用例和待用测试用例中的每个测试用例包括多个输入条目,条目之间具有时间间隔。在步骤202,模糊测试系统100将生成的多个待用测试用例输入分布式系统104。在步骤203,模糊测试系统100从分布式系统104获得输入的多个待用测试用例的多个运行结果。优选地,方法200还包括步骤204。在步骤204,模糊测试系统100对生成的多个待用测试用例的多个运行结果进行检测以判断该多个运行结果中是否存在缺陷。
[0071]
在一种实施方式中,输入条目包括以下至少一个:客户端输入、网络消息、文件操作和节点管理命令。
[0072]
在一种实施方式中,变异包括以下至少一个动作:修改和/或增加客户端输入、修改网络消息、修改文件操作和修改和/或增加节点管理命令。
[0073]
在一种实施方式中,变异包括修改条目之间的时间间隔。
[0074]
在一种实施方式中,图3示出了根据本发明实施例的模糊测试系统100获得新的种子的流程300。根据图3,在步骤301,模糊测试系统100接收一个特定待用测试用例的对应运行结果。在步骤302,模糊测试系统100判断该对应运行结果是否满足预定条件,如果对应运行结果满足预定条件,则进入步骤303,其中模糊测试系统100将该特定待用测试用例作为新的已有测试用例。新的已有测试用例可以作为新的种子,所有新的种子可以组成种子池。
如果对应运行结果不满足预定条件,模糊测试系统100继续接收下一个待用测试用例的运行结果。这里预定条件可以为使分布式系统程序覆盖率提升。本领域技术人员也可以自定义预定条件。
[0075]
本发明可以是系统、方法和/或计算机可读存储介质。计算机可读存储介质上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。本发明的方法可以在独立的计算机系统上执行,也可以在分布式计算系统上执行,甚至可以在云平台上执行。
[0076]
这里参照根据本发明实施例的方法、装置(系统)和计算机可读存储介质的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
[0077]
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机可读存储介质的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
[0078]
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献