本发明涉及一种用于基于待测试目标程序的黑盒模糊测试来生成至少一个新测试用例的方法。本发明还涉及用于此目的的训练方法、模型、计算机程序、设备和存储介质。
背景技术:
1、从现有技术中已知黑盒模糊测试作为软件测试方法,其中应用程序被视为黑盒并且面临大量随机且不可预测的输入以便识别错误或安全漏洞。在这种方法中,通常无法考虑应用程序的内部作用方式。通过对非预期行为的反馈,可以识别可能的弱点,以改善应用程序的安全性和稳定性。典型的黑盒模糊测试结构可能包括种子、模糊器和目标程序。
2、传统上,黑盒模糊器可以在不了解目标程序的内部行为或其实现方式的情况下生成针对所述目标程序的输入。在这种情况下,程序的源代码不可用,这会阻止模糊器获得如下反馈,诸如代码覆盖率或路径覆盖率,其中所述反馈可以指导(anleiten)附加测试用例的生成。模糊器在实践中根据随机原理进行测试,并且无法随着时间的推移而改进。例如,在测试嵌入式设备及其软件时,这是很常见的。黑盒模糊测试的另一个应用是针对如下程序的,所述程序对于其输入而言不具有确定性的输出。
技术实现思路
1、本发明的主题是具有权利要求1的特征的方法、具有权利要求7的特征的训练方法、具有权利要求8的特征的模型、具有权利要求9的特征的计算机程序、具有权利要求10的特征的设备以及具有权利要求11的特征的计算机可读存储介质。本发明的进一步的特征和细节从相应的从属权利要求、说明书和附图中得出。在此,在根据本发明的方法的上下文中所描述的特征和细节当然也适用于根据本发明的训练方法、根据本发明的模型、根据本发明的计算机程序、根据本发明的设备以及根据本发明的计算机可读存储介质的上下文,并且分别反之亦然,使得关于本发明的各个方面的公开,总是相互参考或可以相互参考。
2、特别是,本发明的主题是一种用于基于待测试目标程序的优选黑盒模糊测试来生成针对模糊测试的至少一个新测试用例的方法。所述目标程序在此还可以是嵌入式系统的一部分,例如用于控制至少部分自主的机器人,优选地车辆。
3、根据第一方法步骤,该方法可以包括提供至少一个预给定测试用例,特别是针对黑盒模糊测试。这样的测试用例可以例如包括针对该目标程序的一个或多个程序输入,所述程序输入被用于测试目标程序。对于模糊测试来说,所述目标程序可能会面临大量的所述测试用例和相应的程序输入,而没有任何反馈、例如目标程序的代码覆盖率或路径覆盖率可用。
4、根据本发明的方法可以有助于:与传统解决方案不同,在模糊测试中仍然可以考虑程序输入对目标程序的效果。在此,所述黑盒模糊测试可以通过机器学习来扩展,使得其像是灰盒或白盒模糊测试那样使用所述效果作为指导标准(leitkriterium)。根据本发明的方法的第二方法步骤,因此可以规定,基于所提供的预给定测试用例来预测至少一个辅助信息(nebeninformation)。在此,所述至少一个辅助信息可以特定于所提供的预给定测试用例对待测试目标程序的效果。换句话说,可以预测辅助信息,而不是检测诸如代码覆盖率之类的可能在灰盒或白盒模糊测试情况下实际上在目标程序中检测到的反馈。在模糊测试中,这使得能够将辅助信息考虑为通过预测(例如通过机器学习算法)得出的另一种形式的反馈。在此,所述效果在黑盒模糊测试中可以像是在其他情况下的灰盒模糊测试或白盒模糊测试中的反馈那样以相同或相似的方式得以利用。例如,根据第三方法步骤,然后可以基于预测生成至少一个新测试用例。因此,本发明可以实现:借助于机器学习由程序伴随的(programmbegleitend)信息来引导黑盒模糊测试,即便是无法访问程序的源代码。
5、本发明特别是涉及动态软件测试方法:模糊测试,其被扩展为包括可以用作反馈机制的辅助信息。具体地,该模糊测试可以作为黑盒模糊测试来进行,其中被测试程序(以下也称为目标程序)的源代码不可用。例如,在[4]中对模糊测试进行了更详细的解释,并在说明书末尾给出了括号中的参考文献。可以使用模糊测试来监控目标程序是否存在异常,例如崩溃、失败的内置代码断言或潜在的内存泄漏。在此,处理结构化输入的模糊器可以被用于测试目标程序。该结构例如可以以特定的格式或协议来指定,并且可以将有效输入与无效输入区分。有效的模糊器因此可以生成半有效的输入,它们是“足够有效的”,使得它们不会被目标程序直接拒绝但会在目标程序中的更深层区域引起非预期的行为模式,并且它们是“足够无效”的,以揭示未正确处理的边界情况(eckfall)。fuzz-testing(模糊测试)或模糊测试因此可以包括自动化过程,其中将随机产生的输入发送到目标程序并观察其响应。模糊器,也称为模糊引擎,相应地特别是自动生成输入的软件。在此可能的是,模糊器既不与待测试目标程序连接也不被插装。已知的模糊器示例是afl和libfuzzer。
6、待测试的软件也可以称为目标程序或模糊目标。特别是,具有要通过模糊测试进行测试的仅一个函数或多个函数的软件程序被理解为目标程序。模糊目标的一个主要特征可以是:所述模糊目标潜在地消耗了在模糊测试过程期间由模糊器生成的不可信输入。还可以设置如下模糊测试,所述模糊测试代表了模糊器和模糊目标的组合版本。模糊测试可以是可执行的。模糊器还可以启动、观察和停止多个正在运行的模糊测试(例如每秒数百或数千次),每个测试都有由模糊器生成的略有不同的输入。
7、测试用例可以是模糊测试的特定输入和/或测试轮次。为了确保可重现性,相关的测试轮次(其显示出新的代码路径或崩溃)可以被存储。通过这种方式,特定测试用例可以利用相应输入也在未连接到模糊器的模糊目标上、例如在其发布版本中执行。
8、模糊测试可以作为基于变异的模糊测试来执行。在此情况下生成新的程序输入,其方式为,对现有输入(也称为种子(seed))进行小的更改,这种小的更改虽然仍保持输入有效,但会触发新的行为。种子是初始程序输入,其可用作针对基于变异的模糊测试的起始点。种子的能量是可以通过变异由种子生成的测试用例的数量。功率规划(leistungsplan)是基于变异的模糊器分派给种子的重要性,它直接影响种子排队等待变异的顺序
9、为了执行软件测试,还可以设置调试器(debugger)来控制目标程序并提供例如用于检索寄存器值或存储器值以及用于停止和中断单个步骤中的执行的功能。可以通过调试器将断点(breakpoint)设置到目标程序的命令上,以便在到达时停止执行并通知控制进程。可以通过调试器将数据观察点(watchpoint)设置到目标程序的存储地址,以便在对该存储地址进行访问时停止执行并通知控制进程。
10、此外,在本发明的范畴内,可选地可以通过模型、优选地通过机器学习模型来预测所述至少一个辅助信息。在此情况下,所述模型可以由使用训练测试用例及其对目标程序的效果进行的训练而产生,如特别针对根据本发明的训练方法所描述的那样。因此而可能的是,在生成新测试用例时可以考虑预给定测试用例的效果,即使不直接在目标程序中检测辅助信息。
11、还可以设想的是,通过生成所提供的预给定测试用例的变异来生成至少一个新测试用例。特别是如果所预测的辅助信息满足预给定条件,例如指示出预给定测试用例的成功(erfolg)的话,那么所述变异可以用于新测试用例。通过这种方式,所述辅助信息可以用作针对黑盒模糊测试的指导标准。
12、此外,在本发明的范畴内,可选地,可以通过优化方法基于所预测的辅助信息来以如下方式优化所述至少一个新测试用例的生成,使得由于通过对所提供的预给定测试用例的变异而影响到对目标程序的效果而达成了所述辅助信息对预给定条件的满足,其中所述预给定条件指定:所述效果达到了极值(extrema)。换句话说,优化方法可以以如下方式对新测试用例执行优化,使得新测试用例对目标程序的效果如此受到影响,以使得在此基础上的辅助信息能够尽量满足预给定条件。
13、还可以设置以下步骤:
14、-在目标程序上执行生成的新测试用例,以便执行模糊测试,并且优选地执行黑盒模糊测试,其中,预测至少一个辅助信息,以便在了解对目标程序的效果的情况下扩展模糊测试,优选地以便使用所述辅助信息作为针对所述模糊测试的指导标准,
15、-在目标程序上执行生成的新测试用例时在所述目标程序中确定所述至少一个辅助信息,
16、-将所确定的辅助信息与预给定条件进行比较以确定是否满足预给定条件,
17、-如果满足所述预给定条件,则将新测试用例采纳到种子语料库中,优选地以便将所采纳的新测试用例用作为针对重新执行所述方法步骤的预给定测试用例。
18、通过这种方式,能够以相关的测试用例来扩展种子语料库。
19、可选地,可以设想,所述效果是对目标程序的执行时间和/或资源消耗的效果,其中如果所述至少一个辅助信息指示出所述效果的至少局部极值和/或所述资源消耗的增加和/或所述执行时间的延长,则优选地满足预给定条件。达到这样的极值可以指示出测试用例的成功,并且因此可以用作为指导标准。
20、本发明主题还是一种用于模型、优选地用于机器学习模型的训练方法,以用于预测至少一个辅助信息,所述至少一个辅助信息用于扩展黑盒模糊测试,特别是扩展为包括由预测的辅助信息提供的反馈。在此可以设置以下步骤:
21、-提供训练数据,其中所述训练数据指定训练测试用例及其对待测试目标程序的效果,
22、-训练模型以用于基于所提供的训练数据来预测所述至少一个辅助信息,其中所述至少一个辅助信息指示出所述效果,
23、-提供经过训练的模型。
24、因此,根据本发明的训练方法带来了与参考根据本发明的方法已详细描述的相同的优点。此外,由根据本发明的训练方法产生的经过训练的模型也可以是本发明主题。
25、本发明主题还是一种计算机程序,特别是一种计算机程序产品,其包括指令,当该计算机程序由计算机执行时,所述指令促使所述计算机执行根据本发明的方法。因此,根据本发明的计算机程序带来了与参考根据本发明的方法已详细描述的相同的优点。
26、本发明主题还是一种被设置为执行根据本发明的方法的用于数据处理的设备。例如,可以设置执行根据本发明的计算机程序的计算机作为所述设备。该计算机可以具有至少一个用于执行计算机程序的处理器。还可以设置非易失性数据存储器,在所述非易失性数据存储器中可以存储计算机程序并且可以由处理器从所述非易失性数据存储器读取计算机程序以供执行。
27、本发明主题还可以是一种计算机可读存储介质,其具有根据本发明的计算机程序和/或包括指令,当由计算机执行时所述指令促使所述计算机执行根据本发明的方法。所述存储介质例如被设计为数据存储器,例如硬盘和/或非易失性存储器和/或存储卡。所述存储介质可以例如被集成到计算机中。
28、另外,根据本发明的相应方法还可以作为计算机实现的方法被执行。
1.一种用于基于待测试目标程序(140)的黑盒模糊测试来生成至少一个新测试用例(115)的方法(100),所述方法包括以下步骤:
2.根据权利要求1所述的方法(100),
3.根据前述权利要求中任一项所述的方法(100),
4.根据前述权利要求中任一项所述的方法(100),
5.根据前述权利要求中任一项所述的方法(100),
6.根据前述权利要求中任一项所述的方法(100),其特征在于,所述效果是对所述目标程序(140)的执行时间和/或资源消耗的效果,其中如果所述至少一个辅助信息(120)指示出所述效果的至少局部极值和/或所述资源消耗的增加和/或所述执行时间的延长,则优选地满足所述预给定条件。
7.一种用于模型(50)的训练方法(200),以用于预测用于扩展黑盒模糊测试的至少一个辅助信息(120),所述训练方法包括以下步骤:
8.一种模型(50),所述模型由根据权利要求7所述的训练方法(200)而产生。
9.一种计算机程序(20),所述计算机程序包括指令,当所述计算机程序(20)由计算机(10)执行时,所述指令促使所述计算机(10)执行根据权利要求1至7中任一项所述的方法(100)。
10.一种用于数据处理的设备(10),所述用于数据处理的设备被设置为执行根据权利要求1至7中任一项所述的方法(100)。
11.一种计算机可读存储介质(15),所述计算机可读存储介质包括指令,当由计算机(10)执行时,所述指令促使所述计算机执行根据权利要求1至7中任一项所述的方法(100)的步骤。