CN102385551B - 一种筛选测试用例的方法、装置及系统 - Google Patents
一种筛选测试用例的方法、装置及系统 Download PDFInfo
- Publication number
- CN102385551B CN102385551B CN201010271071.7A CN201010271071A CN102385551B CN 102385551 B CN102385551 B CN 102385551B CN 201010271071 A CN201010271071 A CN 201010271071A CN 102385551 B CN102385551 B CN 102385551B
- Authority
- CN
- China
- Prior art keywords
- test case
- screening rule
- screening
- dfa
- positive example
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Machine Translation (AREA)
Abstract
本发明涉及一种方法,该方法包括:接收测试用例;根据筛选规则,判断接收的测试用例是否符合该所述筛选规则,其中该所述筛选规则包括一文法结构;若接收的测试用例不符合该所述筛选规则,则输出接收的测试用例用于进行模糊测试。本发明还提供了相应的筛选装置和筛选系统,以保留有效测试用例,消除相同或者相似的测试用例。通过上述方法、装置和系统,可以从各测试用例中选择尽可能多样的测试用例进行模糊测试,避免模糊测试中使用过多的相同或者相似的测试用例所导致的效率降低,从而提高了模糊测试的效率。
Description
技术领域
本发明涉及测试技术领域,特别是筛选测试用例技术。
背景技术
随着现代网络通信技术的不断发展,网络设计和实施的安全性以及可靠性对于网络系统的安全性和健壮性而言越来越重要。根据美国国土安全部在2006年的统计可知,在报告的2453个计算机的缺陷中,有1000个左右是关于网络协议的。在协议实施中造成安全缺陷的重要原因之一就是输入数据的异常处理。由于异常处理所导致的安全问题例如包括缓存区溢出、代码注入以及权限提升等。
模糊(Fuzz)测试是一项黑盒软件安全测试技术,可以用于向程序提供随机数据或者半随机数据作为输入,并检查其响应是否正常。如果程序出现错误,通过模糊测试技术可以检测到相应的缺陷。由于模糊测试通常可以找到测试员未能发现的缺陷,而这些缺陷恰恰是被软件工程师所忽视的。因此模糊测试技术被认为能够提高软件的安全性。
目前,最常见的模糊测试是基于字符的,该技术已经被广泛的应用到协议或者网络服务的安全性测试中,以避免由于输入数据的异常处理带来的安全缺陷。
模糊测试所使用的测试用例随机分布在软件输入空间中。被测试的用例越多,测试越穷尽;并且测试用例越多样化,越可能找到更多的安全缺陷。因此,理论上而言,完全穷举输入空间中所有可能的输入能够找到软件所有的安全缺陷,但是由于软件的输入空间过大,甚至可能是无穷大,上述穷举的方法在绝大多数情况下都是不可行的。
因此,模糊测试技术陷入了一个两难的境地。一方面作为黑盒测试技术,模糊测试应当使用尽可能大量的测试用例以检测存在的缺陷;另一方面使用大量的测试用例会占用相当长的时间,尤其是存在大量相同或者相似测试用例的情况下。可以理解,在安全性测试中,若使用同类测试用例作为输入,则不会得到不同的结果。如果一个用例可以引发系统缺陷,则这个用例的同类用例也可以引发同一缺陷,这是由于它们具有相同的安全特性能够引发相同的安全缺陷。反之亦然,如果系统能够正确的处理某个测试用例,则与这个测试用例相同或者相似的测试用例也能够被系统正确的处理。因此,反复测试相同或者相似的测试用例会将测试时间浪费在没有意义的测试上,从而导致测试效率的下降。
发明内容
考虑到现有技术的上述缺陷,本发明实施例提供一种筛选测试用例的方法、装置以及系统,以保留有效测试用例,消除相同或者相似的测试用例。
本发明各实施例提供了以下技术方案以解决上述技术问题。
本发明实施例提供的一种筛选测试用例的方法,该方法包括:
接收测试用例;
根据筛选规则,判断接收的测试用例是否符合所述筛选规则,其中:所述筛选规则包括一确定有限自动机DFA;
所述根据筛选规则,判断所述接收的测试用例是否符合所述筛选规则,包括:
若所述接收的测试用例能够使得所述DFA从初始状态到达一最终状态,则所述测试用例符合所述筛选规则;和/或
若所述接收的测试用例不能使得所述DFA从初始状态到达一最终状态,则所述测试用例不符合所述筛选规则;
若所述接收的测试用例不符合所述筛选规则,则输出所述接收的测试用例用于进行模糊测试。
本发明实施例提供的一种筛选装置,该装置用于筛选测试用例,且该所述装置包括:
接收模块,用于接收测试用例;
判断模块,用于依据筛选规则判断所述接收模块接收的测试用例是否符合所述筛选规则,其中:所述筛选规则包括一确定有限自动机DFA;
所述依据筛选规则判断所述接收模块接收的测试用例是否符合所述筛选规则,包括:
若所述接收的测试用例能够使得所述DFA从初始状态到达一最终状态,则所述测试用例符合所述筛选规则;和/或
若所述接收的测试用例不能使得所述DFA从初始状态到达一最终状态,则所述测试用例不符合所述筛选规则;
输出模块,用于根据所述判断模块的判断,输出不符合所述筛选规则的测试用例用于进行模糊测试。
本发明实施例提供的一种筛选系统,该系统包括:
学习装置,用于按照归纳学习算法对获取的正例进行归纳学习,且得到一归纳结果,其中所述归纳学习算法包括用于发现按照同一方法生成的样本的共同结构的算法;
分类装置,用于将所述学习装置得到的归纳结果作为筛选规则,并判断输入的测试用例是否符合所述筛选规则,且输出不符合所述筛选规则的测试用例用于进行模糊测试,其中:所述筛选规则包括一确定有限自动机DFA;
所述判断输入的测试用例是否符合所述筛选规则,包括:
若输入的测试用例能够使得所述DFA从初始状态到达一最终状态,则所述测试用例符合所述筛选规则;和/或
若输入的测试用例不能使得所述DFA从初始状态到达一最终状态,则所述测试用例不符合所述筛选规则。
通过本发明各实施例提供的技术方案,可以提供有效的测试用例筛选方案。通过按照筛选规则对测试用例进行过滤,能够保留有效的测试用例并消除相同或者相似的测试用例,从而使得使用模糊测试技术时,被测试的测试用例在保持了多样性的同时避免了相似性,节省了在测试相同或者相似测试用例上所浪费的时间,提高了测试效率。
附图说明
本发明实施例的其他特点、特征和优点通过以下结合附图的详细描述将变得更加显而易见,其中:
图1为本发明实施例提供的一种筛选测试用例的方法的流程示意图;
图2a为本发明实施例提供的一种生成筛选规则的方法的流程示意图;
图2b为本发明实施例提供的一种生成筛选规则的方法的流程示意图;
图3为本发明实施例提供的一种筛选测试用例的方法的流程示意图;
图4为本发明实施例提供的一种筛选测试用例的方法的流程示意图;
图5为本发明实施例提供的一种筛选装置的结构示意图;
图6为本发明实施例提供的一种筛选装置的结构示意图;
图7为本发明实施例提供的一种筛选系统的结构示意图。
具体实施方式
本发明实施例提供的测试用例筛选方法应用于各种黑盒测试场景,包括但是不限于对软件、网络的安全性能测试。
图1为本发明实施例提供的一种筛选测试用例方法的流程示意图。下面结合图1对该筛选测试用例的方法进行详细的描述。该方法包括:
步骤101,接收测试用例。
本实施例中,步骤101可以由筛选设备执行,也可以由筛选系统中的分类设备执行。也即,本实施例可以由一个集成的设备实施,也可以通过数个分立的设备构成一个筛选系统,由筛选系统实施本实施例。以下为了描述方便,使用分类模块代表筛选设备中执行分类功能的模块或者筛选系统中执行分类功能的设备。本领域技术人员可以理解,可以通过一个独立的模块或者设备实施本实施例以及下述各实施例,该模块或者设备同时具有学习和分类功能;也可以通过一个系统实施本实施例以及下述各实施例,该系统包括了具有学习功能的设备以及具有分类功能的设备,后续实施例中不再赘述。
步骤102,根据筛选规则判断接收的测试用例是否符合筛选规则,若符合则执行步骤103,若不符合则执行步骤104。
本实施例中,该筛选规则例如可以预设在分类模块中,也可以由学习模块生成并发送到分类模块中。本实施例中,分类模块可以在判断的同时修改筛选规则,因此也可以视为筛选规则由分类模块自己生成并维护。
在第一次执行步骤102时,该筛选规则例如可以是一个空规则,即任何测试用例都不符合该规则;或者还可以有具体的规则内容。
在本实施例中,筛选规则例如为一文法结构。判断接收的测试用例是否符合筛选规则例如可以为,判断筛选规则代表的测试用例集合中是否包括接收的测试用例,若包括则相应执行步骤103,若不包括则执行步骤104。
在本实施例中,判断接收的测试用例是否符合筛选规则例如还可以为,判断筛选规则代表的测试用例集合中是否包括与接收的测试用例相同或者相似的测试用例,若包括则执行步骤103,若不包括则执行步骤104。
步骤103,抛弃该测试用例。
本实施例中,步骤103还可以是标记该测试用例为同类测试用例,或者是将该测试用例分到同类组。以下为了描述方便,均以抛弃测试用例为例进行说明,本领域技术人员可以获知,其他情况与抛弃测试用例的实施例之间可以互相参照。
步骤104,保留该测试用例。
本实施例中,步骤104还可以是标记该测试用例为新测试用例,或者是将该测试用例分到一个新测试用例组,或者是直接将该测试用例输入待测环境进行具体的测试。以下为了描述方便,均以输入待测环境为例进行说明,本领域技术人员可以获知,其他情况与输入待测环境的实施例之间可以互相参照。本实施例中,待测环境例如可以为待测的软件、程序、网络或者协议等。
本实施例中,通过为分类模块设置筛选规则,将相同或者相似的测试用例筛选出来不进行后续的测试,仅使得不同的或者差别较大的测试用例进入后续的测试,从而避免后续测试在测试相同或者相似的测试用例上花费时间。
本实施例中,判断是否符合筛选规则,如果符合则抛弃该测试用例,如果不符合则保留该测试用例。具体实施时,根据筛选规则的具体内容不同,也可以是符合筛选规则就保留该测试用例,不符合筛选规则就抛弃该测试用例。为了描述方便,下述各实施例中,均以符合筛选规则就抛弃测试用例,不符合筛选规则就保留该测试用例为例进行说明,本领域技术人员完全可以通过示例将本发明提供的实施例应用到相反的场景中。此外,为了描述方便,下述各实施例中,将相同或者相似的测试用例称为冗余测试用例,将不同或者差异较大的测试用例称为新测试用例。
为了详细描述图1所示实施例中,由学习模块生成筛选规则并发送到分类模块的技术方案,下面结合图2a,对本实施例提供的生成筛选规则的方法进行详细描述。
步骤201,学习模块接收正例。
在本实施例中,输入学习模块的正例可以是技术人员挑选并输入的,也可以是由分类模块输入的,或者还可以是以往的模糊测试用中使用过的测试用例中有效的、差异较大的测试用例。
如果由技术人员挑选输入学习模块的正例,则优选的,这些正例可以是过去的测试中被证实比较有效的测试用例,或者可以是差别较大的测试用例,从而可以更好的构建筛选规则。
步骤202,学习模块基于归纳学习算法对接收的正例进行归纳学习,得到一归纳结果。
本实施例中,归纳学习算法为机器学习算法的一种,包括能够发现由同一方法生成的样本的共同结构的各种算法,其中同一方法也包括了同一正则表达式。也即,通过归纳学习算法,可以获得一结构,该结构能够生成被输入的正例;或者还可以获得一方法,该方法能够公式化输入的正例。
例如,归纳学习算法可以包括文法推断(Grammatical Inference,GI)算法,具体的,例如可以为基于正反例的正则文法推导(Regular Positive and NegativeInference,RPNI)或者基于正反例的正则文法递增推导(Incremental RegularPositive and Negative Inference,RPNI2)。
步骤203,学习模块将该归纳结果作为筛选规则发送到分类模块。
本实施例中,通过使用归纳学习算法对输入的正例进行学习,从而得到一筛选规则,保证了该筛选规则能够比较好的贴近筛选的目的,也即尽可能保留多样的测试用例,同时尽可能的抛弃冗余测试用例。
并且,由于图2a所示的方法可以多次重复执行,因而可以对生成的筛选规则不断进行优化,从而更好地保证被保留的测试用例的多样性以及确保更多的冗余测试用例被筛除。
进一步的,为了使得产生的筛选规则能够更准确的筛选出合适的测试样例,还可以如图2b所示,包括步骤204,学习模块接收反例。相应的,学习模块基于归纳学习算法依据接收的正例和反例进行学习,得到一归纳结果。
本实施例中,步骤204与步骤201之间没有特定的执行顺序,可以同时执行,也可以先执行步骤201或者先执行步骤204。
通过为学习模块提供反例,可以使得学习模块生成的归纳结果更接近于生成各种正例的方法或者表达式,从而能够更准确地对测试用例进行筛选。
图3为本发明实施例提供的另一种筛选测试用例的方法的流程示意图。
该方法包括:
步骤301,分类模块接收测试用例。
步骤302,分类模块根据筛选规则判断接收的测试用例是否符合筛选规则,若符合则执行步骤309,若不符合则执行步骤303。
步骤303,分类模块将该测试用例输入到待测试环境并且将该测试用例作为正例输入到学习模块中。
步骤304,学习模块基于归纳学习算法对接收的正例进行归纳学习,得到一归纳结果。
步骤305,学习模块将该归纳结果发给分类模块作为筛选规则。
步骤309,分类模块抛弃该测试用例。
进一步的,本实施例中,还可以包括步骤306,学习模块接收反例。相应的,步骤304可以为学习模块基于归纳学习算法对接收的正例和反例进行归纳学习,得到一归纳结果。
进一步的,本实施例中,还可以包括步骤307,学习模块接收外界输入的正例。也即学习模块仅仅可以通过分类模块的输入获得正例,还可以仅由外界向其输入正例,或者还可以由外界向其输入正例并且通过分类模块的输入获取正例。
进一步的,本实施例中,还可以将步骤309中抛弃的测试用例中与正例相似的测试用例作为反例输入到学习模块中。
从图3中可以看出,由于上述各步骤之间可以循环执行或者重复执行,因此可以通过对输入的测试用例进行筛选并将新测试用例作为正例进行学习,从而可以越来越精确的对测试用例进行筛选。同时,这个过程可以由设备自己完成,而无须人工干预,自动化程度很高。
并且,从图3中还可以看出,由于整个方法可以循环执行,所以在第一次开始执行时,可以将步骤301作为方法的起始,也可以将步骤307或者步骤306作为方法的起始。将步骤301作为方法的起始步骤时,可以将整个方法完全自动化,也即不依靠外界向学习模块输入正例,并且随着测试用例的不断输入,学习模块获得的归纳结果越来越符合筛选的需求,从而分类模块可以根据不断完善的筛选原则进行筛选。将步骤306或者步骤307作为方法的起始步骤时,可以先生成一个筛选原则,从而使得分类模块的筛选从开始时就比较有效率,也即提高了筛选的效率。因此,可以根据实际中不同的需求,采用不同的步骤作为方法的起始步骤。
本实施例中,通过学习模块对输入的正例进行学习从而生成筛选测试用例的筛选规则,并且再通过筛选得到的测试用例作为正例进一步改善筛选规则,从而使得分类模块能够保留更多的新测试用例,并且能够抛弃更多的冗余测试用例。
下面通过图4所示的具体示例对本发明实施例提供的筛选测试用例的技术方法进行详细描述。该方法包括:
步骤401,将正例和反例输入到学习模块中。
本实施例中,可以根据安全测试领域内的知识,选择学习模块的初始学习样本集合,例如过去对其他系统进行模糊测试所使用的有效测试用例。将初始学习样本集合分为两组,其中正例组包括了彼此之间具有一定差别的有效测试用例,反例组包括了与正例组中某个测试用例相似的测试用例。进一步的,反例组还可以包括无效测试用例。
步骤402,通过正例组中的正例构建前缀树自动机(Prefix Tree Automata,PTA)。
在进行步骤402之前还可以先定义PTA的分隔字符表,也即进行模糊测试的特殊字符,例如除了大小写字母以及数字以外的字符。这些字符通常对于触发系统缺陷有着至关重要的作用。在本实施例中,这些字符可以作为分隔符以分隔由大小写字符以及数字中任一或其任意组合构成的词句,之后可以将这些词句作为PTA实际处理的字符表。
步骤403,根据状态上标识的词句是否相同将PTA的不同状态进行分组,并将同组中的状态合并为一个状态,然后检查是否新的自动机能够符合所有的正例,且不包括所有的反例,如果是,则继续简化得到的自动机,如果不是则退回合并之前的状态并尝试其他的合并,直到没有能够合并的状态时,得到一确定有限自动机(Deterministic Finite Automata,DFA)并执行步骤404。
步骤404,将得到的DFA发送至分类模块。
步骤405,分类模块根据DFA对输入的测试用例进行分类或过滤。
步骤405具体为,对输入的每个测试用例,分类模块检查DFA是否能够接受输入的测试用例,如果可以,则该测试用例为冗余测试用例,如果不可以,则该测试用例为新测试用例。
具体的,DFA能够接受输入的测试用例包括:若测试用例能够使得该DFA从初始状态到达一最终状态,则DFA能够接受输入的测试用例;若测试用例不能使得该DFA从初始状态到达一最终状态,则该DFA不能够接受输入的测试用例。
本实施例中,新测试用例会被输入到待测试环境中,用于进行模糊测试。由于进行模糊测试时,使用的都是新测试用例,因此不会对于相似或者相同的测试用例进行反复测试,从而节省了测试时间,提高了测试效率。
进一步的,还可以将新测试用例作为正例输入学习模块,从而学习模块可以对DFA进行完善,进一步的提高筛选效率。
进一步的,本实施例中,还可以对分类模块进行进一步的改造,也即分类模块不仅仅验证输入的测试用例是否能够通过DFA,还可以进行近似比较。也即,步骤405还可以具体为,对输入的每个测试用例,分类模块检查DFA是否能够接受输入的测试用例,如果可以,则该测试用例为冗余测试用例,如果不可以,则比较测试用例与DFA中相应词句的区别,若区别仅在于不同的大小写字母和数字中任一或其任意组合,则认为该测试用例为冗余测试用例,如果区别不仅在于不同的大小写字母和数字中任一或其任意组合,则认为该测试用例为新测试用例。
具体的,若测试用例能够使得该DFA从初始状态到达一最终状态,则认为测试用例符合筛选规则;若测试用例不能使得该DFA从初始状态到达一最终状态,且测试用例与DFA从初始状态到达一最终状态的路径中最相似的路径的差异仅在于大写字母、小写字母和数字中任一或其任意组合,则测试用例符合筛选规则;若测试用例不能使得该DFA从初始状态到达一最终状态,且测试用例与该DFA从初始状态达到一最终状态的路径中最相似的路径的差异不仅在于大写字母、小写字母和数字中任一或其任意组合,则认为测试用例不符合筛选规则。
可以看到,通过进行近似比较,可以筛选掉更多近似的测试用例,以进一步提高测试的效率。
并且,还可以将近似比较中,不能使得DFA从初始状态到达一最终状态但与DFA从初始状态到达一最终状态的路径中最相思的路径的差异仅在于大写字母、小写字母和数字中任一或其任意组合的测试用例,作为反例输入学习模块,从而学习模块可以对DFA进行进一步的完善,以提高筛选效率。也即,将冗余测试用例中与正例相似的测试用例作为反例输入到学习模块中。
上述各实施例之间可以相互参照,且各个实施例所公开的方法的各个步骤,可以采用软件、硬件或者软硬件相结合的方式来实现。
图5为本发明实施例提供的筛选装置的结构示意图,用于对测试用例进行筛选。该筛选装置包括:
接收模块501,用于接收测试用例。
判断模块502,用于依据筛选规则判断接收的测试用例为冗余测试用例或者新测试用例。也即,判断模块502,用于依据筛选规则判断接收模块501接收的测试用例是否符合该筛选规则。
具体的,参照图1所示的方法实施例,判断模块502例如可以判断接收模块501接收的测试用例是否包括在筛选规则代表的测试用例集合中;进一步的,还可以是判断模块502判断筛选规则代表的测试用例的集合中是否包括与接收模块501接收的测试用例相同或者相似的测试用例。具体的实施方式可以参照图1所示实施例,此处不再赘述。
输出模块503,用于将新测试用例发送到待测试环境中。也即,输出模块503用于根据判断模块502的判断,输出不符合测试规则的测试用例用于模糊测试。
本实施例中,筛选规则可以具体参照方法实施例中的相应描述,此处不再赘述。
本实施例提供的筛选装置例如可以执行图1所示的方法实施例。
通过本实施例提供的筛选装置,可以对测试用例进行筛选,仅将新测试用例输入到待测试环境中,从而避免了测试时在相同或者相似的测试用例上浪费测试时间,提高了测试效率。
如图6所示,为了提高筛选装置的筛选准确度和/或自动化程度,本发明实施例提供了另一种筛选装置,该筛选装置包括:
接收模块601,用于接收测试用例。
判断模块602,用于依据筛选规则判断接收的测试用例为冗余测试用例或者新测试用例。
学习模块603,用于根据正例按照归纳学习算法进行归纳学习,得到一归纳结果,并将该归纳结果输入判断模块602作为筛选规则。
输出模块604,用于将新测试用例发送到待测试环境中。
进一步的,学习模块603可以将判断模块602判断为新测试用例的测试用例作为正例进行学习。
进一步的,学习模块603可以将判断模块602判断为冗余测试用例中与正例相似的测试用例作为反例进行学习。
进一步的,接收模块601还可以用于接收正例,并将正例输入到学习模块603中。
进一步的,接收模块601还可以用于接收反例,并将反例输入到学习模块603中。
进一步的,学习模块603还可以根据输入的正例和反例按照归纳学习算法进行学习,得到一归纳结果,并将该归纳结果输入判断模块602作为筛选规则。
本实施例中,学习模块603具体的学习方法可以参照方法实施例中的描述,此处不再赘述。
本领域技术人员可以通过上述示例经过简单变形得到其他的实现方式,例如增加存储模块,存储筛选规则等。
本实施例提供的筛选装置例如可以执行上述方法实施例。
通过本实施例提供的筛选装置,可以使得该筛选装置在进行筛选的过程中不断学习,从而完善筛选原则,使得筛选出来的新测试用例更加多样化,以及更多的冗余测试用例被抛弃,提高测试效率。
如图7所示,本发明实施例还提供了一种筛选系统,该筛选系统包括:学习装置710和分类装置720。
其中,学习装置710用于按照归纳学习算法对获取的正例进行归纳学习,且得到一归纳结果。分类装置720用于将学习装置710得到的归纳结果作为筛选规则,并判断输入的测试用例是否符合该筛选规则,且输出不符合该筛选规则的测试用例。
具体的,学习装置710包括:第一接收模块711,用于接收正例;学习模块712,用于根据输入的正例按照归纳学习算法进行学习,得到一归纳结果;第一发送模块713,用于将该归纳结果发送到分类装置720。
进一步的,学习装置710中,第一接收模块711还可以用于接收反例,相应的,学习模块712还可以用于根据正例和反例按照归纳学习算法进行学习,得到一归纳结果。相应的,学习装置710可以用于按照归纳学习算法对获取的正例和反例进行归纳学习,且得到一归纳结果。
具体的,分类装置720包括:第二接收模块721,用于接收测试用例以及学习装置710发送的筛选规则;判断模块722,用于根据筛选规则判断接收的测试用例为冗余测试用例或者新测试用例;第二发送模块723,用于将新测试用例输出到待测试环境。
进一步的,第二发送模块723还可以用于将新测试用例输入到学习装置710中作为正例。相应的,分类装置720可以用于将不符合筛选规则的测试用例输入学习装置710作为正例。
进一步的,第二发送模块723还可以用于将冗余测试用例中与正例相似的测试用例输入到学习装置710中作为反例。
在本实施例中,具体实现时,学习装置710和分类装置720可以是独立的两个设备,也可以是一个设备中的两个装置,甚至可以是一个装置中的两个独立的模块。
本实施例提供的筛选系统例如可以执行上述方法实施例。
通过本实施例提供的筛选系统,分类装置可以根据筛选规则对测试用例进行筛选,保留新测试用例且抛弃冗余测试用例从而提高了后续测试的效率。并且可以通过学习装置实现筛选规则的生成,从而提高了筛选系统的准确度、效率以及自动化程度,同时,由于学习装置还可以通过筛选出来的新测试用例完善筛选规则,进一步提高了整个系统的自动化程度,并且使得筛选规则可以不断得到优化。
本领域技术人员应当理解,本发明的各个实施例可以在没有偏离发明实质的情况下做出各种变型和改变,这些变型和改变都在本发明的保护范围之内。因此,本发明的保护范围由所附的权利要求书来定义。
Claims (17)
1.一种筛选测试用例的方法,其特征在于,所述方法包括:
接收测试用例;
根据筛选规则,判断接收的测试用例是否符合所述筛选规则,其中:所述筛选规则包括一确定有限自动机DFA;
所述根据筛选规则,判断所述接收的测试用例是否符合所述筛选规则,包括:
若所述接收的测试用例能够使得所述DFA从初始状态到达一最终状态,则所述测试用例符合所述筛选规则;和/或
若所述接收的测试用例不能使得所述DFA从初始状态到达一最终状态,则所述测试用例不符合所述筛选规则;
若所述接收的测试用例不符合所述筛选规则,则输出所述接收的测试用例用于进行模糊测试。
2.如权利要求1所述的方法,其特征在于,若所述接收的用例不能使得所述DFA从初始状态到达一最终状态,则进一步判断:所述测试用例与所述DFA从初始状态到达一最终状态的路径中最相似的路径的差异是否仅在于大写字母、小写字母和数字中任一或其任意组合;
若所述测试用例与所述DFA从初始状态到达一最终状态的路径中最相似的路径的差异仅在于大写字母、小写字母和数字中任一或其任意组合,则所述测试用例符合所述筛选规则;否则,所述测试用例不符合所述筛选规则。
3.如权利要求1或2所述的方法,其特征在于,所述方法进一步包括:
获取正例;
按照归纳学习算法对所述正例进行归纳学习,其中所述归纳学习算法包括用于发现按照同一方法生成的样本的共同结构的算法;
将归纳学习得到的归纳结果作为所述筛选规则。
4.如权利要求3所述的方法,其特征在于,所述获取正例包括:
接收正例,其中所述正例包括在以往的模糊测试中有效的、彼此之间存在差异的测试用例;或者
将不符合所述筛选规则的测试用例作为正例。
5.如权利要求3所述的方法,其特征在于,
所述方法进一步包括:获取反例;
所述按照归纳学习算法对所述正例进行归纳学习包括:按照归纳学习算法对所述正例和反例进行归纳学习。
6.如权利要求5所述的方法,其特征在于,所述反例包括:
与所述正例中的至少一个测试用例相似的测试用例;和/或
在以往的模糊测试中无效的测试用例。
7.如权利要求3所述的方法,其特征在于,所述归纳学习算法为文法推断算法。
8.如权利要求7所述的方法,其特征在于,所述文法推断算法为基于正反例的正则文法推导RPNI或者基于正反例的正则文法递增推导RPNI2。
9.一种筛选装置,其特征在于,所述装置用于筛选测试用例,且所述装置包括:
接收模块,用于接收测试用例;
判断模块,用于依据筛选规则判断所述接收模块接收的测试用例是否符合所述筛选规则,其中:所述筛选规则包括一确定有限自动机DFA;
所述依据筛选规则判断所述接收模块接收的测试用例是否符合所述筛选规则,包括:
若所述接收的测试用例能够使得所述DFA从初始状态到达一最终状态,则所述测试用例符合所述筛选规则;和/或
若所述接收的测试用例不能使得所述DFA从初始状态到达一最终状态,则所述测试用例不符合所述筛选规则;
输出模块,用于根据所述判断模块的判断,输出不符合所述筛选规则的测试用例用于进行模糊测试。
10.如权利要求9所述的装置,其特征在于,所述判断模块,还用于若所述接收的测试用例不能使得所述DFA从初始状态到达一最终状态,则进一步判断:所述测试用例与所述DFA从初始状态到达一最终状态的路径中最相似的路径的差异是否仅在于大写字母、小写字母和数字中任一或其任意组合;
若所述测试用例与所述DFA从初始状态到达一最终状态的路径中最相似的路径的差异仅在于大写字母、小写字母和数字中任一或其任意组合,则所述测试用例符合所述筛选规则;否则,所述测试用例不符合所述筛选规则。
11.如权利要求9或10所述的装置,其特征在于,所述装置进一步包括:
学习模块,用于按照归纳学习算法对获取的正例进行归纳学习,并将学习得到的归纳结果输入所述判断模块作为所述筛选规则,其中所述归纳学习算法包括用于发现按照同一方法生成的样本的共同结构的算法。
12.如权利要求11所述的装置,其特征在于,
所述接收模块进一步用于接收所述正例,并将所述正例输入所述学习模块,所述正例包括在以往的模糊测试中有效的、彼此之间存在差异的测试用例;或者
所述判断模块进一步用于将不符合所述筛选规则的测试用例输入所述学习模块作为正例。
13.如权利要求11所述的装置,其特征在于,所述学习模块,具体用于按照归纳算法对获取的正例和反例进行归纳学习,并将学习得到的归纳结果输入所述判断模块作为筛选规则。
14.如权利要求13所述的装置,其特征在于,
所述接收模块进一步用于接收所述反例,并将所述反例输入所述学习模块。
15.一种筛选系统,其特征在于,所述筛选系统包括:
学习装置,用于按照归纳学习算法对获取的正例进行归纳学习,且得到一归纳结果,其中所述归纳学习算法包括用于发现按照同一方法生成的样本的共同结构的算法;
分类装置,用于将所述学习装置得到的归纳结果作为筛选规则,并判断输入的测试用例是否符合所述筛选规则,且输出不符合所述筛选规则的测试用例用于进行模糊测试,其中:所述筛选规则包括一确定有限自动机DFA;
所述判断输入的测试用例是否符合所述筛选规则,包括:
若输入的测试用例能够使得所述DFA从初始状态到达一最终状态,则所述测试用例符合所述筛选规则;和/或
若输入的测试用例不能使得所述DFA从初始状态到达一最终状态,则所述测试用例不符合所述筛选规则。
16.如权利要求15所述的筛选系统,其特征在于,所述分类装置,还用于若输入的测试用例不能使得所述DFA从初始状态到达一最终状态,则进一步判断:所述测试用例与所述DFA从初始状态到达一最终状态的路径中最相似的路径的差异是否仅在于大写字母、小写字母和数字中任一或其任意组合;
若所述测试用例与所述DFA从初始状态到达一最终状态的路径中最相似的路径的差异仅在于大写字母、小写字母和数字中任一或其任意组合,则所述测试用例符合所述筛选规则;否则,所述测试用例不符合所述筛选规则。
17.如权利要求15或16所述的筛选系统,其特征在于,
所述学习装置进一步用于,按照归纳学习算法对获取的正例和反例进行归纳学习,且得到一归纳结果;和/或
所述分类装置进一步用于,将不符合所述筛选规则的测试用例输入所述学习装置作为正例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010271071.7A CN102385551B (zh) | 2010-08-31 | 2010-08-31 | 一种筛选测试用例的方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010271071.7A CN102385551B (zh) | 2010-08-31 | 2010-08-31 | 一种筛选测试用例的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102385551A CN102385551A (zh) | 2012-03-21 |
CN102385551B true CN102385551B (zh) | 2015-04-29 |
Family
ID=45824981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010271071.7A Active CN102385551B (zh) | 2010-08-31 | 2010-08-31 | 一种筛选测试用例的方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102385551B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103473175A (zh) * | 2013-09-11 | 2013-12-25 | 江苏中科梦兰电子科技有限公司 | 一种软件测试用例集的提取方法 |
CN104090838A (zh) * | 2014-06-19 | 2014-10-08 | 苏州市职业大学 | 一种生成测试用例的方法 |
WO2019142266A1 (ja) * | 2018-01-17 | 2019-07-25 | 三菱電機株式会社 | テストケース生成装置、テストケース生成方法およびテストケース生成プログラム |
CN108228469B (zh) * | 2018-02-23 | 2021-10-08 | 科大讯飞股份有限公司 | 测试用例选取方法及装置 |
CN108459964B (zh) * | 2018-03-06 | 2021-05-04 | 平安科技(深圳)有限公司 | 测试用例选择方法、装置、设备以及计算机可读存储介质 |
CN108470002B (zh) * | 2018-03-19 | 2022-05-03 | 南京邮电大学 | 一种面向Selenium IDE的XML测试脚本质量评判方法 |
CN109522221B (zh) * | 2018-10-26 | 2021-08-31 | 中国科学院信息工程研究所 | 一种提高模糊测试效率的方法和系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436128A (zh) * | 2007-11-16 | 2009-05-20 | 北京邮电大学 | 软件测试用例自动生成方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100583057C (zh) * | 2008-04-22 | 2010-01-20 | 中国科学院软件研究所 | 一种可信密码模块的测试用例生成方法及其测试系统 |
-
2010
- 2010-08-31 CN CN201010271071.7A patent/CN102385551B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436128A (zh) * | 2007-11-16 | 2009-05-20 | 北京邮电大学 | 软件测试用例自动生成方法及系统 |
Non-Patent Citations (1)
Title |
---|
最小测试用例集生成方法改进及应用;万松松等;《计算机技术与发展》;20081031;第18卷(第10期);第181-183页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102385551A (zh) | 2012-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102385551B (zh) | 一种筛选测试用例的方法、装置及系统 | |
US9870502B2 (en) | Apparatus for, a method of, and a network server for detecting data patterns in a data stream | |
CN100485684C (zh) | 文本内容过滤方法和系统 | |
CN101859273B (zh) | 一种产生测试用例的方法及装置 | |
CN105791269B (zh) | 一种基于数据白名单的信息安全网关 | |
CN102420723A (zh) | 一种面向多类入侵的异常检测方法 | |
CN109639734B (zh) | 一种具有计算资源自适应性的异常流量检测方法 | |
CN105991517B (zh) | 漏洞发掘方法和装置 | |
CN103853650A (zh) | 一种模糊测试的测试用例生成方法及装置 | |
CN103679018A (zh) | 一种检测csrf漏洞的方法和装置 | |
CN104618132A (zh) | 一种应用程序识别规则生成方法和装置 | |
CN112685738B (zh) | 一种基于多级投票机制的恶意混淆脚本静态检测方法 | |
CN106254321A (zh) | 一种全网络异常数据流分类方法 | |
CN110956123B (zh) | 一种富媒体内容的审核方法、装置、服务器及存储介质 | |
CN105939340A (zh) | 一种发现隐藏的蠕虫病毒的方法及系统 | |
CN107104988A (zh) | 一种基于概率神经网络的IPv6入侵检测方法 | |
CN112084180A (zh) | 一种监控车载应用质量的方法、装置、设备及介质 | |
CN1223941C (zh) | 一种基于相关特征聚类的层次入侵检测系统 | |
CN107391684A (zh) | 一种威胁情报生成的方法及系统 | |
CN116756225B (zh) | 一种基于计算机网络安全的态势数据信息处理方法 | |
CN114372519A (zh) | 模型训练方法、api请求过滤方法、装置和存储介质 | |
CN111669396B (zh) | 一种软件定义物联网自学习安全防御方法及系统 | |
CN108897678A (zh) | 静态代码检测方法和静态代码检测系统、存储设备 | |
CN101815015A (zh) | 面向内容的网络流量快速安检引擎 | |
CN106055571A (zh) | 网站识别方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |