模糊测试方法、装置、电子设备及存储介质

文档序号:35932312发布日期:2023-11-05 09:59阅读:50来源:国知局
模糊测试方法、装置、电子设备及存储介质与流程

本公开涉及软件测试,尤其涉及一种模糊测试方法、模糊测试装置、电子设备及存储介质。


背景技术:

1、在安卓操作系统中,移动端应用程序是java编写的。然而,出于性能和兼容性考虑,移动端应用程序往往需要调用c/c++编写的本地库,来完成音视频编解码、数据加解密和网络通信等基础功能。移动端应用程序通过jni函数(本地库接口函数)来调用本地库提供的接口函数,从而实现java和c/c++代码之间的相互操作和数据通信。但是,由于java和c/c++的代码语义和设计机制有着较大差异,因此两种语言代码之间的相互操作容易导致问题。因此,检测本地库的缺陷和漏洞,对提升移动端应用程序的可靠性和安全性是十分重要的。

2、相关技术只能测试单个语言编写的程序,且难以有效模拟用户交互操作来全面覆盖jni函数,故无法有效测试移动端本地库并检测其中的缺陷。

3、为了解决上述问题,本公开提供了一种模糊测试方法、模糊测试装置、电子设备及存储介质。


技术实现思路

1、本公开提供一种模糊测试方法、模糊测试装置、电子设备及存储介质,以至少解决相关技术中只能测试单个语言编写的程序,且难以有效模拟用户交互操作来全面覆盖jni函数,故无法有效测试移动端本地库并检测其中的缺陷的问题。本公开的技术方案如下:

2、根据本公开实施例的第一方面,提供一种模糊测试方法,包括:获取应用程序的运行信息,拦截运行过程中的本地库接口函数调用序列,并记录调用序列中本地库接口函数的数据信息;依据所述运行信息和所述数据信息对所述本地库接口函数执行模糊测试,得到所述本地库接口函数的缺陷报告。

3、可选地,在所述拦截应用程序运行过程中的本地库接口函数调用序列之前,所述方法还包括:获取用户操作序列,所述用户操作序列为用户与终端设备的一系列交互操作;依据所述用户操作序列运行应用程序并监控运行过程。

4、可选地,所述获取用户操作序列,包括:确定初始用户操作序列,将所述初始用户操作序列作为当前操作序列,并运行所述应用程序;依据所述当前操作序列在所述应用程序的第一操作界面中点击对应控件,当所述应用程序由所示第一操作界面跳转至第二操作界面时,在所述第二操作界面中随机执行点击操作;收集运行过程所覆盖的所述本地库接口函数及点击操作序列,当运行过程覆盖新的所述本地库接口函数时,将收集到的当前点击操作序列存入种子池;从所述种子池中随机选取一个点击操作序列并进行变异,生成新的点击操作序列,作为新的所述当前操作序列;循环执行所述依据所述当前操作序列在所述应用程序的第一操作界面中点击对应控件至所述从所述种子池中随机选取一个点击操作序列并进行变异,生成新的点击操作序列,作为新的所述当前操作序列,直至达到预设时间;从所述种子池中获取所述点击操作序列作为所述用户操作序列。

5、可选地,所述从所述种子池中随机选取一个点击操作序列并进行变异,生成新的点击操作序列,包括:从所述种子池中随机选取一个点击操作序列,并对该所述点击操作序列执行增加点击操作、删除点击操作及交换点击操作顺序中的一个或多个,生成新的点击操作序列。

6、可选地,所述运行信息包括运行时所覆盖的本地库代码分支;所述依据所述运行信息和所述数据信息对所述本地库接口函数执行模糊测试,得到所述本地库接口函数的缺陷报告,包括:当所述运行信息覆盖新的本地库代码分支时,对所述本地库接口函数调用序列的所述数据信息进行组合,并放入种子池;从所述种子池中随机挑选一个所述本地库接口函数调用序列的数据信息组合并进行变异,生成新的本地库接口函数调用序列数据信息组合,作为当前本地库接口函数调用序列数据信息组合;依据所述当前本地库接口函数调用序列数据信息组合拦截并修改所调用的所述本地库接口函数的数据信息,并对所述本地库接口函数执行模糊测试;循环执行所述获取运行信息,拦截运行过程中的本地库接口函数调用序列,并记录调用序列中本地库接口函数的数据信息至所述依据所述当前本地库接口函数调用序列数据信息组合拦截并修改所调用的所述本地库接口函数的数据信息,并对所述本地库接口函数执行模糊测试,生成所述本地库接口函数的缺陷报告。

7、可选地,所述数据信息包括所述本地库接口函数的函数参数值及返回值;所述从所述种子池中随机挑选一个所述本地库接口函数调用序列的数据信息组合并进行变异,生成新的本地库接口函数调用序列数据信息组合,包括:从所述种子池中随机挑选一个所述本地库接口函数调用序列的数据信息,并修改所述数据信息中的所述函数参数值及返回值,生成新的本地库接口函数调用序列数据信息组合。

8、可选地,所述方法还包括:将生成的多个本地库接口函数调用序列数据信息组合并行输入值多个执行所述应用程序的进程或机器,以并发地对本地库执行模糊测试。

9、根据本公开实施例的第二方面,提供一种模糊测试装置,包括:信息拦截模块,用于获取运行信息,拦截运行过程中的本地库接口函数调用序列,并记录调用序列中本地库接口函数的数据信息;模糊测试模块,用于依据所述运行信息和所述数据信息对所述本地库接口函数执行模糊测试,得到所述本地库接口函数的缺陷报告。

10、可选地,所述模糊测试装置还包括用户操作序列确定模块及运行及监控模块;其中:用户操作序列确定模块,用于获取用户操作序列,所述用户操作序列为用户与终端设备的一系列交互操作;运行及监控模块,用于依据所述用户操作序列运行应用程序并监控运行过程。

11、可选地,所述运行信息包括运行时所覆盖的本地库代码分支;所述模糊测试模块具体用于:当所述运行信息覆盖新的本地库代码分支时,对所述本地库接口函数调用序列的所述数据信息进行组合,并放入种子池;从所述种子池中随机挑选一个所述本地库接口函数调用序列的数据信息组合并进行变异,生成新的本地库接口函数调用序列数据信息组合,作为当前本地库接口函数调用序列数据信息组合;依据所述当前本地库接口函数调用序列数据信息组合拦截并修改所调用的所述本地库接口函数的数据信息,并对所述本地库接口函数执行模糊测试;循环执行所述获取运行信息,拦截运行过程中的本地库接口函数调用序列,并记录调用序列中本地库接口函数的数据信息至所述依据所述当前本地库接口函数调用序列数据信息组合拦截并修改所调用的所述本地库接口函数的数据信息,并对所述本地库接口函数执行模糊测试,生成所述本地库接口函数的缺陷报告。

12、可选地,所述用户操作序列确定模块具体用于:确定初始用户操作序列,将所述初始用户操作序列作为当前操作序列,并运行所述应用程序;依据所述当前操作序列在所述应用程序的第一操作界面中点击对应控件,当所述应用程序由所示第一操作界面跳转至第二操作界面时,在所述第二操作界面中随机执行点击操作;拦截运行过程所覆盖的所述本地库接口函数及点击操作序列,当运行过程覆盖新的所述本地库接口函数时,将拦截到的当前点击操作序列存入种子池;从所述种子池中随机选取一个点击操作序列并进行变异,生成新的点击操作序列,作为新的所述当前操作序列;循环执行所述依据所述当前操作序列在所述应用程序的第一操作界面中点击对应控件至所述从所述种子池中随机选取一个点击操作序列并进行变异,生成新的点击操作序列,作为新的所述当前操作序列,直至达到预设时间;从所述种子池中获取所述点击操作序列作为所述用户操作序列。

13、根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;以及用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现上述任意一项所述的方法。

14、根据本公开实施例的第四方面,提供一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行上述任一项所述的方法。

15、根据本公开实施例的第七方面,提供一种计算机程序产品,所述计算机程序在被处理器执行时实现上述任一项所述的方法。

16、本公开的实施例提供的技术方案至少带来以下有益效果:

17、在本公开实施例提供的模糊测试方法中,获取应用程序的运行信息,拦截运行过程中的本地库接口函数调用序列,并记录调用序列中本地库接口函数的数据信息;依据运行信息和数据信息对本地库接口函数执行模糊测试,得到本地库接口函数的缺陷报告。本公开实施例通过自适应拦截jni(本地库接口函数)调用的数据信息,可以检测本地库代码的鲁棒性,提升缺陷检测的能力,有效检测本地库的代码缺陷和安全漏洞,从而增强移动端应用程序的可靠性和安全性。

18、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1