代码测试方法及装置制造方法及图纸

技术编号:29789332 阅读:17 留言:0更新日期:2021-08-24 18:07
本说明书提供代码测试方法及装置,其中所述代码测试方法包括:按照预设选取规则,从代码池的代码序列中选取目标代码序列,其中,所述代码池根据待测试代码构建得到;通过执行所述目标代码序列,确定所述目标代码序列在所述待测试代码中覆盖的代码位置;在所述代码位置位于已测试位置,并且位于预设目标测试位置的情况下,确定针对所述目标代码序列的目标变更执行策略,其中,所述已测试位置为执行完成的代码序列在所述待测试代码中覆盖的位置;通过基于所述目标变更执行策略对所述目标代码序列进行变更执行的方式,对所述待测试代码进行测试。

【技术实现步骤摘要】
代码测试方法及装置
本说明书涉及软件测试
,特别涉及一种代码测试方法。本说明书同时涉及一种代码测试装置,一种计算设备,以及一种计算机可读存储介质。
技术介绍
目前,系统内核广泛部署应用与云计算领域,负责应用的安全稳定运行,其代码质量必须得到保障,因此,需要有效方式方法对操作系统内核进行缺陷测试。内核模糊测试技术作为一种软件测试技术,被广泛应用于内核的缺陷测试过程中。然而,目前模糊测试单纯以最大化整体内核代码覆盖为测试目标,缺乏对待测目标位置的感知能力与重点测试能力,因此,亟需一种解决上述问题的代码测试方法。
技术实现思路
有鉴于此,本说明书实施例提供了一种代码测试方法。本说明书同时涉及一种代码测试装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。根据本说明书实施例的第一方面,提供了一种代码测试方法,包括:按照预设选取规则,从代码池的代码序列中选取目标代码序列,其中,所述代码池根据待测试代码构建得到;通过执行所述目标代码序列,确定所述目标代码序列在所述待测试代码中覆盖的代码位置;在所述代码位置位于已测试位置,并且位于预设目标测试位置的情况下,确定针对所述目标代码序列的目标变更执行策略,其中,所述已测试位置为执行完成的代码序列在所述待测试代码中覆盖的位置;通过基于所述目标变更执行策略对所述目标代码序列进行变更执行的方式,对所述待测试代码进行测试。根据本说明书实施例的第二方面,提供了一种代码测试装置,包括:选取模块,被配置为按照预设选取规则,从代码池的代码序列中选取目标代码序列,其中,所述代码池根据待测试代码构建得到;确定位置模块,被配置为通过执行所述目标代码序列,确定所述目标代码序列在所述待测试代码中覆盖的代码位置;确定策略模块,被配置为在所述代码位置位于已测试位置,并且位于预设目标测试位置的情况下,确定针对所述目标代码序列的目标变更执行策略,其中,所述已测试位置为执行完成的代码序列在所述待测试代码中覆盖的位置;执行模块,被配置为通过基于所述目标变更执行策略对所述目标代码序列进行变更执行的方式,对所述待测试代码进行测试。根据本说明书实施例的第三方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:按照预设选取规则,从代码池的代码序列中选取目标代码序列,其中,所述代码池根据待测试代码构建得到;通过执行所述目标代码序列,确定所述目标代码序列在所述待测试代码中覆盖的代码位置;在所述代码位置位于已测试位置,并且位于预设目标测试位置的情况下,确定针对所述目标代码序列的目标变更执行策略,其中,所述已测试位置为执行完成的代码序列在所述待测试代码中覆盖的位置;通过基于所述目标变更执行策略对所述目标代码序列进行变更执行的方式,对所述待测试代码进行测试。根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现任意所述代码测试方法的步骤。本说明书提供的代码测试方法,按照预设选取规则,从代码池的代码序列中选取目标代码序列,其中,所述代码池根据待测试代码构建得到;通过执行所述目标代码序列,确定所述目标代码序列在所述待测试代码中覆盖的代码位置;在所述代码位置位于已测试位置,并且位于预设目标测试位置的情况下,确定针对所述目标代码序列的目标变更执行策略,其中,所述已测试位置为执行完成的代码序列在所述待测试代码中覆盖的位置;通过基于所述目标变更执行策略对所述目标代码序列进行变更执行的方式,对所述待测试代码进行测试,实现了针对待测试代码中指定位置(比如需要重点测试的位置)确定针对性的测试策略(目标变更执行策略),并通过针对性的测试策略对目标代码序列进行执行的方式,对待测试代码进行测试,提高了对待测试代码进行测试过程中对代码位置的感知能力,并提高了测试效率以及针对性。附图说明图1是本说明书一实施例提供的一种代码测试方法的示意流程图;图2是本说明书一实施例提供的一种代码测试方法的流程图;图3是本说明书一实施例提供的一种应用于Linux内核测试的代码测试方法的处理流程图;图4是本说明书一实施例提供的一种代码测试装置的结构示意图;图5是本说明书一实施例提供的一种计算设备的结构框图。具体实施方式在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。首先,对本说明书一个或多个实施例涉及的名词术语进行解释。Linux:是一个一体化内核(MonolithicKernel)系统。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux。设备驱动程序可以完全访问硬件。Linux内的设备驱动程序可以方便地以模块化(modularize)的形式设置,并在系统运行期间可直接装载或卸载。FreeBSD:是一种类UNIX操作系统。系统调用:就是程序进入内核执行任务。程序使用系统调用执行一系列的操作诸如:创建进程,网络和文件I/O等等。内核:是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。现代操作系统设计中,为减少系统本身的开销,往往将一些与硬件紧密相关的(如中断处理程序、设备驱动程序等)、基本的、公共的、运行频率较高的模块(如时钟管理、进程调度等)以及关键性数据结构独立开来,使之常驻内存,并对他们进行保护。通常把这一部分称之为操作系统的内核。模糊测试(Fuzzing),是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏本文档来自技高网...

【技术保护点】
1.一种代码测试方法,包括:/n按照预设选取规则,从代码池的代码序列中选取目标代码序列,其中,所述代码池根据待测试代码构建得到;/n通过执行所述目标代码序列,确定所述目标代码序列在所述待测试代码中覆盖的代码位置;/n在所述代码位置位于已测试位置,并且位于预设目标测试位置的情况下,确定针对所述目标代码序列的目标变更执行策略,其中,所述已测试位置为执行完成的代码序列在所述待测试代码中覆盖的位置;/n通过基于所述目标变更执行策略对所述目标代码序列进行变更执行的方式,对所述待测试代码进行测试。/n

【技术特征摘要】
1.一种代码测试方法,包括:
按照预设选取规则,从代码池的代码序列中选取目标代码序列,其中,所述代码池根据待测试代码构建得到;
通过执行所述目标代码序列,确定所述目标代码序列在所述待测试代码中覆盖的代码位置;
在所述代码位置位于已测试位置,并且位于预设目标测试位置的情况下,确定针对所述目标代码序列的目标变更执行策略,其中,所述已测试位置为执行完成的代码序列在所述待测试代码中覆盖的位置;
通过基于所述目标变更执行策略对所述目标代码序列进行变更执行的方式,对所述待测试代码进行测试。


2.根据权利要求1所述的代码测试方法,所述确定针对所述目标代码序列的目标变更执行策略,包括:
确定对所述目标代码序列进行变更的目标变更类型以及目标变更执行次数;
将所述目标变更类型以及所述目标变更执行次数,作为所述目标变更执行策略。


3.根据权利要求2所述的代码测试方法,所述确定对所述目标代码序列进行变更的目标变更类型以及目标变更执行次数,包括:
确定所述目标优先级对应的变更次数算法以及所述目标代码序列的目标变更类型;
基于所述变更次数算法以及所述代码位置,确定所述目标变更执行次数。


4.根据权利要求1所述的代码测试方法,所述确定针对所述目标代码序列的目标变更执行策略,包括:
确定所述目标代码序列对应的执行优先级为目标优先级;
基于所述目标优先级,确定对所述目标代码序列进行变更的目标变更类型以及目标变更执行次数;
将所述目标优先级、所述目标变更类型以及所述目标变更执行次数,作为所述目标变更执行策略。


5.根据权利要求4所述的代码测试方法,所述基于所述目标优先级,确定对所述目标代码序列进行变更的目标变更类型以及目标变更执行次数,包括:
基于所述目标优先级,确定所述目标优先级对应的变更次数算法以及所述目标代码序列的目标变更类型;
基于所述变更次数算法以及所述代码位置,确定所述目标变更执行次数。


6.根据权利要求4所述的代码测试方法,所述基于所述目标变更执行策略对所述目标代码序列进行变更执行,包括:
将所述目标代码序列添加至所述目标优先级对应的目标优先级队列;
按照每个优先级队列对应的优先级从高到低的顺序,从所述每个优先级队列获取待执行的代码序列,其中所述优先级队列包括:目标优先级队列,所述待执行的代码序列包括:目标代码序列;
在获取的待执行的代码序列为目标代码序列的基础上,根据所述目标变更类型以及所述目标变更执行次数,确定每次对所述目标代码序列进行变更的变更操作;
基于所述变更操作,对所述目标代码序列进行变更,并执行变更后的目标代码序。


7.根据权利要求1所述的代码测试方法,所述确定所述目标代码序列在所述待测试代码中覆盖的代码位置之后,还包括:
在所述代码位置非位于所述已测试位置的情况下,确定所述目标代码序列对应的执行优先级为第一优先级;
基于所述第一优先级,确定对所述目标代码序列进行变更的第一变更类型以及第一变更执行次数;
通过基于所述第一优先级、所述第一变更类型以及所述第一变更执行次数,对所述目标代码序列进行变更执行的方式,对所述待测...

【专利技术属性】
技术研发人员:施鹤远王润哲
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1