【技术实现步骤摘要】
对软件系统进行模糊测试
[0001]本专利技术涉及对软件系统进行模糊测试的方法、以及用于实现这样的方法的系统和计算机程序。
技术介绍
[0002]软件系统测试是软件开发和部署的重要组成部分。构成软件系统的大量代码/指令意味着在为软件系统编写代码时可能会(通常是意外地)引入“故障”(例如漏洞、错误、安全弱点或其他问题点)。如果不对软件系统进行测试,则这样的故障会在部署后保留在软件系统中,进而可能导致软件系统在执行过程中出现问题。此类问题可能相对无害或不方便;其他问题可能会导致软件系统出现意外/无意行为,包括软件系统崩溃;其他问题可能更具灾难性,甚至可能导致生命损失(例如,如果软件系统正在控制涉及人/动物或与之交互的物理系统的话)。某些故障可能会提供攻击向量,攻击者可以通过该向量执行一次或多次攻击,然后可能导致诸如功能丢失、向攻击者提供对功能/数据的未授权访问等问题,所有这些都会造成随之而来的成本和影响。
[0003]在此,“软件系统”可以被认为是整个/完整的软件(代码/指令)系统;然而,“软件系统”可以是更大的软件系统 ...
【技术保护点】
【技术特征摘要】
1.对软件系统进行模糊测试的方法,其中该软件系统包括多个可调用单元并且被布置为接收供该软件系统处理的输入,该方法包括:针对多个可调用单元中的每个可调用单元、基于一个或多个安全漏洞度量来确定要测试可调用单元的目标次数;初始化经排序的多个队列,每个队列用于存储一个或多个种子,所述初始化包括将一个或多个初始种子存储在经排序的多个队列中的对应队列中;执行一系列测试,其中执行每个测试包括:从排序最高的非空队列获得种子;对所获得的种子执行变异过程以生成测试种子;提供测试种子作为软件系统的输入以供软件系统处理;以及评估软件系统对测试种子的处理以生成测试结果;其中经排序的多个队列中的每个队列具有关联的种子添加标准,并且其中执行每个测试包括:(a)将测试种子添加到经排序的多个队列中测试种子满足与该队列相关联的种子添加标准的排序最高的队列;或者(b)如果测试种子不满足与经排序的多个队列中的任何队列相关联的种子添加标准,则丢弃该测试种子;其中种子添加标准被配置为使得:如果软件系统对第一测试种子的处理涉及感兴趣可调用单元的执行或接近感兴趣可调用单元的执行路径并且如果软件系统对第二测试种子的处理不涉及感兴趣可调用单元的执行或接近感兴趣可调用单元的执行路径,则第一测试种子所添加到的队列比第二测试种子所添加到的队列具有更高的排序,其中,如果导致一可调用单元的执行的当前测试数小于要测试该可调用单元的目标次数,则该可调用单元为感兴趣可调用单元。2.根据权利要求1所述的方法,其中,种子添加标准被配置为使得:如果软件系统对第一测试种子的处理涉及接近感兴趣可调用单元的执行路径但不涉及感兴趣可调用单元的执行并且如果软件系统对第二测试种子的处理涉及感兴趣可调用单元的执行,则第一测试种子所添加到的队列比第二测试种子所添加到的队列具有更高的排序。3.根据权利要求1所述的方法,其中,种子添加标准被配置为使得:如果软件系统对第一测试种子的处理涉及接近感兴趣可调用单元的执行路径但不涉及感兴趣可调用单元的执行并且如果软件系统对第二测试种子的处理涉及感兴趣可调用单元的执行,则第一测试种子所添加到的队列比第二测试种子所添加到的队列具有更低的排序。4.根据前述权利要求中的任一项所述的方法,其中,种子添加标准被配置为使得:如果软件系统对第一测试种子的处理涉及一个或多个第一感兴趣可调用单元的执行或接近一个或多个第一感兴趣可调用单元的执行路径并且如果软件系统对第二测试种子的处理涉及一个或多个第二感兴趣可调用单元的执行或接近一个或多个第二感兴趣可调用单元的执行路径,则在以下情况下,第一测试种子所添加到的队列比第二测试种子所添加到的队列具有更高的排序:(a)一个或多个第一感兴趣可调用单元中的至少一个的剩余待测次数大于要测试的一个或多个第二感兴趣可调用单元中的每一个的剩余次数;或者(b)要测试的一个或多个第一感兴趣可调用单元中的每一个的剩余次数之和大于要测试的一个或多个第二感兴趣可调用单元中的每一个的剩余次数之和。
5.根据前述权利要求中的任一项所述的方法,其中,第一队列的种子添加标准是软件系统对测试种子的处理涉及感兴趣可调用单元的执行或接近感兴趣可调用单元的执行路径。6.根据前述权利要求中的任一项所述的方法,其中,第二队列的种子添加标准是软件系统对测试种子的处理到达软件系统中在执行先前测试时未到达的分支点。7.根据权利要求6在从属于权利要求5时所述的方法,其中,第一队列具有比第二队列更高的排序。8.根据权利要求7所述的方法,其中,经排序的多个队列是包含第一队列和第二队列的集合。9.根据前述权利要求中的任一项所述的方法,其中,从排序最高的非空队列获得种子包括从排序最高的非空队列移除该种子。10.根据前述权利要求中的任一项所述的方法,包括针对测试种子确定对应重用数量,其指示该种子可用作所获得的种子的未来测试数。11.根据权利要求10所述的方法,其中,针对测试种子确定对应重用数量包括:如果软件系统对测试种子的处理涉及感兴趣可调用单元的执行,则将重用数量设置为第一预定值;如果软件系统对测试种子的处理不涉及感兴趣可调用单元的执行但涉及接近感兴趣可调用单元的执行路径,则将重用数量设置为第二预定值;如果软件系统对测试种子的处理不涉及感兴趣可调用单元的执行或接近感兴趣可调用单元...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。