CN111797016B - 应用程序的测试方法、设备、存储介质及装置 - Google Patents
应用程序的测试方法、设备、存储介质及装置 Download PDFInfo
- Publication number
- CN111797016B CN111797016B CN202010616038.7A CN202010616038A CN111797016B CN 111797016 B CN111797016 B CN 111797016B CN 202010616038 A CN202010616038 A CN 202010616038A CN 111797016 B CN111797016 B CN 111797016B
- Authority
- CN
- China
- Prior art keywords
- application program
- target object
- test
- testing
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
Abstract
本发明公开了一种应用程序的测试方法、设备、存储介质及装置,涉及应用程序开发技术领域,该方法包括:为测试应用程序和待测试应用程序创建同一用户标识信息;根据所述用户标识信息运行所述测试应用程序和所述待测试应用程序,以使所述测试应用程序和所述待测试应用程序共享同一目标存储区域;获取所述待测试应用程序中的字节码文件,并根据所述字节码文件创建目标对象;将所述目标对象存放至所述目标存储区域中,以使所述测试应用程序从所述目标存储区域中取出所述目标对象,并对所述目标对象进行测试。本发明所提供的方法无需在应用程序中设置接口,通过反射机制能够简单、快速地使测试应用调用待测试应用中的对象资源,进而提高测试效率。
Description
技术领域
本发明涉及应用程序开发技术领域,尤其涉及一种应用程序的测试方法、设备、存储介质及装置。
背景技术
在对应用程序进行测试时,往往需要通过调用应用程序内的各种对象资源完成相应的测试。现有技术中,通常需要为待测试应用程序设置接口,以调用应用程序内的对象资源。但此方式实现过程复杂,无法简单、快速地获取对象资源,进而导致测试效率低。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种应用程序的测试方法、设备、存储介质及装置,旨在解决现有技术中测试应用程序时,无法简单、快速地获取待测试应用程序中的对象资源的技术问题。
为实现上述目的,本发明提供一种应用程序的测试方法,应用程序的测试方法包括以下步骤:
为测试应用程序和待测试应用程序创建同一用户标识信息;
根据用户标识信息运行测试应用程序和待测试应用程序,以使测试应用程序和待测试应用程序共享同一目标存储区域;
获取待测试应用程序中的字节码文件,并根据字节码文件创建目标对象;
将目标对象存放至目标存储区域中,以使测试应用程序从目标存储区域中取出目标对象,并对目标对象进行测试。
可选的,为测试应用程序和待测试应用程序创建同一用户标识信息的步骤,具体包括:
在接收到测试命令时,根据测试命令确定测试应用程序和待测试应用程序;
在检测到测试应用程序处于运行中时,获取测试应用程序的运行用户标识信息;
为待测试应用程序创建与运行用户标识信息相同的用户标识信息。
可选的,在接收到测试命令时,根据测试命令确定测试应用程序和待测试应用程序的步骤之后,还包括:
在检测到待测试应用程序处于运行中时,获取待测试应用程序的运行用户标识信息;
为测试应用程序创建与运行用户标识信息相同的用户标识信息。
可选的,在接收到测试命令时,根据测试命令确定测试应用程序和待测试应用程序的步骤之后,还包括:
在检测到测试应用程序和待测试应用程序均处于运行中时,获取待测试应用程序的运行用户标识信息;
停止测试应用程序的运行进程,并清除测试应用程序的原始用户标识信息;
为测试应用程序创建与运行用户标识信息相同的用户标识信息。
可选的,获取待测试应用程序中的字节码文件,并根据字节码文件创建目标对象的步骤,具体包括:
获取待测试应用程序中的字节码文件及字节码文件对应的生成时间;
根据生成时间对字节码文件进行排序,获得文件序列表;
基于文件序列表的文件顺序根据字节码文件创建目标对象。
可选的,获取待测试应用程序中的字节码文件,并根据字节码文件创建目标对象的步骤,具体包括:
在接收到创建命令时,根据创建命令获取待创建对象信息;
获取待测试应用程序中的字节码文件;
根据待创建对象信息对字节码文件进行筛选,获得目标字节码文件;
根据目标字节码文件创建目标对象。
可选的,根据待创建对象信息对字节码文件进行筛选,获得目标字节码文件的步骤,具体包括:
根据字节码文件获得各字节码文件对应的对象信息;
根据字节码文件和对象信息的对应关系创建第一映射关系表;
根据待创建对象信息对第一映射关系表进行遍历;
在第一映射关系表中存在与待创建对象信息相同的目标对象信息时,将目标对象信息对应的字节码文件作为目标字节码文件。
可选的,将目标对象存放至目标存储区域中,以使测试应用程序从目标存储区域中取出目标对象,并对目标对象进行测试的步骤,具体包括:
将目标对象存放至目标存储区域中,并获取目标对象对应的路径信息;
根据目标对象和路径信息的对应关系创建第二映射关系表,以使测试应用程序根据第二映射关系表从目标存储区域中取出目标对象,并对目标对象进行测试。
可选的,将目标对象存放至目标存储区域中,以使测试应用程序从目标存储区域中取出目标对象,并对目标对象进行测试的步骤之后,还包括:
在接收到测试应用程序发送的调取命令时,根据调取命令调取预设加载器;
在测试应用程序从目标存储区域中取出目标对象时,通过预设加载器加载目标对象,获得代理对象;
将代理对象传输至测试应用程序,以使测试应用程序对代理对象进行测试。
可选的,将目标对象存放至目标存储区域中,以使测试应用程序从目标存储区域中取出目标对象,并对目标对象进行测试的步骤之后,还包括:
接收测试应用程序发送的反馈信息;
根据反馈信息确定目标对象的调用状态,并将调用状态与预设条件进行比较;
在调用状态达到预设条件时,将目标对象的引用置为空,以使目标对象被回收。
可选的,根据反馈信息确定目标对象的调用状态,并将调用状态与预设条件进行比较的步骤,具体包括:
根据反馈信息确定目标对象被调用的次数,并将被调用的次数与预设次数进行比较;
相应的,在调用状态达到预设条件时,将目标对象的引用置为空,以使目标对象被回收的步骤,具体包括:
在被调用的次数大于预设次数时,将目标对象的引用置为空,以使目标对象被回收。
可选的,根据反馈信息确定目标对象的调用状态,并将调用状态与预设条件进行比较的步骤,具体包括:
根据反馈信息确定当前时间;
获取目标对象对应的创建时间,并对当前时间和创建时间作差,获得时间差值;
将时间差值与预设阈值进行比较;
相应的,在调用状态达到预设条件时,将目标对象的引用置为空,以使目标对象被回收的步骤,具体包括:
在时间差值大于预设阈值时,将目标对象的引用置为空,以使目标对象被回收。
此外,为实现上述目的,本发明还提出一种应用程序的测试设备,应用程序的测试设备包括:存储器、处理器及存储在存储器上并可在处理器上运行的应用程序的测试程序,应用程序的测试程序被处理器执行时实现如上述的应用程序的测试方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,存储介质上存储有应用程序的测试程序,应用程序的测试程序被处理器执行时实现如上述的应用程序的测试方法的步骤。
此外,为实现上述目的,本发明还提出一种应用程序的测试装置,应用程序的测试装置包括:
标识创建模块,用于为测试应用程序和待测试应用程序创建同一用户标识信息;
运行模块,用于根据用户标识信息运行测试应用程序和待测试应用程序,以使测试应用程序和待测试应用程序共享同一目标存储区域;
对象创建模块,用于获取待测试应用程序中的字节码文件,并根据字节码文件创建目标对象;
存储模块,还用于将目标对象存放至目标存储区域中,以使测试应用程序从目标存储区域中取出目标对象,并对目标对象进行测试。
可选的,标识创建模块包括第一接收模块、检测模块和标识模块;
第一接收模块,用于在接收到测试命令时,根据测试命令确定测试应用程序和待测试应用程序;
检测模块,用于在检测到仅有测试应用程序处于运行中时,获取测试应用程序的运行用户标识信息;
标识模块,用于为待测试应用程序创建与运行用户标识信息相同的用户标识信息。
可选的,对象创建模块包括第二接收模块、文件提取模块、筛选模块和创建模块;
第二接收模块,用于在接收到创建命令时,根据创建命令获取待创建对象信息;
文件提取模块,获取待测试应用程序中的字节码文件;
筛选模块,用于根据待创建对象信息对字节码文件进行筛选,获得目标字节码文件;
创建模块,用于根据目标字节码文件创建目标对象。
可选的,存储模块,还用于将目标对象存放至目标存储区域中,并获取目标对象对应的路径信息;
存储模块,还用于根据目标对象和路径信息的对应关系创建第二映射关系表,以使测试应用程序根据第二映射关系表从目标存储区域中取出目标对象,并对目标对象进行测试。
可选的,应用程序的测试装置还包括代理模块;
代理模块,用于在接收到测试应用程序发送的调取命令时,根据调取命令调取预设加载器;
代理模块,还用于在测试应用程序从目标存储区域中取出目标对象时,通过预设加载器加载目标对象,获得代理对象;
代理模块,还用于将代理对象传输至测试应用程序,以使测试应用程序对代理对象进行测试。
可选的,应用程序的测试装置还包括回收模块;
回收模块,用于接收测试应用程序发送的反馈信息;
回收模块,还用于根据反馈信息确定目标对象的调用状态,并将调用状态与预设条件进行比较;
回收模块,还用于在调用状态达到预设条件时,将目标对象的引用置为空,以使目标对象被回收。
本发明中,通过为测试应用程序和待测试应用程序创建同一用户标识信息,使测试应用程序和待测试应用程序运行在同一沙箱中,以共享同一目标存储区域;再建立反射机制,根据待测试应用程序中的字节码文件创建目标对象;测试应用程序能够从目标存储区域调取目标对象进行测试。本发明所提供的方法无需在应用程序中设置接口,通过反射机制能够简单、快速地使测试应用调用待测试应用中的对象资源,进而提高测试效率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的应用程序的测试设备的结构示意图;
图2为本发明应用程序的测试方法第一实施例的流程示意图;
图3为本发明应用程序的测试方法第二实施例的流程示意图;
图4为本发明应用程序的测试方法第三实施例的流程示意图;
图5为本发明应用程序的测试方法第四实施例的流程示意图;
图6为本发明应用程序的测试装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的应用程序的测试设备结构示意图。
如图1所示,该应用程序的测试设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display),可选用户接口1003还可以包括标准的有线接口、无线接口,对于用户接口1003的有线接口在本发明中可为USB接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(Random Access Memory,RAM)存储器,也可以是稳定的存储器(Non-volatileMemory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对应用程序的测试设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,认定为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及应用程序的测试程序。
在图1所示的应用程序的测试设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接用户设备;应用程序的测试设备通过处理器1001调用存储器1005中存储的应用程序的测试程序,并执行本发明实施例提供的应用程序的测试方法。
基于上述硬件结构,提出本发明应用程序的测试方法的实施例。
参照图2,图2为本发明应用程序的测试方法第一实施例的流程示意图,提出本发明应用程序的测试方法第一实施例。
在第一实施例中,应用程序的测试方法包括以下步骤:
步骤S10:为测试应用程序和待测试应用程序创建同一用户标识信息。
需要说明的是,本实施方式的方法的执行主体为应用程序的测试设备,应用程序的测试设备可以为手机、平板、电脑等设备。当然,还可以为其他具有相似功能的设备,本实施方式对此不加以限制。
需要说明的是,待测试应用程序可以为应用程序开发中的release版本(即发布版本),也可以为debug版本(即调试版本),本实施例以release版本作为待测试应用程序进行说明。
可以理解的是,由于release版本的应用程序不允许添加调试接口,因此,在对release版本的应用程序进行测试时,会遇到无法调取对象资源的问题,本实施例的一个目的在于解决该问题。
需要说明的是,测试应用程序用于完成对对象资源的测试,其预设配置有用于运行对象资源的运行环境,还可以携带有相关的参数,用于完成对象资源的测试。测试应用程序还可以具有展示窗口,以对测试过程和测试结果进行展示,使测试人员掌握相关测试信息。
需要说明的是,用户标识信息只是应用程序在Android环境下运行时,所具有的linux user ID,使得该应用程序的文件只对该用户可见,只对该应用程序自身可见,从而限制其他用户或程序的访问权限。通过SharedUserId机制能够使两个应用程序具有相同的userID。
在具体实现中,为测试应用程序和待测试应用程序创建同一用户标识信息的步骤,可包括:在接收到测试命令时,根据测试命令确定测试应用程序和待测试应用程序;在检测到测试应用程序处于运行中时,获取测试应用程序的运行用户标识信息;为待测试应用程序创建与运行用户标识信息相同的用户标识信息。
可以理解的是,由于应用程序在运行时,已经具有了userID,因此需要判断应用程序的运行状态。在接收到测试命令时,先根据测试命令确定待运行的测试应用程序和待测试应用程序。在具体实现中,测试命令可由用户输入,用户可通过选定测试应用程序和待测试应用程序,发起测试流程。然后检测测试应用程序和待测试应用程序,若检测到测试应用程序处于运行中时,则表示测试应用程序已经具有userID,此时,可为待测试应用程序创建相同的userID,即可使测试应用程序和待测试应用程序具有同一用户标识信息。
可选的,在检测到待测试应用程序处于运行中时,获取待测试应用程序的运行用户标识信息;为测试应用程序创建与运行用户标识信息相同的用户标识信息。
可以理解的是,若检测到待测试应用程序处于运行中时,则表示待测试应用程序已经具有userID。此时,需要为测试应用程序创建相同的userID,使测试应用程序和待测试应用程序具有同一用户标识信息。
可选的,在检测到测试应用程序和待测试应用程序均处于运行中时,获取待测试应用程序的运行用户标识信息;停止测试应用程序的运行进程,并清除测试应用程序的原始用户标识信息;为测试应用程序创建与运行用户标识信息相同的用户标识信息。
可以理解的是,在检测到测试应用程序和待测试应用程序均处于运行中时,则表示测试应用程序和待测试应用程序均具有userID。此时,获取待测试应用程序的userID;停止测试应用程序的运行进程,并清除测试应用程序的userID;为测试应用程序创建相同的userID,即可使测试应用程序和待测试应用程序具有同一用户标识信息。此外还可以停止待测试应用程序的运行进程,为待测试应用程序创建与测试应用程序相同的userID。
可以理解的是,在检测到测试应用程序和待测试应用程序均为运行,则可根据预设的userID,待测试应用程序创建与测试应用程序相同的用户标识信息。
步骤S20:根据用户标识信息运行测试应用程序和待测试应用程序,以使测试应用程序和待测试应用程序共享同一目标存储区域。
可以理解的的是,在Java环境中,通常会为运行的应用程序创建沙箱,以限制应用程序的运行环境,进而限制应用程序的权限。而通过为测试应用程序和待测试应用程序创建相同userID,使测试应用程序和待测试应用程序具有相同权限,从而使测试应用程序和待测试应用程序运行在同一沙箱下。
需要说明的是,在同一沙箱下测试应用程序和待测试应用程序具有相同的运行空间,即使得测试应用程序和待测试应用程序能够共享同一目标存储区域。
步骤S30:获取待测试应用程序中的字节码文件,并根据字节码文件创建目标对象。
需要说明的是,字节码文件是经过编译器预处理过的一种文件,是JAVA的执行文件存在形式。待测试应用程序在运行过程中对内部对象资源进行加载时,会产生相应的字节码文件。因此,根据字节码文件能够得到相应的对象资源。
在具体实现时,可通过建立反射机制,先获取待测试应用程序中的字节码文件,再通过沙箱内的类加载器对加载字节码文件,从而创建相应的对象资源。
可选的,获取待测试应用程序中的字节码文件,并根据字节码文件创建目标对象的步骤,可具体包括:获取待测试应用程序中的字节码文件及字节码文件对应的生成时间;根据生成时间对字节码文件进行排序,获得文件序列表;基于文件序列表的文件顺序根据字节码文件创建目标对象。
需要说明的是,字节码文件对应的生成时间能够反映待测试应用在加载对象时的加载顺序,根据生成时间可对字节码文件按时间顺序进行排序。可使生成时间在后的字节码文件位于文件顺序前面,依次完成对象资源的创建。
步骤S40:将目标对象存放至目标存储区域中,以使测试应用程序从目标存储区域中取出目标对象,并对目标对象进行测试。
可以理解的是,为了便于测试应用程序调取该目标对象,将该目标对象存放至目标存储区域中,以使测试应用程序从目标存储区域中取出目标对象,并对目标对象进行测试。
可选的,具体步骤可包括:将目标对象存放至目标存储区域中,并获取目标对象对应的路径信息;根据目标对象和路径信息的对应关系创建映射关系表,以使测试应用程序根据映射关系表从目标存储区域中取出目标对象,并对目标对象进行测试。
可以理解的是,测试应用程序通过选定需要的对象资源信息,根据映射关系表查找对应的路径信息,再根据路径信息调用对应的对象资源,从而加快测试应用程序的调取速度。
在第一实施例中,通过为测试应用程序和待测试应用程序创建同一用户标识信息,使测试应用程序和待测试应用程序运行在同一沙箱中,以共享同一目标存储区域;再建立反射机制,根据待测试应用程序中的字节码文件创建目标对象;测试应用程序能够从目标存储区域调取目标对象进行测试。本发明所提供的方法无需在应用程序中设置接口,通过反射机制能够简单、快速地使测试应用程序调用待测试应用中的对象资源,进而提高测试效率。
参照图3,图3为本发明应用程序的测试方法第二实施例的流程示意图,基于上述图2所示的第一实施例,提出本发明应用程序的测试方法的第二实施例。
在第二实施例中,步骤S30:获取待测试应用程序中的字节码文件,并根据字节码文件创建目标对象,具体包括:
步骤S301:在接收到创建命令时,根据创建命令获取待创建对象信息。
需要说明的是,为节约系统资源,本实施例与第一实施例的区别在于,对待测试应用程序运行的对象资源进行选择性的创建,而非对全部对象资源进行创建。
需要说明的是,创建命令可包括相应的对象信息,如对象的类、属性等信息,通过对创建命令的编译可以获取创建命令中包含的待创建对象信息。本实施例通过创建命令来指定所需的对象资源,避免对全部对象资源进行创建,浪费系统资源。
需要说明的是,创建命令可来自测试应用程序,测试应用程序可设置相应的对象信息选择模块,以指定所需的对象资源。或者由用户输入创建命令。
需要说明的是,待创建对象信息对应的对象资源数量并不限定为一对一关系,还可以为一对多关系,即通过一个创建命令可以指定多个对象资源。
步骤S302:获取待测试应用程序中的字节码文件。
可以理解的是,字节码文件是经过编译器预处理过的一种文件,是JAVA的执行文件存在形式。待测试应用程序在运行过程中对内部对象资源进行加载时,会产生相应的字节码文件。由于已知待测试应用程序的字节码文件的存储地址,因此,可以根据存储地址来提取相应的字节码文件。
步骤S303:根据待创建对象信息对字节码文件进行筛选,获得目标字节码文件。
可以理解的是,由于待创建对象信息指定了对应的对象资源,因此需要对待测试应用程序产生的字节码文件进行筛选,以获取对应目标字节码文件,在通过类加载器创建目的对象。
可选的,根据待创建对象信息对字节码文件进行筛选,获得目标字节码文件的步骤,可具体包括:根据字节码文件获得各字节码文件对应的对象信息;根据字节码文件和对象信息的对应关系创建映射关系表;根据待创建对象信息对映射关系表进行遍历;在第一映射关系表中存在与待创建对象信息相同的目标对象信息时,将目标对象信息对应的字节码文件作为目标字节码文件。
需要说明的是,字节码文件对应的对象信息可以为字节码文件的名称,也可以是字节码文件通过编译器进行编译后,从而提取到的字节码文件对应的标识信息。
需要说明的是,映射关系表可以根据待测试应用程序的运行过程,进行实时更新。后续再接收到创建命令时,根据已生成的映射关系表进行筛选,提高效率。
步骤S304:根据目标字节码文件创建目标对象。
可以理解的是,筛选得到目标字节码文件即为指定对象资源对应的字节码文件,通过沙箱的类加载器加载目标字节码文件,以创建指定的目标对象。
在第二实施例中,通过对需要创建的对象资源进行指定,避免类加载器加载全部字节码文件,减少创建的对象资源量,从而达到节约系统资源的效果。此外,通过创建映射关系表有利于提高后续在筛选指定对象资源时的效率。
参照图4,图4为本发明应用程序的测试方法第三实施例的流程示意图,基于上述图2所示的第一实施例和图3所示的第二实施例,提出本发明应用程序的测试方法的第三实施例。
在第三实施例中,步骤S40之后,还包括:
步骤S501:在接收到测试应用程序发送的调取命令时,根据调取命令调取预设加载器。
需要说明的是,调取命令通常包括了需要调取的目标对象的对象信息,或者包括直接指向目标对象的路径信息,以调取目标对象。
需要说明的是,由于存在ClassLoader限制,测试应用程序可能无法直接调用目标对象。此时,根据调取命令指向的目标对象信息,获取预设加载器进行代理,对目标对象进行转换,以正常调用目标对象。该预设加载器可以为另一个类加载器。
步骤S502:在测试应用程序从目标存储区域中取出目标对象时,通过预设加载器加载目标对象,获得代理对象。
需要说明的是,测试应用程序在取出目标对象时,并不直接进行调用,而是通过获取的预设加载器对目标对象进行代理。预设加载器对目标对象的加载过程可以为创建一个新的代理对象,再通过代理对象调用目标对象。
可以理解的是,由于代理对象调用了目标对象,因此在对代理对象调用时,相应于同时调用了目标对象,通过间接调用的方式,解决了无法直接调用的问题。
步骤S503:将代理对象传输至测试应用程序,以使测试应用程序对代理对象进行测试。
可以理解的是,测试应用程序在取出目标对象时,代理加载器将目标对象转换成代理对象,测试应用程序由于无法直接调用目标对象,因此在进行测试时,测试应用程序实际调用的是代理对象。测试应用程序在调用代理对象进行测试时,也完成对目标对象的测试,从而间接实现了对目标对象的测试。
在第三实施例中,在测试应用程序无法直接调用目标对象时,通过预设的加载器对目标对象进行转换,得到代理对象。测试应用程序通过调用代理对象完成测试,从而间接完成对目标对象的测试,解决了由于ClassLoader限制,无法正常使用目标对象的问题。
参照图5,图5为本发明应用程序的测试方法第四实施例的流程示意图,基于上述图2所示的第一实施例、图3所示的第二实施例和图4所示的第三实施例,提出本发明应用程序的测试方法的第四实施例。
在第三实施例中,步骤S40之后,还包括:
步骤S601:接收测试应用程序发送的反馈信息。
需要说明的是,为了更好的管理对象资源,需要收集对象资源的被调用状态。因此,本实施例中,通过接受测试应用程序发送的反馈信息来确定对象资源的调用状态。其中,主要的管理操作包括重新生成、引用置为空等。
需要说明的是,反馈信息通常包括调用的对象资源、调用时间、完成时间、调用结果等信息。其中,在调用结果为错误时,还包括是否需要继续调用;若需要继续调用,则不对相应的对象资源进行相关处理。
步骤S602:根据反馈信息确定目标对象的调用状态,并将调用状态与预设条件进行比较。
可选的,根据反馈信息确定目标对象被调用的次数,并将被调用的次数与预设次数进行比较。
在具体实现中,可根据反馈信息中携带的对象资源信息,对相应的目标对象进行计数。本实施例通过目标对象被调用的次数与预设次数进行比较,以实现对目标对象的调用次数进行限制,为对象资源的管理提供参考。
可选的,还可以根据反馈信息确定当前时间;获取目标对象对应的创建时间,并对当前时间和创建时间作差,获得时间差值;将时间差值与预设阈值进行比较。
需要说明的是,当前时间可以是接收到反馈信息的时间,创建时间是指类加载器创建目标对象的完成时间。本实施例通过将当前时间与创建时间的差值与预设阈值进行标记,以实现对目标对象的存在时间进行限制,为对象资源的管理提供参考。
步骤S603:在调用状态达到预设条件时,将目标对象的引用置为空,以使目标对象被回收。
需要说明的是,在目标对象超出相应的限制后,需要对相应的对象资源进行处理。例如,将目标对象的引用置为空,以使目标对象被回收,从而节约系统资源。还可以根据需要重新生成目标对象,本实施例对此不加以限制。
可以理解的是,当限制条件为调用次数时,在被调用的次数大于预设次数时,将目标对象的引用置为空,以使目标对象被回收。
可以理解的是,当限制条件为调用时间时,在时间差值大于预设阈值时,将目标对象的引用置为空,以使目标对象被回收。
在第四实施例中,通过对目标对象的调用状态进行限制,在超出相应的的限制时,将目标对象的的引用置为空,以使目标对象被回收,从而节约系统资源。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有应用程序的测试程序,所述应用程序的测试程序被处理器执行时实现如上文所述的应用程序的测试方法的步骤。
此外,参照图6,本发明实施例还提出一种应用程序的测试装置,应用程序的测试装置包括:
标识创建模块10,用于为测试应用程序和待测试应用程序创建同一用户标识信息;
运行模块20,用于根据用户标识信息运行测试应用程序和待测试应用程序,以使测试应用程序和待测试应用程序共享同一目标存储区域;
对象创建模块30,用于获取待测试应用程序中的字节码文件,并根据字节码文件创建目标对象;
存储模块40,还用于将目标对象存放至目标存储区域中,以使测试应用程序从目标存储区域中取出目标对象,并对目标对象进行测试。
在本实施例中,通过为测试应用程序和待测试应用程序创建同一用户标识信息,使测试应用程序和待测试应用程序运行在同一沙箱中,以共享同一目标存储区域;再建立反射机制,根据待测试应用程序中的字节码文件创建目标对象;测试应用程序能够从目标存储区域调取目标对象进行测试。本发明所提供的方法无需在应用程序中设置接口,通过反射机制能够简单、快速地使测试应用程序调用待测试应用程序中的对象资源,进而提高测试效率。
在一实施例中,标识创建模块包括第一接收模块、检测模块和标识模块;第一接收模块,用于在接收到测试命令时,根据测试命令确定测试应用程序和待测试应用程序;检测模块,用于在检测到仅有测试应用程序处于运行中时,获取测试应用程序的运行用户标识信息;标识模块,用于为待测试应用程序创建与运行用户标识信息相同的用户标识信息。
在一实施例中,对象创建模块包括第二接收模块、文件提取模块、筛选模块和创建模块;第二接收模块,用于在接收到创建命令时,根据创建命令获取待创建对象信息;文件提取模块,获取待测试应用程序中的字节码文件;筛选模块,用于根据待创建对象信息对字节码文件进行筛选,获得目标字节码文件;创建模块,用于根据目标字节码文件创建目标对象。
在一实施例中,存储模块,还用于将目标对象存放至目标存储区域中,并获取目标对象对应的路径信息;存储模块,还用于根据目标对象和路径信息的对应关系创建第二映射关系表,以使测试应用程序根据第二映射关系表从目标存储区域中取出目标对象,并对目标对象进行测试。
在一实施例中,应用程序的测试装置还包括代理模块;代理模块用于在接收到测试应用程序发送的调取命令时,根据调取命令调取预设加载器;还用于在测试应用程序从目标存储区域中取出目标对象时,通过预设加载器加载目标对象,获得代理对象;还用于将代理对象传输至测试应用程序,以使测试应用程序对代理对象进行测试。
在一实施例中,应用程序的测试装置还包括回收模块;回收模块,用于接收测试应用程序发送的反馈信息;还用于根据反馈信息确定目标对象的调用状态,并将调用状态与预设条件进行比较;还用于在调用状态达到预设条件时,将目标对象的引用置为空,以使目标对象被回收。
本发明所述应用程序的测试装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器镜像(Read Only Memory image,ROM)/随机存取存储器(Random AccessMemory,RAM)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (20)
1.一种应用程序的测试方法,其特征在于,所述应用程序的测试方法包括以下步骤:
为测试应用程序和待测试应用程序创建同一用户标识信息;
根据所述用户标识信息运行所述测试应用程序和所述待测试应用程序,以使所述测试应用程序和所述待测试应用程序共享同一目标存储区域;
获取所述待测试应用程序中的字节码文件,并根据所述字节码文件创建目标对象;
将所述目标对象存放至所述目标存储区域中,以使所述测试应用程序从所述目标存储区域中取出所述目标对象,并对所述目标对象进行测试。
2.如权利要求1所述的应用程序的测试方法,其特征在于,所述为测试应用程序和待测试应用程序创建同一用户标识信息的步骤,具体包括:
在接收到测试命令时,根据所述测试命令确定测试应用程序和待测试应用程序;
在检测到所述测试应用程序处于运行中时,获取所述测试应用程序的运行用户标识信息;
为所述待测试应用程序创建与所述运行用户标识信息相同的用户标识信息。
3.如权利要求2所述的应用程序的测试方法,其特征在于,所述在接收到测试命令时,根据所述测试命令确定测试应用程序和待测试应用程序的步骤之后,还包括:
在检测到所述待测试应用程序处于运行中时,获取所述待测试应用程序的运行用户标识信息;
为所述测试应用程序创建与所述运行用户标识信息相同的用户标识信息。
4.如权利要求2所述的应用程序的测试方法,其特征在于,所述在接收到测试命令时,根据所述测试命令确定测试应用程序和待测试应用程序的步骤之后,还包括:
在检测到所述测试应用程序和所述待测试应用程序均处于运行中时,获取所述待测试应用程序的运行用户标识信息;
停止所述测试应用程序的运行进程,并清除所述测试应用程序的原始用户标识信息;
为所述测试应用程序创建与所述运行用户标识信息相同的用户标识信息。
5.如权利要求1至4中任一项所述的应用程序的测试方法,其特征在于,所述获取所述待测试应用程序中的字节码文件,并根据所述字节码文件创建目标对象的步骤,具体包括:
获取所述待测试应用程序中的字节码文件及所述字节码文件对应的生成时间;
根据所述生成时间对所述字节码文件进行排序,获得文件序列表;
基于所述文件序列表的文件顺序根据所述字节码文件创建目标对象。
6.如权利要求1至4中任一项所述的应用程序的测试方法,其特征在于,所述获取所述待测试应用程序中的字节码文件,并根据所述字节码文件创建目标对象的步骤,具体包括:
在接收到创建命令时,根据所述创建命令获取待创建对象信息;
获取所述待测试应用程序中的字节码文件;
根据所述待创建对象信息对所述字节码文件进行筛选,获得目标字节码文件;
根据所述目标字节码文件创建目标对象。
7.如权利要求6所述的应用程序的测试方法,其特征在于,所述根据所述待创建对象信息对所述字节码文件进行筛选,获得目标字节码文件的步骤,具体包括:
根据所述字节码文件获得各字节码文件对应的对象信息;
根据所述字节码文件和所述对象信息的对应关系创建第一映射关系表;
根据所述待创建对象信息对所述第一映射关系表进行遍历;
在所述第一映射关系表中存在与所述待创建对象信息相同的目标对象信息时,将所述目标对象信息对应的字节码文件作为目标字节码文件。
8.如权利要求1至4中任一项所述的应用程序的测试方法,其特征在于,所述将所述目标对象存放至所述目标存储区域中,以使所述测试应用程序从所述目标存储区域中取出所述目标对象,并对所述目标对象进行测试的步骤,具体包括:
将所述目标对象存放至所述目标存储区域中,并获取所述目标对象对应的路径信息;
根据所述目标对象和所述路径信息的对应关系创建第二映射关系表,以使所述测试应用程序根据所述第二映射关系表从所述目标存储区域中取出所述目标对象,并对所述目标对象进行测试。
9.如权利要求1至4中任一项所述的应用程序的测试方法,其特征在于,所述将所述目标对象存放至所述目标存储区域中,以使所述测试应用程序从所述目标存储区域中取出所述目标对象,并对所述目标对象进行测试的步骤之后,还包括:
在接收到所述测试应用程序发送的调取命令时,根据所述调取命令调取预设加载器;
在所述测试应用程序从所述目标存储区域中取出所述目标对象时,通过所述预设加载器加载所述目标对象,获得代理对象;
将所述代理对象传输至所述测试应用程序,以使所述测试应用程序对所述代理对象进行测试。
10.如权利要求1至4中任一项所述的应用程序的测试方法,其特征在于,所述将所述目标对象存放至所述目标存储区域中,以使所述测试应用程序从所述目标存储区域中取出所述目标对象,并对所述目标对象进行测试的步骤之后,还包括:
接收所述测试应用程序发送的反馈信息;
根据所述反馈信息确定所述目标对象的调用状态,并将所述调用状态与预设条件进行比较;
在所述调用状态达到所述预设条件时,将所述目标对象的引用置为空,以使所述目标对象被回收。
11.如权利要求10所述的应用程序的测试方法,其特征在于,所述根据所述反馈信息确定所述目标对象的调用状态,并将所述调用状态与预设条件进行比较的步骤,具体包括:
根据所述反馈信息确定所述目标对象被调用的次数,并将所述被调用的次数与预设次数进行比较;
相应的,所述在所述调用状态达到所述预设条件时,将所述目标对象的引用置为空,以使所述目标对象被回收的步骤,具体包括:
在所述被调用的次数大于预设次数时,将所述目标对象的引用置为空,以使所述目标对象被回收。
12.如权利要求10所述的应用程序的测试方法,其特征在于,所述根据所述反馈信息确定所述目标对象的调用状态,并将所述调用状态与预设条件进行比较的步骤,具体包括:
根据所述反馈信息确定当前时间;
获取所述目标对象对应的创建时间,并对所述当前时间和所述创建时间作差,获得时间差值;
将所述时间差值与预设阈值进行比较;
相应的,所述在所述调用状态达到所述预设条件时,将所述目标对象的引用置为空,以使所述目标对象被回收的步骤,具体包括:
在所述时间差值大于所述预设阈值时,将所述目标对象的引用置为空,以使所述目标对象被回收。
13.一种应用程序的测试设备,其特征在于,所述应用程序的测试设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的应用程序的测试程序,所述应用程序的测试程序被所述处理器执行时实现如权利要求1至12中任一项所述的应用程序的测试方法的步骤。
14.一种存储介质,其特征在于,所述存储介质上存储有应用程序的测试程序,所述应用程序的测试程序被处理器执行时实现如权利要求1至12中任一项所述的应用程序的测试方法的步骤。
15.一种应用程序的测试装置,其特征在于,所述应用程序的测试装置包括:
标识创建模块,用于为测试应用程序和待测试应用程序创建同一用户标识信息;
运行模块,用于根据所述用户标识信息运行所述测试应用程序和所述待测试应用程序,以使所述测试应用程序和所述待测试应用程序共享同一目标存储区域;
对象创建模块,用于获取所述待测试应用程序中的字节码文件,并根据所述字节码文件创建目标对象;
存储模块,用于将所述目标对象存放至所述目标存储区域中,以使所述测试应用程序从所述目标存储区域中取出所述目标对象,并对所述目标对象进行测试。
16.如权利要求15所述的应用程序的测试装置,其特征在于,所述标识创建模块包括第一接收模块、检测模块和标识模块;
所述第一接收模块,用于在接收到测试命令时,根据所述测试命令确定测试应用程序和待测试应用程序;
所述检测模块,用于在检测到仅有所述测试应用程序处于运行中时,获取所述测试应用程序的运行用户标识信息;
所述标识模块,用于为所述待测试应用程序创建与所述运行用户标识信息相同的用户标识信息。
17.如权利要求15所述的应用程序的测试装置,其特征在于,所述对象创建模块包括第二接收模块、文件提取模块、筛选模块和创建模块;
所述第二接收模块,用于在接收到创建命令时,根据所述创建命令获取待创建对象信息;
所述文件提取模块,获取所述待测试应用程序中的字节码文件;
所述筛选模块,用于根据所述待创建对象信息对所述字节码文件进行筛选,获得目标字节码文件;
所述创建模块,用于根据所述目标字节码文件创建目标对象。
18.如权利要求15所述的应用程序的测试装置,其特征在于,所述存储模块,用于将所述目标对象存放至所述目标存储区域中,以使所述测试应用程序从所述目标存储区域中取出所述目标对象,并对所述目标对象进行测试,具体包括:
将所述目标对象存放至所述目标存储区域中,并获取所述目标对象对应的路径信息;
根据所述目标对象和所述路径信息的对应关系创建第二映射关系表,以使所述测试应用程序根据所述第二映射关系表从所述目标存储区域中取出所述目标对象,并对所述目标对象进行测试。
19.如权利要求15所述的应用程序的测试装置,其特征在于,所述应用程序的测试装置还包括代理模块;
所述代理模块,用于在接收到所述测试应用程序发送的调取命令时,根据所述调取命令调取预设加载器;
所述代理模块,还用于在所述测试应用程序从所述目标存储区域中取出所述目标对象时,通过所述预设加载器加载所述目标对象,获得代理对象;
所述代理模块,还用于将所述代理对象传输至所述测试应用程序,以使所述测试应用程序对所述代理对象进行测试。
20.如权利要求15所述的应用程序的测试装置,其特征在于,所述应用程序的测试装置还包括回收模块;
所述回收模块,用于接收所述测试应用程序发送的反馈信息;
所述回收模块,还用于根据所述反馈信息确定所述目标对象的调用状态,并将所述调用状态与预设条件进行比较;
所述回收模块,还用于在所述调用状态达到所述预设条件时,将所述目标对象的引用置为空,以使所述目标对象被回收。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010616038.7A CN111797016B (zh) | 2020-06-30 | 2020-06-30 | 应用程序的测试方法、设备、存储介质及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010616038.7A CN111797016B (zh) | 2020-06-30 | 2020-06-30 | 应用程序的测试方法、设备、存储介质及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111797016A CN111797016A (zh) | 2020-10-20 |
CN111797016B true CN111797016B (zh) | 2022-11-04 |
Family
ID=72809766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010616038.7A Active CN111797016B (zh) | 2020-06-30 | 2020-06-30 | 应用程序的测试方法、设备、存储介质及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111797016B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988604B (zh) * | 2021-04-30 | 2024-04-02 | 中国工商银行股份有限公司 | 对象测试方法、测试系统、电子设备及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019942A (zh) * | 2012-12-31 | 2013-04-03 | 广东欧珀移动通信有限公司 | 一种基于安卓系统的待测应用自动测试方法和系统 |
CN110008113A (zh) * | 2019-02-20 | 2019-07-12 | 北京三快在线科技有限公司 | 一种测试方法、装置、电子设备 |
CN110716715A (zh) * | 2019-10-18 | 2020-01-21 | 恒生电子股份有限公司 | 一种应用程序开发方法、装置、设备及介质 |
-
2020
- 2020-06-30 CN CN202010616038.7A patent/CN111797016B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103019942A (zh) * | 2012-12-31 | 2013-04-03 | 广东欧珀移动通信有限公司 | 一种基于安卓系统的待测应用自动测试方法和系统 |
CN110008113A (zh) * | 2019-02-20 | 2019-07-12 | 北京三快在线科技有限公司 | 一种测试方法、装置、电子设备 |
CN110716715A (zh) * | 2019-10-18 | 2020-01-21 | 恒生电子股份有限公司 | 一种应用程序开发方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111797016A (zh) | 2020-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101008977B1 (ko) | OSGi 서비스 플랫폼 테스트 방법 및 이를 이용한테스트 툴 | |
CN106598835B (zh) | 一种应用的测试方法及装置、系统 | |
CN110096424B (zh) | 测试的处理方法、装置、电子设备及存储介质 | |
CN110363004B (zh) | 一种代码漏洞检测方法、装置、介质及设备 | |
CN111026601A (zh) | Java应用系统的监控方法、装置、电子设备及存储介质 | |
CN112019401B (zh) | 一种车联网应用安全测试方法、装置、系统和电子设备 | |
CN108769175B (zh) | 远程真机访问控制方法、装置、存储介质及电子设备 | |
CN112052169A (zh) | 测试管理方法、系统、设备以及计算机可读存储介质 | |
CN110928777B (zh) | 测试用例的处理方法、装置、设备及存储介质 | |
CN107621963B (zh) | 一种软件部署方法、软件部署系统及电子设备 | |
CN111797016B (zh) | 应用程序的测试方法、设备、存储介质及装置 | |
CN109284611B (zh) | 基于Metasploit框架的测试系统及实现网络安全性测试的方法 | |
CN113485755A (zh) | 设备驱动程序验证方法、装置、设备及存储介质 | |
CN108229147B (zh) | 一种基于Android虚拟容器的内存检测装置及方法 | |
CN110928787B (zh) | 自动化测试脚本录制回放方法、装置、设备和存储介质 | |
CN112214413A (zh) | 一种应用程序的测试方法、装置、设备及存储介质 | |
CN113051088B (zh) | 程序加载方法、装置、设备及计算机可读介质 | |
CN111352668A (zh) | 基于插件的设备测试方法及装置、基于插件的测试系统 | |
CN108628620B (zh) | Pos应用开发的实现方法、装置、计算机设备和存储介质 | |
CN107688479B (zh) | Android系统网络集群及其搭建的方法、Android系统网络集群数据处理的方法和系统 | |
CN112596750B (zh) | 应用测试方法、装置、电子设备及计算机可读存储介质 | |
CN111090458B (zh) | 灰度发布系统和基于灰度发布系统的应用发布方法 | |
CN114661551A (zh) | 软件运行状态的监控方法、设备及计算机可读存储介质 | |
CN113515299A (zh) | 软件开发工具包sdk热升级方法、装置、设备及存储介质 | |
CN113238935A (zh) | 应用测试方法、系统、设备、介质及计算机程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |