界面更新崩溃风险检测方法、装置、电子设备及存储介质制造方法及图纸

技术编号:28672956 阅读:13 留言:0更新日期:2021-06-02 02:48
本申请公开了一种界面更新崩溃风险检测方法、装置、设备及计算机可读存储介质,该方法包括:获取待测项目代码,并对待测项目代码进行界面更新函数检测,得到目标界面更新函数;基于目标界面更新函数,生成待测项目代码对应的函数调用关系信息;将各个目标界面更新函数作为第一端函数,利用函数调用关系信息构建多个函数链,并识别各个函数链对应的第二端函数;若任一第二端函数为非主线程函数,则确定非主线程函数所属的目标函数链具有界面更新崩溃风险;该方法采用静态测试的方式,可以准确且全面地识别待测项目代码存在的UI更新crash,可以覆盖全部检测场景,检测效果较好;且不需要进行随机检测,因此检测时长较短,检测效率较高。

【技术实现步骤摘要】
界面更新崩溃风险检测方法、装置、电子设备及存储介质
本申请涉及软件测试
,特别涉及一种界面更新崩溃风险检测方法、界面更新崩溃风险检测装置、电子设备及计算机可读存储介质。
技术介绍
界面更新奔溃也可以称为UI(UserInterface,用户界面)更新crash(即崩溃),是一种由子线程对UI进行更新导致的软件错误。更新UI的线程是否为主线程往往会随着程序的运行而改变,不确定性高,为了防止出现UI更新crash,通常在程序测试过程进行界面更新崩溃风险测试。相关技术通常采用monkey等测试工具生成并发送伪随机的用户事件流,进行动态测试,以便发现UI更新crash。然而,相关技术无法完全覆盖各种检测场景,检测效果较差;且需要的检测时间较长,检测效率较低。
技术实现思路
有鉴于此,本申请的目的在于提供一种界面更新崩溃风险检测方法、界面更新崩溃风险检测装置、电子设备及计算机可读存储介质,通过构建函数链并检测函数链的起始函数是否为非主线程函数,可以准确且全面地检测待测项目代码是否存在UI更新crash风险,检测能力和效率较高。为解决上述技术问题,第一方面,本申请提供了一种界面更新崩溃风险检测方法,包括:获取待测项目代码,并对所述待测项目代码进行界面更新函数检测,得到目标界面更新函数;生成所述待测项目代码对应的函数调用关系信息;将各个所述目标界面更新函数作为第一端函数,利用所述函数调用关系信息构建多个函数链,并识别各个所述函数链对应的第二端函数;若任一所述第二端函数为非主线程函数,则确定所述非主线程函数所属的目标函数链具有界面更新崩溃风险。在一种可行的实施方式中,所述将各个所述目标界面更新函数作为第一端函数,利用所述函数调用关系信息构建多个函数链,并识别各个所述函数链对应的第二端函数,包括:利用所述函数调用关系信息确定各个所述目标界面更新函数对应的直接调用函数;将所述直接调用函数确定为被调函数,并利用所述函数调用关系信息判断是否存在所述被调函数对应的上级函数;若存在所述上级函数,则将所述上级函数确定为所述被调函数;若不存在所述上级函数,则确定所述函数链构建完毕,并将所述被调函数确定为所述第二端函数。在一种可行的实施方式中,所述若不存在所述上级函数,则确定所述函数链构建完毕,包括:若不存在所述上级函数,则利用所述函数调用关系信息判断所述被调函数是否存在对应的目标父类函数或目标接口函数;若存在所述目标父类函数或所述目标接口函数,则将所述目标父类函数或所述目标接口函数确定为所述被调函数;若不存在所述目标父类函数或所述目标接口函数,则确定所述函数链构建完毕。在一种可行的实施方式中,在对所述待测项目代码进行界面更新函数检测之前,还包括:利用界面更新基础函数筛选各个函数,并将调用了所述界面更新基础函数的所述函数确定为界面更新函数;利用所述界面更新函数对应的函数名生成界面更新函数检测数据;相应的,所述对所述待测项目代码进行界面更新函数检测,得到目标界面更新函数,包括:利用所述界面更新函数检测数据对所述待测项目代码中的各个待测函数进行函数名匹配;将通过函数名匹配的待测函数确定为所述目标界面更新函数。在一种可行的实施方式中,所述生成所述待测项目代码对应的函数调用关系信息,包括:获取检测插件和对应的检测插件信息;将所述检测插件信息添加到所述待测项目代码中并编译,在编译过程中调用所述检测插件,得到所述函数调用关系信息。在一种可行的实施方式中,还包括:利用所述目标函数链生成检测结果;获取所述待测项目代码对应的执行人信息,并利用所述执行人信息反馈所述检测结果。在一种可行的实施方式中,还包括:获取无调用函数信息,并将所述待测项目代码中所述无调用函数信息对应的函数标记为无调用函数;相应的,所述若任一所述第二端函数为非主线程函数,则确定所述非主线程函数所属的目标函数链具有界面更新崩溃风险,包括:若任一所述第二端函数为非主线程函数,则判断所述非主线程函数是否为所述无调用函数;若任一所述非主线程函数不为所述无调用函数,则确定所述目标函数链具有所述界面更新崩溃风险。第二方面,本申请还提供了一种界面更新崩溃风险检测装置,包括:更新函数检测模块,用于获取待测项目代码,并对所述待测项目代码进行界面更新函数检测,得到目标界面更新函数;函数调用关系信息生成模块,用于生成所述待测项目代码对应的函数调用关系信息;函数链构建模块,用于将各个所述目标界面更新函数作为第一端函数,利用所述函数调用关系信息构建多个函数链,并识别各个所述函数链对应的第二端函数;风险检出模块,用于若任一所述第二端函数为非主线程函数,则确定所述非主线程函数所属的目标函数链具有界面更新崩溃风险。第三方面,本申请还提供了一种电子设备,包括存储器和处理器,其中:所述存储器,用于保存计算机程序;所述处理器,用于执行所述计算机程序,以实现上述的界面更新崩溃风险检测方法。第四方面,本申请还提供了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现上述的界面更新崩溃风险检测方法。本申请提供的界面更新崩溃风险检测方法,获取待测项目代码,并对待测项目代码进行界面更新函数检测,得到目标界面更新函数;基于目标界面更新函数,生成待测项目代码对应的函数调用关系信息;将各个目标界面更新函数作为第一端函数,利用函数调用关系信息构建多个函数链,并识别各个函数链对应的第二端函数;若任一第二端函数为非主线程函数,则确定非主线程函数所属的目标函数链具有界面更新崩溃风险。可见,该方法在对待测项目代码进行测试时,先识别其中的目标界面更新函数,目标界面更新函数为待测项目代码中会引起UI更新的函数。在得到目标界面更新函数后,基于其生成函数调用关系信息。函数调用关系信息记录了待测项目代码中所有函数之间存在的调用关系,因此其可以用于筛选得到待测项目代码中与目标界面更新函数相关的各个函数之间的调用关系。将目标界面更新函数作为第一端函数,则函数链另一端对应的函数即为第二端函数。若第二端函数为非主线程函数,则说明第二端函数并不是仅能由主线程调用的函数,其可能由子线程调用,而子线程调用该第二端函数则会导致子线程对UI进行更新,因此存在UI更新crash风险,即确定其所属的目标函数链具有界面更新崩溃风险。该方法采用静态测试的方式,可以准确且全面地识别待测项目代码存在的UI更新crash,可以覆盖全部检测场景,检测效果较好。且不需要进行随机检测,因此检测时长较短,检测效率较高,解决了相关技术存在的测试效果较差、测试效率较低的问题。此外,本申请还提供了一种界面更新崩溃风险检测装置、电子设备及计算机可读存储介质,同样具有上述有益效果。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案本文档来自技高网...

【技术保护点】
1.一种界面更新崩溃风险检测方法,其特征在于,包括:/n获取待测项目代码,并对所述待测项目代码进行界面更新函数检测,得到目标界面更新函数;/n生成所述待测项目代码对应的函数调用关系信息;/n将各个所述目标界面更新函数作为第一端函数,利用所述函数调用关系信息构建多个函数链,并识别各个所述函数链对应的第二端函数;/n若任一所述第二端函数为非主线程函数,则确定所述非主线程函数所属的目标函数链具有界面更新崩溃风险。/n

【技术特征摘要】
1.一种界面更新崩溃风险检测方法,其特征在于,包括:
获取待测项目代码,并对所述待测项目代码进行界面更新函数检测,得到目标界面更新函数;
生成所述待测项目代码对应的函数调用关系信息;
将各个所述目标界面更新函数作为第一端函数,利用所述函数调用关系信息构建多个函数链,并识别各个所述函数链对应的第二端函数;
若任一所述第二端函数为非主线程函数,则确定所述非主线程函数所属的目标函数链具有界面更新崩溃风险。


2.根据权利要求1所述的界面更新崩溃风险检测方法,其特征在于,所述将各个所述目标界面更新函数作为第一端函数,利用所述函数调用关系信息构建多个函数链,并识别各个所述函数链对应的第二端函数,包括:
利用所述函数调用关系信息确定各个所述目标界面更新函数对应的直接调用函数;
将所述直接调用函数确定为被调函数,并利用所述函数调用关系信息判断是否存在所述被调函数对应的上级函数;
若存在所述上级函数,则将所述上级函数确定为所述被调函数;
若不存在所述上级函数,则确定所述函数链构建完毕,并将所述被调函数确定为所述第二端函数。


3.根据权利要求2所述的界面更新崩溃风险检测方法,其特征在于,所述若不存在所述上级函数,则确定所述函数链构建完毕,包括:
若不存在所述上级函数,则利用所述函数调用关系信息判断所述被调函数是否存在对应的目标父类函数或目标接口函数;
若存在所述目标父类函数或所述目标接口函数,则将所述目标父类函数或所述目标接口函数确定为所述被调函数;
若不存在所述目标父类函数或所述目标接口函数,则确定所述函数链构建完毕。


4.根据权利要求1所述的界面更新崩溃风险检测方法,其特征在于,在对所述待测项目代码进行界面更新函数检测之前,还包括:
利用界面更新基础函数筛选各个函数,并将调用了所述界面更新基础函数的所述函数确定为界面更新函数;
利用所述界面更新函数对应的函数名生成界面更新函数检测数据;
相应的,所述对所述待测项目代码进行界面更新函数检测,得到目标界面更新函数,包括:
利用所述界面更新函数检测数据对所述待测项目代码中的各个待测函数进行函数名匹配;
将通过函数名匹配的待测函数确定为所述目标界面更...

【专利技术属性】
技术研发人员:吴柳
申请(专利权)人:腾讯音乐娱乐科技深圳有限公司
类型:发明
国别省市:广东;44

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

1