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

技术编号:39297466 阅读:12 留言:0更新日期:2023-11-07 11:05
本公开关于一种模糊测试方法、装置、电子设备及存储介质,涉及软件测试技术领域。所述方法包括:获取应用程序的运行信息,拦截运行过程中的本地库接口函数调用序列,并记录调用序列中本地库接口函数的数据信息;依据所述运行信息和所述数据信息对所述本地库接口函数执行模糊测试,得到所述本地库接口函数的缺陷报告。本公开通过自适应地拦截本地库接口函数,提升本地库代码的测试覆盖度,可以有效检测本地库的代码缺陷和安全漏洞,从而增强移动端应用程序的可靠性和安全性。端应用程序的可靠性和安全性。端应用程序的可靠性和安全性。

【技术实现步骤摘要】
模糊测试方法、装置、电子设备及存储介质


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

技术介绍

[0002]在安卓操作系统中,移动端应用程序是Java编写的。然而,出于性能和兼容性考虑,移动端应用程序往往需要调用C/C++编写的本地库,来完成音视频编解码、数据加解密和网络通信等基础功能。移动端应用程序通过JNI函数(本地库接口函数)来调用本地库提供的接口函数,从而实现Java和C/C++代码之间的相互操作和数据通信。但是,由于Java和C/C++的代码语义和设计机制有着较大差异,因此两种语言代码之间的相互操作容易导致问题。因此,检测本地库的缺陷和漏洞,对提升移动端应用程序的可靠性和安全性是十分重要的。
[0003]相关技术只能测试单个语言编写的程序,且难以有效模拟用户交互操作来全面覆盖JNI函数,故无法有效测试移动端本地库并检测其中的缺陷。
[0004]为了解决上述问题,本公开提供了一种模糊测试方法、模糊测试装置、电子设备及存储介质。

技术实现思路

[0005]本公开提供一种模糊测试方法、模糊测试装置、电子设备及存储介质,以至少解决相关技术中只能测试单个语言编写的程序,且难以有效模拟用户交互操作来全面覆盖JNI函数,故无法有效测试移动端本地库并检测其中的缺陷的问题。本公开的技术方案如下:
[0006]根据本公开实施例的第一方面,提供一种模糊测试方法,包括:获取应用程序的运行信息,拦截运行过程中的本地库接口函数调用序列,并记录调用序列中本地库接口函数的数据信息;依据所述运行信息和所述数据信息对所述本地库接口函数执行模糊测试,得到所述本地库接口函数的缺陷报告。
[0007]可选地,在所述拦截应用程序运行过程中的本地库接口函数调用序列之前,所述方法还包括:获取用户操作序列,所述用户操作序列为用户与终端设备的一系列交互操作;依据所述用户操作序列运行应用程序并监控运行过程。
[0008]可选地,所述获取用户操作序列,包括:确定初始用户操作序列,将所述初始用户操作序列作为当前操作序列,并运行所述应用程序;依据所述当前操作序列在所述应用程序的第一操作界面中点击对应控件,当所述应用程序由所示第一操作界面跳转至第二操作界面时,在所述第二操作界面中随机执行点击操作;收集运行过程所覆盖的所述本地库接口函数及点击操作序列,当运行过程覆盖新的所述本地库接口函数时,将收集到的当前点击操作序列存入种子池;从所述种子池中随机选取一个点击操作序列并进行变异,生成新的点击操作序列,作为新的所述当前操作序列;循环执行所述依据所述当前操作序列在所述应用程序的第一操作界面中点击对应控件至所述从所述种子池中随机选取一个点击操
作序列并进行变异,生成新的点击操作序列,作为新的所述当前操作序列,直至达到预设时间;从所述种子池中获取所述点击操作序列作为所述用户操作序列。
[0009]可选地,所述从所述种子池中随机选取一个点击操作序列并进行变异,生成新的点击操作序列,包括:从所述种子池中随机选取一个点击操作序列,并对该所述点击操作序列执行增加点击操作、删除点击操作及交换点击操作顺序中的一个或多个,生成新的点击操作序列。
[0010]可选地,所述运行信息包括运行时所覆盖的本地库代码分支;所述依据所述运行信息和所述数据信息对所述本地库接口函数执行模糊测试,得到所述本地库接口函数的缺陷报告,包括:当所述运行信息覆盖新的本地库代码分支时,对所述本地库接口函数调用序列的所述数据信息进行组合,并放入种子池;从所述种子池中随机挑选一个所述本地库接口函数调用序列的数据信息组合并进行变异,生成新的本地库接口函数调用序列数据信息组合,作为当前本地库接口函数调用序列数据信息组合;依据所述当前本地库接口函数调用序列数据信息组合拦截并修改所调用的所述本地库接口函数的数据信息,并对所述本地库接口函数执行模糊测试;循环执行所述获取运行信息,拦截运行过程中的本地库接口函数调用序列,并记录调用序列中本地库接口函数的数据信息至所述依据所述当前本地库接口函数调用序列数据信息组合拦截并修改所调用的所述本地库接口函数的数据信息,并对所述本地库接口函数执行模糊测试,生成所述本地库接口函数的缺陷报告。
[0011]可选地,所述数据信息包括所述本地库接口函数的函数参数值及返回值;所述从所述种子池中随机挑选一个所述本地库接口函数调用序列的数据信息组合并进行变异,生成新的本地库接口函数调用序列数据信息组合,包括:从所述种子池中随机挑选一个所述本地库接口函数调用序列的数据信息,并修改所述数据信息中的所述函数参数值及返回值,生成新的本地库接口函数调用序列数据信息组合。
[0012]可选地,所述方法还包括:将生成的多个本地库接口函数调用序列数据信息组合并行输入值多个执行所述应用程序的进程或机器,以并发地对本地库执行模糊测试。
[0013]根据本公开实施例的第二方面,提供一种模糊测试装置,包括:信息拦截模块,用于获取运行信息,拦截运行过程中的本地库接口函数调用序列,并记录调用序列中本地库接口函数的数据信息;模糊测试模块,用于依据所述运行信息和所述数据信息对所述本地库接口函数执行模糊测试,得到所述本地库接口函数的缺陷报告。
[0014]可选地,所述模糊测试装置还包括用户操作序列确定模块及运行及监控模块;其中:用户操作序列确定模块,用于获取用户操作序列,所述用户操作序列为用户与终端设备的一系列交互操作;运行及监控模块,用于依据所述用户操作序列运行应用程序并监控运行过程。
[0015]可选地,所述运行信息包括运行时所覆盖的本地库代码分支;所述模糊测试模块具体用于:当所述运行信息覆盖新的本地库代码分支时,对所述本地库接口函数调用序列的所述数据信息进行组合,并放入种子池;从所述种子池中随机挑选一个所述本地库接口函数调用序列的数据信息组合并进行变异,生成新的本地库接口函数调用序列数据信息组合,作为当前本地库接口函数调用序列数据信息组合;依据所述当前本地库接口函数调用序列数据信息组合拦截并修改所调用的所述本地库接口函数的数据信息,并对所述本地库接口函数执行模糊测试;循环执行所述获取运行信息,拦截运行过程中的本地库接口函数
调用序列,并记录调用序列中本地库接口函数的数据信息至所述依据所述当前本地库接口函数调用序列数据信息组合拦截并修改所调用的所述本地库接口函数的数据信息,并对所述本地库接口函数执行模糊测试,生成所述本地库接口函数的缺陷报告。
[0016]可选地,所述用户操作序列确定模块具体用于:确定初始用户操作序列,将所述初始用户操作序列作为当前操作序列,并运行所述应用程序;依据所述当前操作序列在所述应用程序的第一操作界面中点击对应控件,当所述应用程序由所示第一操作界面跳转至第二操作界面时,在所述第二操作界面中随机执行点击操作;拦截运行过程所覆盖的所述本地库接口函数及点击操作序列,当运行过程覆盖新的所述本地库接口函数时,将拦截到的当前点击操作序列存入种子池;从所述种子池中随机选取一个点本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种模糊测试方法,其特征在于,包括:获取应用程序的运行信息,拦截运行过程中的本地库接口函数调用序列,并记录调用序列中本地库接口函数的数据信息;依据所述运行信息和所述数据信息对所述本地库接口函数执行模糊测试,得到所述本地库接口函数的缺陷报告。2.根据权利要求1所述的模糊测试方法,其特征在于,在所述拦截应用程序运行过程中的本地库接口函数调用序列之前,所述方法还包括:获取用户操作序列,所述用户操作序列为用户与终端设备的一系列交互操作;依据所述用户操作序列运行应用程序并监控运行过程。3.根据权利要求2所述的模糊测试方法,其特征在于,所述获取用户操作序列,包括:确定初始用户操作序列,将所述初始用户操作序列作为当前操作序列,并运行所述应用程序;依据所述当前操作序列在所述应用程序的第一操作界面中点击对应控件,当所述应用程序由所示第一操作界面跳转至第二操作界面时,在所述第二操作界面中随机执行点击操作;收集运行过程所覆盖的所述本地库接口函数及点击操作序列,当运行过程覆盖新的所述本地库接口函数时,将收集到的当前点击操作序列存入种子池;从所述种子池中随机选取一个点击操作序列并进行变异,生成新的点击操作序列,作为新的所述当前操作序列;循环执行所述依据所述当前操作序列在所述应用程序的第一操作界面中点击对应控件至所述从所述种子池中随机选取一个点击操作序列并进行变异,生成新的点击操作序列,作为新的所述当前操作序列,直至达到预设时间;从所述种子池中获取所述点击操作序列作为所述用户操作序列。4.根据权利要求3所述的模糊测试方法,其特征在于,所述从所述种子池中随机选取一个点击操作序列并进行变异,生成新的点击操作序列,包括:从所述种子池中随机选取一个点击操作序列,并对该所述点击操作序列执行增加点击操作、删除点击操作及交换点击操作顺序中的一个或多个,生成新的点击操作序列。5.根据权利要求1所述的模糊测试方式,其特征在于,所述运行信息包括运行时所覆盖的本地库代码分支;所述依据所述运行信息和所述数据信息对所述本地库接口函数执行模糊测试,得到所述本地库接口函数的缺陷报告,包括:当所述运行信息覆盖新的本地库代码分支时,对所述本地库接口函数调用序列的所述数据信息进行组合,并放入种子池;从所述种子池中随机挑选一个所述本地库接口函数调用序列的数据信息组合并进行变异,生成新的本地库接口函数调用序列数据信息组合,作为当前本地库接口函数调用序列数据信息组合;依据所述当前本地库接口函数调用序列数据信息组合拦截并修改所调用的所述本地库接口函数的数据信息,并对所述本地库接口函数执行模糊测试;循环执行所述获取运行信息,拦截运行过程中的本地库接口函数调用序列,并记录调
用序列中本地库接口函数的数据信息至所述依据所述当前本地库接口函数调用序列数据信息组合拦截并修改所调用的所述本地库接口函数的数据信息,并对所述本地库接口函数执行模糊测试,生成所述本地库接口函数的缺陷报告。6.根据权利要求5所述的模糊测试方法,其特征在于,所述数据信息包括所述本地库接口函数的函数参数值及返回值;所述从所述种子池中随机挑选一个所述本地库接口函数调用序列的数据信息组合并进行变异,生成新的本地库接口函数调用序列数据信息组合,包括:从所述种子池中随机挑选一个所述本地库接口函数调用序列的数据信息,...

【专利技术属性】
技术研发人员:白家驹温瀚翔李钦夏天睿孟令昊游旺张皓天
申请(专利权)人:北京达佳互联信息技术有限公司
类型:发明
国别省市:

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

1