CN110362487B - 一种应用程序的测试方法及装置 - Google Patents
一种应用程序的测试方法及装置 Download PDFInfo
- Publication number
- CN110362487B CN110362487B CN201910624279.3A CN201910624279A CN110362487B CN 110362487 B CN110362487 B CN 110362487B CN 201910624279 A CN201910624279 A CN 201910624279A CN 110362487 B CN110362487 B CN 110362487B
- Authority
- CN
- China
- Prior art keywords
- tested
- application program
- application
- performance
- monitoring
- 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
- 238000012544 monitoring process Methods 0.000 claims abstract description 114
- 238000009434 installation Methods 0.000 claims abstract description 107
- 238000000034 method Methods 0.000 claims abstract description 106
- 238000012360 testing method Methods 0.000 claims abstract description 55
- 230000008569 process Effects 0.000 claims abstract description 46
- 238000011056 performance test Methods 0.000 claims abstract description 31
- 238000010998 test method Methods 0.000 claims abstract description 15
- 230000006870 function Effects 0.000 claims description 91
- 230000006837 decompression Effects 0.000 claims description 7
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 241000220225 Malus Species 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- 244000035744 Hura crepitans Species 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 235000021016 apples Nutrition 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
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
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种应用程序的测试方法及装置,该方法包括确定待测应用程序,为待测应用程序分配统一资源定位符信息;向服务器发送携带统一资源定位符信息和待测应用程序的应用标识的重打包请求,接收所述服务器发送的目标安装包并进行安装;在所述待测应用程序的应用进程中加载安装后的目标安装包中的可执行文件和动态链接库文件;利用加载的动态链接库文件中的监测函数,监测可执行文件在运行过程的性能数据。可实现免越狱iOS系统的应用性能的自动化测试,依赖较少的测试设备,可降低测试成本,支持8.0以上的iOS系统的应用程序的性能测试。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种应用程序的测试方法及装置。
背景技术
在一款移动应用的正式发布之前,通常需要对该移动应用进行诸如CPU、内存、流量、启动耗时、电量和电流等性能测试,以验证该移动应用是否符合上线质量要求。由于iOS系统是采用沙盒安全保护策略的封闭系统,从而安装在iOS设备上的应用程序之间是相互独立的,因此增加了对运行在iOS设备上应用的性能测试的测试难度。
现有技术,对于iOS设备的应用测试方法主要包括:其一为先对iOS设备进行越狱操作来获取iOS系统的底层权限,再对越狱后的设备上的应用进行应用性能测试;其二为通过建立iOS设备和PC设备之间的数据线连接,再利用特定的程序库来实现PC设备与iOS设备的通信,之后通过PC设备对iOS设备进行应用性能测试。然而,这两种应用测试方法至少存在以下不足:前者由于需要对iOS设备进行越狱操作,测试操作复杂且带来设备安全问题,且不适用于无法进行越狱操作的iOS设备。后者由于在测试过程中需要保持PC和iOS设备的一直处于数据线连接状态,测试过程麻烦且由于数据线连接可能会影响测试数据,且仅支持iOS 10.0以上的系统版本的设备。
发明内容
本申请提供了一种应用程序的测试方法及装置,可以解决现有技术中至少一种技术问题。
一方面,本申请提供了一种应用程序的测试方法,包括:
确定待测应用程序,为所述待测应用程序分配统一资源定位符信息;所述待测应用程序为iOS应用程序;
向服务器发送携带所述统一资源定位符信息和所述待测应用程序的应用标识的重打包请求,以使所述服务器将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包;所述动态链接库文件包括用于监测性能的监测函数;
接收所述服务器发送的所述目标安装包并进行安装;
运行安装后的所述待测应用程序,并在所述待测应用程序的应用进程中加载安装后的所述目标安装包中的可执行文件和动态链接库文件;
利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据;所述性能数据包括至少一项待测应用性能的性能统计信息和对应的时间信息。
另一方面,本申请还提供一种应用程序的测试方法,包括:
接收终端发送的统一资源定位符信息和待测应用程序的应用标识的重打包请求;所述待测应用程序为iOS应用程序;
将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包;所述动态链接库文件包括用于监测性能的监测函数;
将所述目标安装包发生至所述终端,以使所述终端运行安装后的所述待测应用程序,并在所述待测应用程序的应用进程中加载安装后的所述目标安装包中的可执行文件和动态链接库文件;利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据;所述性能数据包括至少一项待测应用性能的性能统计信息和对应的时间信息。
另一方面,本申请还提供一种应用程序的测试装置,包括:
分配模块,用于确定待测应用程序,为所述待测应用程序分配统一资源定位符信息;所述待测应用程序为iOS应用程序;
请求发送模块,用于向服务器发送携带所述统一资源定位符信息和所述待测应用程序的应用标识的重打包请求,以使所述服务器将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包;所述动态链接库文件包括用于监测性能的监测函数;
安装模块,用于接收所述服务器发送的所述目标安装包并进行安装;
加载模块,用于运行安装后的所述待测应用程序,并在所述待测应用程序的应用进程中加载安装后的所述目标安装包中的可执行文件和动态链接库文件;
监测模块,用于利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据;所述性能数据包括至少一项待测应用性能的性能统计信息和对应的时间信息。
另一方面还提供了一种终端,该企业组织架构数据的更新客户端包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现如上述方法实施例所提供的应用程序的测试方法。
另一方面还还提供了一种存储介质,所述存储介质可设置于客户端之中以保存用于实现方法实施例中一种应用程序的测试方法相关的至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现上述方法实施例提供的应用程序的测试方法。
另一方面,本申请还提供一种应用程序的测试装置,包括:
请求接收模块,用于接收终端发送的统一资源定位符信息和待测应用程序的应用标识的重打包请求;所述待测应用程序为iOS应用程序;
打包模块,用于将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包;所述动态链接库文件包括用于监测性能的监测函数;
发送模块,用于将所述目标安装包发生至所述终端,以使所述终端运行安装后的所述待测应用程序,并在所述待测应用程序的应用进程中加载安装后的所述目标安装包中的可执行文件和动态链接库文件;利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据;所述性能数据包括至少一项待测应用性能的性能统计信息和对应的时间信息。
另一方面还提供了一种服务器,该企业组织架构数据的更新客户端包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现如上述方法实施例所提供的应用程序的测试方法。
另一方面还提供了一种存储介质,所述存储介质可设置于客户端之中以保存用于实现方法实施例中一种应用程序的测试方法相关的至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现上述方法实施例提供的应用程序的测试方法。
本申请提供的应用程序的测试方法及装置,具有如下技术效果:
本申请通过确定待测应用程序,为所述待测应用程序分配统一资源定位符信息;所述待测应用程序为iOS应用程序;向服务器发送携带统一资源定位符信息和待测应用程序的应用标识的重打包请求,接收所述服务器发送的所述目标安装包并进行安装;在所述待测应用程序的应用进程中加载安装后的所述目标安装包中的可执行文件和动态链接库文件;利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据;所述性能数据包括至少一项待测应用性能的性能统计信息和对应的时间信息。可实现免越狱iOS系统的应用性能的自动化测试,依赖较少的测试设备,可降低测试成本,支持8.0以上的iOS系统的应用程序的性能测试,可覆盖更多的iOS设备,适用性广。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本申请实施例提供的一种实施环境的示意图;
图2是本申请实施例提供的一种应用程序的测试方法的流程示意图;
图3是本申请实施例提供的另一种应用程序的测试方法的流程示意图;
图4为本申请实施例提供的某一应用程序的综合性能测试报告示意图;
图5为图4中的FPS数据的展示界面图;
图6是本申请实施例提供的另一种应用程序的测试方法的流程示意图;
图7是本申请实施例提供的一种应用程序的测试装置的框图;
图8是本申请实施例提供的另一种应用程序的测试方法的流程示意图;
图9是本申请实施例提供的一种应用性能的测试装置的框图;
图10是本申请提供的一种用于实现本申请实施例所提供的方法的设备的硬件结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
请参考图1,其示出了本申请实施例提供的一种实施环境的示意图。该实施环境可以包括:终端120和服务器140。
具体的,所述终端120可以包括运行于实体设备中的软体,例如安装在设备上的应用等,也可以包括安装有应用的智能手机、台式电脑、平板电脑、笔记本电脑、数字助理、智能可穿戴设备等类型的实体设备。
在本实施例,终端120上运行的操作系统可以为苹果研发的操作系统(iphoneOperation System,iOS)系统,其主要是作为苹果手机(iPhone)、苹果多媒体播放设备(iPod touch)以及苹果平板电脑(iPad)等设备的操作系统。
具体的,所述服务器140可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群。本申请实施例中,所述服务器140包括但不限于为web服务器。
应理解,终端120和服务器140之间可通过常见的有线或无线等方式进行通信连接。
在实际应用中,待测应用程序(Application,APP)可以安装在终端120上,终端120可以将监测到的待测应用程序的性能数据发送给服务器140,以便服务器140展示所述性能数据对应的性能测试结果。
以下介绍本申请一种应用程序的测试方法方法的具体实施例,图2是本申请实施例提供的一种应用程序的测试方法的流程示意图,本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。具体的如图2所示,所述方法应用于图1所示的系统,所述方法可以包括:
S201:终端确定待测应用程序,为所述待测应用程序分配统一资源定位符信息;所述待测应用程序为iOS应用程序。
在本实施例,所述终端为免越狱iOS系统的终端,该终端上可以安装用于监测待测应用程序的监测应用程序(监测APP),在启动后的监测APP的应用界面上会呈现多个应用程序任务列表,通过触发对其中的至少一个待测应用程序的选择操作,即相当于生成了对被选中的待测应用程序的性能测试请求。终端响应于针对待测应用程序的性能测试请求,确定待测应用程序,并获取该待测应用程序的应用标识。
在iOS系统环境下对待测应用程序进行性能测试,该待测应用程序可以为iOS应用程序,该iOS应用程序例如苹果应用程序文件(iPhone Application,IPA)。由于iOS系统是采用沙盒安全保护策略的封闭系统,从而安装在iOS设备上的应用程序之间是相互独立的、无法彼此通信。
在本实施例,所述统一资源定位符信息用于监测应用程序能够拉起和定位对应的待测应用程序,便于实现自动化测试。可选地,所述统一资源定位符信息可以包括但不限于为URLSchme。
在一实施例中,所述为所述待测应用程序分配统一资源定位符信息,包括:
S2011:所述终端上的监测应用程序按照预设规则配置多个不同的统一资源定位符信息并存储在自身配置文件的对应字段中。
监测应用程序(监测APP)可以事先按照预定的规则配置多个不同的统一资源定位符信息(例如200个、500个或1000个等)作为白名单,并将这些白名单保存在监测应用程序自身的配置文件(例如info.plist文件)对应的字段(例如LSApplicationQueriesSchemes字段)中。
可选地,该预定的规则可以为测试人员自定义的规则,也可以是根据应用程序的应用类型进行配置的规则。该统一资源定位符信息的类型可以多样,例如可以是纯数字信息、纯字母符号信息或者两者的结合等。示例的,该统一资源定位符信息可以为0001,0002,......,N。
S2013:所述终端上的监测应用程序根据所述待测应用程序的应用类型,为其分配指定的统一资源定位符信息。
监测应用程序在接收到待测应用程序的性能测试请求的情况下,可以为每个待测应用程序自动分配一个匹配指定的统一资源定位符信息(白名单),以便于后续监测应用程序能够根据该分配的统一资源定位符信息启动对应的待测应用程序。
可选地,所述终端上的监测应用程序还可以根据所述待测应用程序的应用类型,为每个待测应用程序分配指定的统一资源定位符信息。例如,可以事先将多个不同的统一资源定位符信息集合划分为多个子集,每个子集对应的不同的应用程序类型。从而,在后续分配时可以根据待测应用程序的应用类型分配不同的子集的统一资源定位符信息,便于根据统一资源定位符信息所属子集对不同的应用类型的待测应用程序进行差异性性能测试。
S203:终端向服务器发送携带所述统一资源定位符信息和所述待测应用程序应用标识的重打包请求。
S205:服务器响应所述重打包请求,将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包;所述动态链接库文件包括用于监测性能的监测函数。
动态链接库文件是指一种不可执行的二进制程序文件,其允许程序共享执行特殊任务所必需的代码和其他资源。动态链接库可以在程序一开始或者运行过程中按需加载。动态链接库文件与终端系统相对应,在iOS系统中,动态链接库文件以dylib文件的形式存在。本实施例中,该动态链接库文件包括用于监测性能的监测函数,可以将用于监测性能的监测函数对应的代码编译为动态链接库文件,实现对待测应用程序的性能监测。
在本实施例,所述待测应用程序的安装包可以为IPA安装包,该IPA为iOS系统应用程序安装包格式。
具体的,所述将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包并在所述终端上进行安装,即所述S205可以包括:
S2051:解压所述待测应用程序的安装包,得到所述待测应用程序对应的初始可执行文件和初始配置工程文件。
在本实施例,可以从服务器或其它平台获取待测应用程序的安装包(IPA包),该IPA包实质上是一个zip压缩包,通过对该待测应用程序的安装包进行解压缩,解析得到所述待测应用程序对应的初始可执行文件和初始配置工程文件。示例的,该初始可执行文件的文件格式可以为MACH-O文件格式,其包括文件头、命令区域和数据区域。该初始配置工程文件可以为info.plist文件。
S2053:将加载动态链接库文件的命令注入到所述初始可执行文件中的命令区域,得到修改后的可执行文件。
在本实施例,通过将加载动态链接库文件的命令注入到所述初始可执行文件中的命令区域中,实现对该初始可执行文件进行修改,得到修改后的可执行文件,以实现在加载可执行文件时加载自定义的dylib文件。具体的,可以通过向所述初始可执行文件中的命令区域中插入一条如下加载命令:
LC_LOAD_DYLIB(my.dylib)。
S305:将所述统一资源定位符信息插入到所述初始配置工程文件中,得到修改后的配置工程文件。
在本实施例,所述待测应用程序的初始配置工程文件为info.plist文件。通过将所述统一资源定位符信息插入到该info.plist文件对应的字段(例如LSApplicationQueriesSchemes字段)中,得到修改后的配置工程文件。
S2057:根据所述修改后的可执行文件和所述修改后的配置工程文件,对所述待测应用程序进行解压对应的重打包,得到所述待测应用程序对应的目标安装包。
在本实施例,将修改后的可执行文件、修改后的配置工程文件、动态链接库文件和解压后的其他文件进行重打包,得到包含统一资源定位符信息和动态链接库文件的目标安装包。该目标安装包中的动态链接库文件可以放置在iOS系统中用于存储默认动态链接库文件的位置。该目标安装包的格式与所述待测应用程序的安装包的格式对应,也可为IPA格式,该目标安装包用于待测应用程序的安装和对该待测应用程序进行性能测试。
需要说明的是,上述解压和打包操作可以由所述服务器来执行,也可通过专门的解压工具来执行。
S207:服务器将所述目标安装包发送至所述终端。
S209:终端接收所述服务器发送的所述目标安装包并进行安装。
在本实施例,终端接收所述服务器发送的所述目标安装包,对所述目标安装包进行企业签名后在所述终端上安装。目标安装包需要签名后才能在免越狱iOS设备上安装,否则无法顺利安装。为了使该目标安装包可以在不同测试设备上安装,应该采用证书文件对重新打包后的IPA安装文件进行企业签名,以便于顺利在免越狱iOS系统的终端上安装和运行。
S211:终端运行安装后的所述待测应用程序,并在所述待测应用程序的应用进程中加载安装后的所述目标安装包中的可执行文件和动态链接库文件。
在本实施例,待测应用程序的目标安装包安装完成后,可以会释放目标安装包中的可执行文件和动态链接库文件(dylib文件)。运行安装后的待测应用程序,生成对应的应用进程。在该应用进程中,加载释放的可执行文件并自动加载dylib文件。由于dylib文件被加载后,和加载该dylib文件的进程运行在同一个进程空间,从而解决iOS系统上跨进程访问限制的问题。
dylib文件被加载后,dylib文件中带有“__attribute__((constructor))”标记的函数会自动执行,后续的函数hook(挂钩)等工作在这种带有“__attribute__((constructor))”标记的函数中执行。
在一实施例,所述运行安装后的所述待测应用程序,可以包括:
创建针对所述待测应用的拉起线程,所述拉起线程用于所述监测应用程序拉起所述安装后的所述待测应用程序;
响应于所述拉起线程,自动运行安装后的所述待测应用程序。
S213:终端利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据;所述性能数据包括至少一项待测应用性能的性能统计信息和对应的时间信息。
在本实施例,所述监测函数可以包括钩子函数。
相应的,所述利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据,可以包括:
S2131:利用加载的动态链接库文件中的钩子函数,挂钩所述可执行文件中至少一个用于描述待测应用性能的目标对象。
在本实施例,利用加载的动态链接库文件中的钩子函数来执行Hook(挂钩)目标对象的操作。Hook是一种可以扰乱目标程序正常执行流程的方法;在特定函数或事件等发生时,用于执行定义的程序。目标对象是用于描述待测应用性能的,具体的,该目标对象可包括目标函数、特定函数的属性值等中至少一种。目标对象的数量可与待测应用性能的数量相匹配。
应理解,目标对象与待测应用程序和/或待测应用性能相对应。所述待测应用性能的性能类型包括:帧率FPS、内存、CPU负载和网络出入流量中至少一种。示例的,若待测应用性能为CPU负载,则目标对象为与CPU负载性能相关的目标函数(例如thread_info)。
在一具体实施例,所述利用加载的动态链接库文件中的钩子函数,挂钩所述可执行文件中至少一个用于描述待测应用性能的目标对象,包括:
S301:检测所述待测应用程序的应用类型和/或所述待测应用性能的性能类型。
具体的,所述待测应用程序的应用类型可以包括游戏应用、视频应用、购物应用、聊天应用等大类,还可为不同的开发语言或不同的引擎所生成的小类应用。示例的,游戏应用根据游戏引擎不同,又可分为基于Unity引擎的iOS游戏应用程序和基于UE4引擎的iOS游戏应用程序等。
S303:若所述应用类型为基于Unity引擎的iOS游戏应用程序且所述性能类型为帧率,则利用加载的动态链接库文件中相匹配的钩子函数,挂钩所述可执行文件中UnityAppController的repaint函数。
具体的,Unity游戏引擎中,每次刷新帧率(FPS)都会执行UnityAppController的repaint函数。因此Unity游戏Hook该函数即可。实现这种Hook可能有多种方法。在本实施例中,采用程序库CaptainHook提供的CHMethod方法来实现该Hook。每一次UnityAppController的repaint函数执行一次,就记录一个时间点。后续通过计算每一秒内时间点的个数,就可以计算出对应的帧率(FPS)。
S305:若所述应用类型为基于UE4引擎的iOS游戏应用程序且所述性能类型为帧率,则利用加载的动态链接库文件中相匹配的钩子函数,挂钩所述可执行文件中IOSAppDelegate的bIsSuspended属性。
具体的,UE4游戏引擎中,每一帧都会检测该游戏程序的状态是否为挂起,而判断方法是检测IOSAppDelegate的bIsSuspended属性。在Object-c语言中,属性是一类特殊的成员,该成员的方位可以被Hook。因此,我们采用Hook该属性来测量UE4的帧率。
在另一实施例,若所述待测应用性能为网络流量,则所述目标对象为recv函数和recvfrom函数中的至少一种、以及send函数和sendto函数中的至少一种。具体的,若待测应用程序在发送数据时,底层会执行recv或者recvfrom,故而Hook这两个函数即可获取数据发送量。若待测应用程序在接收数据时,底层会执行send或者sendto函数,通过Hook这两个函数即可获取数据接收量。Hook这四个底层库函数可以采用facebook开源的程序库fishhook函数rebind_symbols实现。
在另一实施例,若所述待测应用性能为cpu负载,则所述目标对象可以为iOS系统提供的thread_info函数。通过依次遍历APP的所有线程,可以获取到每个线程的cpu负载。
在另一实施例,若所述待测应用性能为内存负载,则所述目标对象可以为iOS系统提供的task_info函数。该task_info函数可以返回当前进程使用的内存。系统内存有多个参数,包含虚拟内存、驻留内存(resident-memory)等。其中,和APP出现OOM紧密相关的是一种称为physics_footprint的内存指标,该内存指标与利用苹果测量的数据开发工具xcode所提供测试结果一致。
S2133:在所述待测应用程序的应用进程中,创建用于监测每个目标对象的监测线程。
S2135:执行所述监测线程,并监测每个目标对象在所述可执行文件运行的时间段内的性能参数数据;所述性能参数数据包括执行状态数据和/或属性数据。
在本实施例,性能参数数据与待测应用性能相对应,例如性能参数数据可以为cpu负载值、内存值、数据接收量、数据发送量、预定时间内函数被调用次数、预定时间内每一函数的属性数据等。比如,若所述待测应用性能为cpu负载,通过依次遍历APP的所有线程,通过Hook对应的目标函数(thread_info函数),即可以获取到每个线程的cpu负载值。若所述待测应用性能为内存负载,通过Hook对应的目标函数(task_info函数),获取目标函数返回的当前进程使用的内存值。
S2137:记录每个目标对象的性能参数数据及其对应的时间信息,得到所述性能数据。
在本实施例,获取每个目标对象在所述可执行文件运行的时间段内的性能参数数据,记录每个目标对象的性能参数数据及其对应的时间信息。该时间信息可以为待测应用程序的整个运行时段、至少一个连续或间隔的局部运行时段、至少一个连续或间隔的应用场景、至少一个时间节点或帧中的至少一种。性能参数数据与时间信息对应,即对应时间信息中的所述性能参数数据。
可选地,图3是本申请实施例提供的另一种应用程序的测试方法的流程示意图,具体的如图3所示,所述方法还可包括:
S215:终端获取通过剪切板回传的所述性能数据。
具体的,在监测过程中或监测结束后,终端获取iOS系统通过剪切板回传的所述性能数据。可选地,终端还可获取通过socket方式回传的所述性能数据。
S217:终端向服务器上传所述性能数据。
终端将所述性能数据上传至服务器,以便于服务器对该性能数据进行细致化分析,得出更全面的性能测试结果,从而减少终端的运算量。在终端将该性能数据上传至服务器时,也可以同时上传该待测应用程序的版本号、终端的系统版本号、终端型号以及终端配置数据等。
S218:服务器根据所述性能数据计算每个待测应用性能的性能测试结果,并按预设规则展示所述性能测试结果。
在本实施例,服务器将所述性能测试结果通过图表形式进行展示。图4为本申请实施例提供的某一应用程序的综合性能测试报告示意图。性能测试结果可以包括:FPS(比如,平均帧率、FPS小于10的比例、FPS小于18的比例以及FPS大于10的比例)、CPU性能(比如,平均CPU占比,CPU占比低于80%的比重)、物理内存(比如,平均内存、最大内存)、流量(比如,总流量、输入和输出)等。
图5为图4中的FPS数据的展示界面图。传统的帧率测试是统计每秒中的平均帧率,测试结果比较粗糙;而通过详细分析本申请的图5中的绘制时间点间隔,可以定位到帧率陡降具体帧,实现细致化的性能测试,便于后续的应用程序的代码修改和调试。
本申请通过确定待测应用程序,为所述待测应用程序分配统一资源定位符信息;所述待测应用程序为iOS应用程序;向服务器发送携带统一资源定位符信息和待测应用程序的应用标识的重打包请求,接收所述服务器发送的所述目标安装包并进行安装;在所述待测应用程序的应用进程中加载安装后的所述目标安装包中的可执行文件和动态链接库文件;利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据;所述性能数据包括至少一项待测应用性能的性能统计信息和对应的时间信息。可实现免越狱iOS系统的应用性能的自动化测试,依赖较少的测试设备,可降低测试成本,支持8.0以上的iOS系统的应用程序的性能测试,可覆盖更多的iOS设备,适用性广。
以下介绍本申请实施例中以iOS系统的终端为执行主体的应用程序的测试方法,图6是本申请实施例提供的另一种应用程序的测试方法的流程示意图,具体的如图6所示,所述方法可以包括:
S601:确定待测应用程序,为所述待测应用程序分配统一资源定位符信息;所述待测应用程序为iOS应用程序;
S603:向服务器发送携带所述统一资源定位符信息和所述待测应用程序的应用标识的重打包请求,以使所述服务器将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包;所述动态链接库文件包括用于监测性能的监测函数;
S605:接收所述服务器发送的所述目标安装包并进行安装;
S607:运行安装后的所述待测应用程序,并在所述待测应用程序的应用进程中加载安装后的所述目标安装包中的可执行文件和动态链接库文件;
S609:利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据;所述性能数据包括至少一项待测应用性能的性能统计信息和对应的时间信息。
在一些实施例中,所述监测函数包括钩子函数;
相应的,所述利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据,包括:
利用加载的动态链接库文件中的钩子函数,挂钩所述可执行文件中至少一个用于描述待测应用性能的目标对象;
在所述待测应用程序的应用进程中,创建用于监测每个目标对象的监测线程;
执行所述监测线程,并监测每个目标对象在所述可执行文件运行的时间段内的性能参数数据;所述性能参数数据包括执行状态数据和/或属性数据;
记录每个目标对象的性能参数数据及其对应的时间信息,得到所述性能数据。
在一些实施例中,所述利用加载的动态链接库文件中的钩子函数,挂钩所述可执行文件中至少一个用于描述待测应用性能的目标对象,包括:
检测所述待测应用程序的应用类型和/或所述待测应用性能的性能类型;
若所述应用类型为基于Unity引擎的iOS游戏应用程序且所述性能类型为帧率,则利用加载的动态链接库文件中相匹配的钩子函数,挂钩所述可执行文件中UnityAppController的repaint函数;
若所述应用类型为基于UE4引擎的iOS游戏应用程序且所述性能类型为帧率,则利用加载的动态链接库文件中相匹配的钩子函数,挂钩所述可执行文件中IOSAppDelegate的bIsSuspended属性。
在一些实施例中,所述为所述待测应用程序分配统一资源定位符信息,包括:
所述终端上的监测应用程序按照预设规则配置多个不同的统一资源定位符信息并存储在自身配置文件的对应字段中;
所述终端上的监测应用程序根据所述待测应用程序的应用类型,为其分配指定的统一资源定位符信息;
相应的,所述运行安装后的所述待测应用程序,包括:
创建针对所述待测应用的拉起线程,所述拉起线程用于所述监测应用程序拉起所述安装后的所述待测应用程序;
响应于所述拉起线程,自动运行安装后的所述待测应用程序。
在一些实施例中,所述方法还包括:
获取所述终端通过剪切板回传的所述性能数据;
向服务器上传所述性能数据,以使所述服务器根据所述性能数据计算每个待测应用性能的性能测试结果,并按预设规则展示所述性能测试结果。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图7,其示出了本申请实施例提供的一种应用程序的测试装置的框图。该装置具有实现上述方法示例中服务器侧的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以包括:本申请实施例还提供了一种应用程序的测试装置,如图7所示,所述装置70包括:
分配模块710,用于确定待测应用程序,为所述待测应用程序分配统一资源定位符信息;所述待测应用程序为iOS应用程序;
请求发送模块720,用于向服务器发送携带所述统一资源定位符信息和所述待测应用程序的应用标识的重打包请求,以使所述服务器将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包;所述动态链接库文件包括用于监测性能的监测函数;
安装模块730,用于接收所述服务器发送的所述目标安装包并进行安装;
加载模块740,用于运行安装后的所述待测应用程序,并在所述待测应用程序的应用进程中加载安装后的所述目标安装包中的可执行文件和动态链接库文件;
监测模块750,用于利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据;所述性能数据包括至少一项待测应用性能的性能统计信息和对应的时间信息。
本申请实施例提供了一种终端,该企业组织架构数据的更新客户端包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现如上述方法实施例所提供的应用程序的测试方法。
本申请实施例还提供了一种存储介质,所述存储介质可设置于客户端之中以保存用于实现方法实施例中一种应用程序的测试方法相关的至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现上述方法实施例提供的应用程序的测试方法。
以下介绍本申请实施例中以服务器为执行主体的应用程序的测试方法,图8是本申请实施例提供的另一种应用程序的测试方法的流程示意图,具体的如图8所示,所述方法可以包括:
S801:接收终端发送的统一资源定位符信息和待测应用程序的应用标识的重打包请求;所述待测应用程序为iOS应用程序;
S803:将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包;所述动态链接库文件包括用于监测性能的监测函数;
S805:将所述目标安装包发生至所述终端,以使所述终端运行安装后的所述待测应用程序,并在所述待测应用程序的应用进程中加载安装后的所述目标安装包中的可执行文件和动态链接库文件;利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据;所述性能数据包括至少一项待测应用性能的性能统计信息和对应的时间信息。
在一些实施例中,所述将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包,包括:
解压所述待测应用程序的安装包,得到所述待测应用程序对应的初始可执行文件和初始配置工程文件;
将加载动态链接库文件的命令注入到所述初始可执行文件中的命令区域,得到修改后的可执行文件;
将所述统一资源定位符信息插入到所述初始配置工程文件中,得到修改后的配置工程文件;
根据所述修改后的可执行文件和所述修改后的配置工程文件,对所述待测应用程序进行解压对应的重打包,得到所述待测应用程序对应的目标安装包。
在一些实施例中,所述方法还包括:
获取所述终端上传的所述性能数据;
根据所述性能数据计算每个待测应用性能的性能测试结果;
按预设规则展示所述性能测试结果。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图9,其示出了本申请实施例提供的一种应用性能的测试装置的框图。该装置具有实现上述方法示例中服务器侧的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以包括:本申请实施例还提供了一种应用程序的测试装置,如图9所示,所述装置90包括:
请求接收模块910,用于接收终端发送的统一资源定位符信息和待测应用程序的应用标识的重打包请求;所述待测应用程序为iOS应用程序;
打包模块920,用于将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包;所述动态链接库文件包括用于监测性能的监测函数;
发送模块930,用于将所述目标安装包发生至所述终端,以使所述终端运行安装后的所述待测应用程序,并在所述待测应用程序的应用进程中加载安装后的所述目标安装包中的可执行文件和动态链接库文件;利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据;所述性能数据包括至少一项待测应用性能的性能统计信息和对应的时间信息。
在一些实施例中,所述打包模块920可以包括:
解压单元,用于解压所述待测应用程序的安装包,得到所述待测应用程序对应的初始可执行文件和初始配置工程文件;
注入单元,用于将加载动态链接库文件的命令注入到所述初始可执行文件中的命令区域,得到修改后的可执行文件;
插入单元,用于将所述统一资源定位符信息插入到所述初始配置工程文件中,得到修改后的配置工程文件;
打包单元,用于根据所述修改后的可执行文件和所述修改后的配置工程文件,对所述待测应用程序进行解压对应的重打包,得到所述待测应用程序对应的目标安装包。
在一些实施例中,所述装置还包括:
获取模块,用于获取所述终端上传的所述性能数据;
计算模块,用于根据所述性能数据计算每个待测应用性能的性能测试结果;
展示模块,用于按预设规则展示所述性能测试结果。
本申请实施例提供了一种服务器,该企业组织架构数据的更新客户端包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现如上述方法实施例所提供的应用程序的测试方法。
本申请实施例还提供了一种存储介质,所述存储介质可设置于客户端之中以保存用于实现方法实施例中一种应用程序的测试方法相关的至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、该至少一段程序、该代码集或指令集由该处理器加载并执行以实现上述方法实施例提供的应用程序的测试方法。
进一步地,图10示出了一种用于实现本申请实施例所提供的方法的设备的硬件结构示意图,所述设备可以为计算机终端、移动终端或其它设备,所述设备还可以参与构成或包含本申请实施例所提供的装置。如图10所示,计算机终端10可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图10所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图10中所示更多或者更少的组件,或者具有与图10所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中所述的方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的一种神经网络处理方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (13)
1.一种应用程序的测试方法,其特征在于,应用于终端,包括:
确定待测应用程序,为所述待测应用程序分配统一资源定位符信息;所述待测应用程序为iOS应用程序;所述统一资源定位符信息用于所述终端上的监测应用程序拉起和定位所述待测应用程序以执行自动化测试,所述统一资源定位符信息是所述终端上的监测应用程序基于所述待测应用程序的应用类型所属的统一资源定位符信息子集所确定的;
向服务器发送携带所述统一资源定位符信息和所述待测应用程序的应用标识的重打包请求,以使所述服务器将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包;所述动态链接库文件包括用于监测性能的监测函数;
接收所述服务器发送的所述目标安装包并进行安装;
运行安装后的所述待测应用程序,并在所述待测应用程序的应用进程中加载安装后的所述目标安装包中的可执行文件和动态链接库文件;
利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据;所述性能数据包括至少一项待测应用性能的性能统计信息和对应的时间信息。
2.根据权利要求1所述的方法,其特征在于,所述监测函数包括钩子函数;
相应的,所述利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据,包括:
利用加载的动态链接库文件中的钩子函数,挂钩所述可执行文件中至少一个用于描述待测应用性能的目标对象;
在所述待测应用程序的应用进程中,创建用于监测每个目标对象的监测线程;
执行所述监测线程,并监测每个目标对象在所述可执行文件运行的时间段内的性能参数数据;所述性能参数数据包括执行状态数据和/或属性数据;
记录每个目标对象的性能参数数据及其对应的时间信息,得到所述性能数据。
3.根据权利要求2所述的方法,其特征在于,所述利用加载的动态链接库文件中的钩子函数,挂钩所述可执行文件中至少一个用于描述待测应用性能的目标对象,包括:
检测所述待测应用程序的应用类型和/或所述待测应用性能的性能类型;
若所述应用类型为基于Unity引擎的iOS游戏应用程序且所述性能类型为帧率,则利用加载的动态链接库文件中相匹配的钩子函数,挂钩所述可执行文件中UnityAppController的repaint函数;
若所述应用类型为基于UE4引擎的iOS游戏应用程序且所述性能类型为帧率,则利用加载的动态链接库文件中相匹配的钩子函数,挂钩所述可执行文件中IOSAppDelegate的bIsSuspended属性。
4.根据权利要求1所述的方法,其特征在于,所述为所述待测应用程序分配统一资源定位符信息,包括:
所述终端上的监测应用程序按照预设规则配置多个不同的统一资源定位符信息并存储在自身配置文件的对应字段中;
所述终端上的监测应用程序根据所述待测应用程序的应用类型,为其分配指定的统一资源定位符信息;
相应的,所述运行安装后的所述待测应用程序,包括:
创建针对所述待测应用的拉起线程,所述拉起线程用于所述监测应用程序拉起所述安装后的所述待测应用程序;
响应于所述拉起线程,自动运行安装后的所述待测应用程序。
5.根据权利要求1-4任一所述的方法,其特征在于,所述方法还包括:
获取通过剪切板回传的所述性能数据;
向服务器上传所述性能数据,以使所述服务器根据所述性能数据计算每个待测应用性能的性能测试结果,并按预设规则展示所述性能测试结果。
6.一种应用程序的测试方法,其特征在于,应用于服务器,包括:
接收终端发送的统一资源定位符信息和待测应用程序的应用标识的重打包请求;所述待测应用程序为iOS应用程序;所述统一资源定位符信息用于所述终端上的监测应用程序拉起和定位所述待测应用程序以执行自动化测试,所述统一资源定位符信息是所述终端上的监测应用程序基于所述待测应用程序的应用类型所属的统一资源定位符信息子集所确定的;
将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包;所述动态链接库文件包括用于监测性能的监测函数;
将所述目标安装包发生至所述终端,以使所述终端运行安装后的所述待测应用程序,并在所述待测应用程序的应用进程中加载安装后的所述目标安装包中的可执行文件和动态链接库文件;利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据;所述性能数据包括至少一项待测应用性能的性能统计信息和对应的时间信息。
7.根据权利要求6所述的方法,其特征在于,所述将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包,包括:
解压所述待测应用程序的安装包,得到所述待测应用程序对应的初始可执行文件和初始配置工程文件;
将加载动态链接库文件的命令注入到所述初始可执行文件中的命令区域,得到修改后的可执行文件;
将所述统一资源定位符信息插入到所述初始配置工程文件中,得到修改后的配置工程文件;
根据所述修改后的可执行文件和所述修改后的配置工程文件,对所述待测应用程序进行解压对应的重打包,得到所述待测应用程序对应的目标安装包。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
获取所述终端上传的所述性能数据;
根据所述性能数据计算每个待测应用性能的性能测试结果;
按预设规则展示所述性能测试结果。
9.一种应用程序的测试装置,其特征在于,应用于终端,包括:
分配模块,用于确定待测应用程序,为所述待测应用程序分配统一资源定位符信息;所述待测应用程序为iOS应用程序;所述统一资源定位符信息用于所述终端上的监测应用程序拉起和定位所述待测应用程序以执行自动化测试,所述统一资源定位符信息是所述终端上的监测应用程序基于所述待测应用程序的应用类型所属的统一资源定位符信息子集所确定的;
请求发送模块,用于向服务器发送携带所述统一资源定位符信息和所述待测应用程序的应用标识的重打包请求,以使所述服务器将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包;所述动态链接库文件包括用于监测性能的监测函数;
安装模块,用于接收所述服务器发送的所述目标安装包并进行安装;
加载模块,用于运行安装后的所述待测应用程序,并在所述待测应用程序的应用进程中加载安装后的所述目标安装包中的可执行文件和动态链接库文件;
监测模块,用于利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据;所述性能数据包括至少一项待测应用性能的性能统计信息和对应的时间信息。
10.一种应用程序的测试装置,其特征在于,应用于服务器,包括:
请求接收模块,用于接收终端发送的统一资源定位符信息和待测应用程序的应用标识的重打包请求;所述待测应用程序为iOS应用程序;所述统一资源定位符信息用于所述终端上的监测应用程序拉起和定位所述待测应用程序以执行自动化测试,所述统一资源定位符信息是所述终端上的监测应用程序基于所述待测应用程序的应用类型所属的统一资源定位符信息子集所确定的;
打包模块,用于将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包;所述动态链接库文件包括用于监测性能的监测函数;
发送模块,用于将所述目标安装包发生至所述终端,以使所述终端运行安装后的所述待测应用程序,并在所述待测应用程序的应用进程中加载安装后的所述目标安装包中的可执行文件和动态链接库文件;利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据;所述性能数据包括至少一项待测应用性能的性能统计信息和对应的时间信息。
11.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由所述处理器加载并执行以实现如权利要求1-5任一所述的应用程序的测试方法。
12.一种服务器,其特征在于,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由所述处理器加载并执行以实现如权利要求6-8任一所述的应用程序的测试方法。
13.一种存储介质,其特征在于,所述存储介质存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如权利要求1-8任一所述的应用程序的测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910624279.3A CN110362487B (zh) | 2019-07-11 | 2019-07-11 | 一种应用程序的测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910624279.3A CN110362487B (zh) | 2019-07-11 | 2019-07-11 | 一种应用程序的测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110362487A CN110362487A (zh) | 2019-10-22 |
CN110362487B true CN110362487B (zh) | 2024-05-10 |
Family
ID=68218782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910624279.3A Active CN110362487B (zh) | 2019-07-11 | 2019-07-11 | 一种应用程序的测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110362487B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111382076B (zh) * | 2020-03-10 | 2023-04-25 | 抖音视界有限公司 | 应用程序的测试方法、装置、电子设备及计算机存储介质 |
CN112052146A (zh) * | 2020-07-24 | 2020-12-08 | 北京奇艺世纪科技有限公司 | 页面帧率测试方法、应用的安装文件生成方法及装置 |
CN111984342B (zh) * | 2020-09-03 | 2023-04-07 | 科大讯飞股份有限公司 | 一种加载动态链接库的方法和相关装置 |
CN112905432A (zh) * | 2021-03-09 | 2021-06-04 | 北京大米科技有限公司 | 性能测试方法、装置、存储介质及终端 |
CN113094659B (zh) * | 2021-03-17 | 2022-10-21 | 青岛海尔科技有限公司 | 用于应用文件发布的方法、装置、平台设备及系统 |
CN113127374B (zh) * | 2021-05-19 | 2022-05-17 | 支付宝(杭州)信息技术有限公司 | 应用于iOS设备的应用程序测试方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104732147A (zh) * | 2015-04-13 | 2015-06-24 | 成都睿峰科技有限公司 | 一种应用程序处理方法 |
CN106055469A (zh) * | 2016-05-19 | 2016-10-26 | 中国科学院软件研究所 | 一种基于代码注入的移动端应用测试系统及方法 |
CN106126290A (zh) * | 2016-06-27 | 2016-11-16 | 微梦创科网络科技(中国)有限公司 | 应用程序优化方法、装置及系统 |
CN109240924A (zh) * | 2018-09-03 | 2019-01-18 | 中国平安人寿保险股份有限公司 | 一种应用程序的测试方法及设备 |
CN109471792A (zh) * | 2018-09-26 | 2019-03-15 | 深圳壹账通智能科技有限公司 | 测试控制方法及装置、电子设备、介质 |
-
2019
- 2019-07-11 CN CN201910624279.3A patent/CN110362487B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104732147A (zh) * | 2015-04-13 | 2015-06-24 | 成都睿峰科技有限公司 | 一种应用程序处理方法 |
CN106055469A (zh) * | 2016-05-19 | 2016-10-26 | 中国科学院软件研究所 | 一种基于代码注入的移动端应用测试系统及方法 |
CN106126290A (zh) * | 2016-06-27 | 2016-11-16 | 微梦创科网络科技(中国)有限公司 | 应用程序优化方法、装置及系统 |
CN109240924A (zh) * | 2018-09-03 | 2019-01-18 | 中国平安人寿保险股份有限公司 | 一种应用程序的测试方法及设备 |
CN109471792A (zh) * | 2018-09-26 | 2019-03-15 | 深圳壹账通智能科技有限公司 | 测试控制方法及装置、电子设备、介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110362487A (zh) | 2019-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110362487B (zh) | 一种应用程序的测试方法及装置 | |
US8887056B2 (en) | System and method for configuring cloud computing systems | |
JP6373840B2 (ja) | クラウドコンピューティングシステムをチューニングするためのシステム及び方法 | |
US9152532B2 (en) | System and method for configuring a cloud computing system with a synthetic test workload | |
US9658895B2 (en) | System and method for configuring boot-time parameters of nodes of a cloud computing system | |
CN111124850A (zh) | Mqtt服务器性能测试方法、系统、计算机设备及存储介质 | |
US20140047084A1 (en) | System and method for modifying a hardware configuration of a cloud computing system | |
US20140047095A1 (en) | System and method for tuning a cloud computing system | |
US20140047342A1 (en) | System and method for allocating a cluster of nodes for a cloud computing system based on hardware characteristics | |
CN108228444B (zh) | 一种测试方法和装置 | |
CN105164644A (zh) | 钩子框架 | |
CN108270837B (zh) | 一种利用闲置资源的分布式任务调度方法及系统 | |
CN108733553A (zh) | 基于docker的测试装置的配置方法、装置和系统 | |
US9170924B2 (en) | Ecosystem certification of a partner product | |
CN106095415A (zh) | 开发文件打包方法、装置及系统 | |
CN113672441B (zh) | 对智能设备的测试方法及装置 | |
CN112463588A (zh) | 一种自动化测试系统及方法、存储介质、计算设备 | |
CN109144846B (zh) | 用于测试服务器的测试方法和装置 | |
CN109873731B (zh) | 测试方法、装置和系统 | |
CN113885971A (zh) | 一种基于自适应平台系统的状态管理方法及装置 | |
US20130104178A1 (en) | Set top box resource allocation for executing a widget | |
CN110417597B (zh) | 用于监控证书的方法及装置、电子设备和可读存储介质 | |
CN114189439A (zh) | 一种自动扩容的方法及装置 | |
Tchana et al. | A self-scalable and auto-regulated request injection benchmarking tool for automatic saturation detection | |
CN112579447A (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 |