System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及安全测试,尤其涉及一种软件测试方法、装置及计算机存储介质。
技术介绍
1、随着计算机技术和互联网信息技术的发展,各式各样的程序与系统被开发出来,程序的功能也变得越来越丰富。然而,由于开发人员水平参差不齐、开发人员之间沟通不足、架构设计不合理等原因,程序中往往存在着会导致程序崩溃、甚至会受不法分子利用的漏洞。由于程序漏洞总是不可避免地存在,因而,漏洞检测受到广泛关注。
2、目前软件功能越来越复杂,代码量越来越繁杂,普通的安全审计策略不仅低效,而且检测精度难以保证,很难发现藏于深处的漏洞。而模糊测试技术可以弥补这些不足,以覆盖率为指引,自动化的完成测试,极大的提高了检测效率。因此模糊测试技术成为了检测软件漏洞常用的工具。
3、目前,模糊测试技术主要是基于代码覆盖率反馈来指引测试的种子的生成和变异。
4、基于代码覆盖率的模糊测试技术主要是通过提升代码覆盖率来确保检测的广度和深度。代码覆盖率越高,发现漏洞的可能性越大。而软件的代码覆盖率很容易遇到瓶颈,因此,代码覆盖率提升,就能突破瓶颈,从而找出潜藏漏洞。
5、因此,亟需一种提高代码覆盖率的软件测试方法。
6、公开于该
技术介绍
部分的信息仅仅旨在增加对本专利技术的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
技术实现思路
1、本专利技术实施例提供了一种软件测试方法、装置及计算机存储介质,在变异后的种子访问的方法代码
2、第一方面,本专利技术实施例提供了一种软件测试方法,包括:确定软件的待测源码,其中,所述待测源码包括多个方法代码块和多个调用,每个所述方法代码块可被至少一个所述调用访问;对所述待测源码对应的种子池进行n次测试操作,其中,对于所述n次中的第i次的测试操作,所述n为大于等于3的正整数,所述i为大于等于2小于等于n-1的正整数,包括:
3、对所述待测源码对应的种子池进行n次测试操作,其中,对于所述n次中的第i次的测试操作,所述n为大于等于3的正整数,所述i为大于等于2小于等于n-1的正整数,包括:
4、从所述种子池中选择种子,对选择的种子进行变异,得到变异后的种子,其中,所述变异后的种子包括所述多个调用中的至少一个调用;利用所述变异后的种子对所述待测源码进行模糊测试,得到测试结果,其中,所述测试结果包括所述变异后的种子访问的至少一个第一方法代码块的第一访问次数;至少基于所述至少一个第一方法代码块的第二访问次数,确定所述变异后的种子是否加入所述种子池中,其中,每个所述第一方法代码块的第二访问次数为第1次测试操作到当前对所述第一方法代码块的访问次数。
5、本方案中,在变异后的种子访问的方法代码块中存在访问次数较小的方法代码块时,将变异后的种子加入种子池中,从而可以在一定程度上增加对访问次数较小的方法代码块的探测,使得访问次数较小的方法代码块可能会访问未访问过的方法代码块,从而在一定程度上提高待测源码的覆盖率,进而可以增加挖掘待测源码的漏洞的可能性。
6、在一种可能的实现方式中,所述方法还包括:
7、在所述至少一个第一方法代码块包括第i次之前的测试操作中未访问的方法代码块时,将所述变异后的种子加入所述种子池中;在所述至少一个第一方法代码块为第i次之前的测试操作中已访问的方法代码块时,执行至少基于所述至少一个第一方法代码块的第二访问次数,确定所述变异后的种子是否加入所述种子池中。
8、本方案中,首先基于覆盖率进行种子筛选,在覆盖率没有高于之前的覆盖率的情况下,则说明变异后的种子没有访问新的方法代码块,此时无法认定变异后的种子一定是没有探寻价值的,此时,可以考虑测试结果中方法代码块在全局的访问次数,判断变异后的种子是否具有探寻价值,从而综合考虑覆盖率和方法代码块在全局的访问次数,综合判断变异后的种子是否具有探寻价值,从而实现种子筛选。后续,可以在一定程度上增加对访问次数较小的方法代码块的探测,使得访问次数较小的方法代码块可能会访问未访问过的方法代码块,从而在一定程度上提高待测源码的覆盖率,进而可以增加挖掘待测源码的漏洞的可能性。
9、在一种可能的实现方式中,,所述方法还包括:基于从第1次的测试操作开始到当前已得到的各测试结果,得到至少一个第一方法代码块各自对应的第二访问次数。
10、在一种可能的实现方式中,所述基于所述至少一个第二方法代码块的第一访问次数和所述测试结果,确定所述变异后的种子是否加入所述种子池中,包括:
11、至少基于所述至少一个第一方法代码块的第二访问次数,确定所述至少一个第一方法代码块各自对应的第一数值,其中,所述第一数值指示了对应的第一方法代码块被访问的概率;基于所述至少一个第一方法代码块各自对应的第一数值,确定所述变异后的种子是否加入所述种子池中。
12、本方案中,通过筛选出在可以访问被访问的概率较小的方法代码块的变异后的种子,将其加入种子池中,从而可以在一定程度上增加对访问概率较小的方法代码块的探测,使得访问概率较小的方法代码块可能会调用未访问过的方法代码块,从而在一定程度上提高待测源码的覆盖率,进而可以增加挖掘待测源码的漏洞的可能性。
13、在该实现方式的一个例子中,所述多个方法代码块分别作为节点形成有向图,所述有向图中存在访问关系的方法代码块之间通过边连接,所述边的箭头指向被访问的方法代码块。
14、可选地,所述至少基于所述至少一个第一方法代码块的第二访问次数,确定所述至少一个第一方法代码块各自对应的第一数值,包括:
15、基于至少一个第一方法代码块的第二访问次数,所述有向图中所述至少一个第一方法代码块的入度和出度,确定所述至少一个第二方法代码块各自对应的第一数值。
16、本方案中,通过考虑已访问的方法代码块的访问次数、入度和出度,可以较为准确的判断已访问的方法代码块的概率。
17、示例性地,所述第一数值和第二方法代码块被访问的概率之间为反比关系,所述访问次数越多、所述入度越大、所述出度越小,所述第一数值越小。
18、本方案中,方法代码块的入度越大、出度越小、访问次数越多,则该方法代码块被访问的概率越高。
19、可选地,每个所述方法代码块配置有第二数值,所述第二数值指示了所述方法代码块被访问的概率;所述至少基于所述至少一个第一方法代码块的第二访问次数,确定所述至少一个第一方法代码块各自对应的第一数值,包括:
20、基于所述至少一个第二方法代码块的第一访问次数,配置的第二数值,确定所述至少一个第一方法代码块各自对应的第一数值。
21、本方案中,本文档来自技高网...
【技术保护点】
1.一种软件测试方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述至少基于所述至少一个第一方法代码块的第二访问次数,确定所述变异后的种子是否加入所述种子池中,包括:
4.根据权利要求3所述的方法,其特征在于,所述多个方法代码块分别作为节点形成有向图,所述有向图中存在访问关系的方法代码块之间通过边连接,所述边的箭头指向被访问的方法代码块;
5.根据权利要求4所述的方法,其特征在于,所述第一数值和所述第一方法代码块被访问的概率之间为反比关系,所述访问次数越多、所述入度越大、所述出度越小,所述第一数值越小。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
7.根据权利要求3至6任一所述的方法,其特征在于,所述第一数值和所述第一方法代码块被访问的概率之间为反比关系,所述基于所述至少一个第一方法代码块各自对应的第一数值,确定所述变异后的种子是否加入所述种子池中,包括:
8.一种软件测试装置,其特征在于,包括:
>9.一种软件测试装置,其特征在于,包括:
10.一种软件测试装置,其特征在于,所述装置运行计算机程序指令,以执行如权利要求1-7任一所述的方法。
11.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行如权利要求1-7任一所述的方法。
12.一种包含指令的计算机程序产品,其特征在于,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1-7任一所述的方法。
...【技术特征摘要】
1.一种软件测试方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述至少基于所述至少一个第一方法代码块的第二访问次数,确定所述变异后的种子是否加入所述种子池中,包括:
4.根据权利要求3所述的方法,其特征在于,所述多个方法代码块分别作为节点形成有向图,所述有向图中存在访问关系的方法代码块之间通过边连接,所述边的箭头指向被访问的方法代码块;
5.根据权利要求4所述的方法,其特征在于,所述第一数值和所述第一方法代码块被访问的概率之间为反比关系,所述访问次数越多、所述入度越大、所述出度越小,所述第一数值越小。
6.根据权利要求3所述的方法,其特征在于,所述方法还包括:
7.根...
【专利技术属性】
技术研发人员:聂辰峰,崔宝江,宋绪言,黄征阳,骆懿帆,
申请(专利权)人:华为云计算技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。