System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,特别是涉及一种应用程序测试方法、装置、计算机设备、存储介质和计算机程序产品。
技术介绍
1、随着计算机技术的发展,出现了一种针对于anr,即应用程序无响应的测试方法,该anr指的是在应用程序未按预期响应ui的进程,系统则默认会弹出“应用无响应”的弹窗,来让用户选择继续等待响应或者关闭app。目前主要有以下两种情况造成anr,即主线程在处理其他事件导致的当前事件没机会处理,或者当前事件正被处理但耗时太长无法完成两种。
2、传统技术中,对anr问题的测试通常是通过稳定性测试工具来实现,该工具可以通过不间断的持续运行应用程序进行随机测试,来发现anr问题。然而,上述测试方法随机性较大,耗时较长,无法覆盖所有场景,并且相同场景下处理事件的线程也往往是随机的,稳定性测试工具不一定能发现,因此,目前对应用程序的anr问题进行测试的方法测试效率较低,并且测试精度也较低。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够提高对应用程序的anr问题的测试效率与测试精度的应用程序测试方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
2、第一方面,本申请提供了一种应用程序测试方法,包括:
3、获取待测试应用程序的业务代码,以及获取所述业务代码中包含的操作函数与各所述操作函数对应的函数链路关系信息;
4、从各所述操作函数中,获取耗时类操作函数;所述耗时类操作函数执行的操作耗时大于预设时长;
5、根据所述
6、根据各所述链路底端函数,获取所述待测试应用程序的anr测试结果。
7、在其中一个实施例中,所述函数链路关系信息通过函数链路文件进行存储;所述根据所述耗时类操作函数对应的函数链路关系信息,获取各所述耗时类操作函数对应的链路底端函数,包括:将各所述耗时类操作函数作为链路顶端函数,并利用所述函数链路文件中存储的函数链路关系信息,生成各所述耗时类操作函数对应的调用关系链;将各所述耗时类操作函数对应的调用关系链中的链路底端函数,作为各所述耗时类操作函数对应的链路底端函数。
8、在其中一个实施例中, 所述利用所述函数链路文件中存储的函数链路关系信息,生成各所述耗时类操作函数对应的调用关系链,包括:将所述链路顶端函数作为被调用函数,从所述函数链路文件中,获取与被调用函数存在函数调用关系的调用函数;将所述调用函数作为新的被调用函数,并返回执行从所述函数链路文件中,获取与被调用函数存在函数调用关系的调用函数的步骤,直到所述函数链路文件中不存在与所述被调用函数存在函数调用关系的调用函数;利用所述耗时类操作函数,以及各所述调用函数,生成所述耗时类操作函数对应的调用关系链。
9、在其中一个实施例中,所述函数链路文件包括:用于存储各所述操作函数的直接调用关系的第一函数链路文件;所述获取所述业务代码中包含的操作函数与各所述操作函数对应的函数链路关系信息,包括:获取各所述操作函数对应的直接调用函数,以及各所述操作函数对应的函数类名、函数名以及函数参数;获取各所述直接调用函数对应的函数类名、函数名以及函数参数;利用各所述操作函数对应的函数类名、函数名以及函数参数,与各所述直接调用函数对应的函数类名、函数名以及函数参数,构造操作函数的直接调用关系,形成第一函数链路文件。
10、在其中一个实施例中,所述函数链路文件还包括:用于存储父类函数或接口函数,与所述父类函数或接口函数对应的重写函数之间关系的第二函数链路文件;所述获取所述业务代码中包含的操作函数与各所述操作函数对应的函数链路关系信息,包括:获取各所述操作函数对应的父类类名信息与接口类名信息,根据所述父类类名信息获取各所述操作函数对应的父类函数,以及根据所述接口类名信息获取各所述操作函数对应的接口函数;在所述第一函数链路文件中包含所述父类函数的情况下,将所述父类函数对应的操作函数作为第一重写函数,并利用所述父类函数对应的函数类名、函数名以及函数参数,与对应的第一重写函数的函数类名、函数名以及函数参数,构造所述父类函数与所述第一重写函数的关系;在所述第一函数链路文件中包含所述接口函数的情况下,将所述接口函数对应的操作函数作为第二重写函数,并利用所述接口函数对应的函数类名、函数名以及函数参数,与对应的第二重写函数的函数类名、函数名以及函数参数,构造所述接口函数与所述第二重写函数的关系;利用构造的所述父类函数与所述第一重写函数的关系,以及所述接口函数与所述第二重写函数的关系,形成第二函数链路文件。
11、在其中一个实施例中,所述从各所述操作函数中,获取耗时类操作函数,包括:获取预先构建的包含有全量耗时类操作函数的耗时类操作函数文件;在所述耗时类操作函数文件中包括所述业务代码中包含的操作函数的情况下,将所述操作函数作为所述耗时类操作函数。
12、在其中一个实施例中,所述获取预先构建的包含有全量耗时类操作函数的耗时类操作函数文件之前,还包括:获取当前操作函数,以及所述当前操作函数执行操作的操作类型;所述当前操作函数为任意一个操作函数;在所述操作类型为预设操作类型的情况下,将所述当前操作函数设置为耗时类操作函数,并获取所述当前操作函数对应的函数类名、函数名以及函数参数;利用所述函数类名、函数名以及所述函数参数,构建所述耗时类操作函数文件。
13、在其中一个实施例中,所述在所述耗时类操作函数文件中包括所述业务代码中包含的操作函数的情况下,将所述操作函数作为所述耗时类操作函数,包括:获取所述业务代码中包含的各所述操作函数对应的函数类名、函数名以及所述函数参数;在所述耗时类操作函数文件中包括所述操作函数对应的函数类名、函数名以及所述函数参数的情况下,将所述操作函数作为所述耗时类操作函数。
14、在其中一个实施例中,所述根据各所述链路底端函数,获取所述待测试应用程序的anr测试结果,包括:获取预先构建的主线程函数白名单;所述主线程函数白名单中存储有多种在主线程中运行的函数;在所述主线程函数白名单中存在与所述链路底端函数相匹配的函数的情况下,确定所述待测试应用程序中包含的,与所述链路底端函数对应的耗时类操作函数存在anr风险。
15、第二方面,本申请还提供了一种应用程序测试装置,包括:
16、函数关系获取模块,用于获取待测试应用程序的业务代码,以及获取所述业务代码中包含的操作函数与各所述操作函数对应的函数链路关系信息;
17、耗时函数获取模块,用于从各所述操作函数中,获取耗时类操作函数;所述耗时类操作函数执行的操作耗时大于预设时长;
18、链路底端获取模块,用于根据所述耗时类操作函数对应的函数链路关系信息,获取各所述耗时类操作函数对应的链路底端函数;
19、测试结果获取模块,用于根据各所述链路底端函数,获取所述待测试应用程序的anr测试结果。
20、第三方面,本申请还提供了本文档来自技高网...
【技术保护点】
1.一种应用程序测试方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述函数链路关系信息通过函数链路文件进行存储;所述根据所述耗时类操作函数对应的函数链路关系信息,获取各所述耗时类操作函数对应的链路底端函数,包括:
3.根据权利要求2所述的方法,其特征在于,所述利用所述函数链路文件中存储的函数链路关系信息,生成各所述耗时类操作函数对应的调用关系链,包括:
4.根据权利要求2所述的方法,其特征在于,所述函数链路文件包括:用于存储各所述操作函数的直接调用关系的第一函数链路文件;
5.根据权利要求4所述的方法,其特征在于,所述函数链路文件还包括:用于存储父类函数或接口函数,与所述父类函数或接口函数对应的重写函数之间关系的第二函数链路文件;
6.根据权利要求1所述的方法,其特征在于,所述从各所述操作函数中,获取耗时类操作函数,包括:
7.根据权利要求6所述的方法,其特征在于,所述获取预先构建的包含有全量耗时类操作函数的耗时类操作函数文件之前,还包括:
8.根据权利要求7所述的方
9.根据权利要求1至8任一项所述的方法,其特征在于,所述根据各所述链路底端函数,获取所述待测试应用程序的ANR测试结果,包括:
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至9中任一项所述的方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9中任一项所述的方法的步骤。
...【技术特征摘要】
1.一种应用程序测试方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述函数链路关系信息通过函数链路文件进行存储;所述根据所述耗时类操作函数对应的函数链路关系信息,获取各所述耗时类操作函数对应的链路底端函数,包括:
3.根据权利要求2所述的方法,其特征在于,所述利用所述函数链路文件中存储的函数链路关系信息,生成各所述耗时类操作函数对应的调用关系链,包括:
4.根据权利要求2所述的方法,其特征在于,所述函数链路文件包括:用于存储各所述操作函数的直接调用关系的第一函数链路文件;
5.根据权利要求4所述的方法,其特征在于,所述函数链路文件还包括:用于存储父类函数或接口函数,与所述父类函数或接口函数对应的重写函数之间关系的第二函数链路文件;
6.根据权利要求1所述的方法,其特征在于,所述从各所述操作函数中...
【专利技术属性】
技术研发人员:吴柳,
申请(专利权)人:腾讯音乐娱乐科技深圳有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。