CN110362487A - 一种应用程序的测试方法及装置 - Google Patents
一种应用程序的测试方法及装置 Download PDFInfo
- Publication number
- CN110362487A CN110362487A CN201910624279.3A CN201910624279A CN110362487A CN 110362487 A CN110362487 A CN 110362487A CN 201910624279 A CN201910624279 A CN 201910624279A CN 110362487 A CN110362487 A CN 110362487A
- Authority
- CN
- China
- Prior art keywords
- measured
- application program
- application
- performance
- file
- 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.)
- Granted
Links
- 238000010998 test method Methods 0.000 title claims abstract description 33
- 238000009434 installation Methods 0.000 claims abstract description 122
- 238000000034 method Methods 0.000 claims abstract description 96
- 238000012544 monitoring process Methods 0.000 claims abstract description 85
- 230000008569 process Effects 0.000 claims abstract description 46
- 238000012360 testing method Methods 0.000 claims abstract description 34
- 238000011056 performance test Methods 0.000 claims abstract description 27
- 238000010009 beating Methods 0.000 claims description 18
- 230000002123 temporal effect Effects 0.000 claims description 18
- 230000005540 biological transmission Effects 0.000 claims description 6
- 230000006837 decompression Effects 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 5
- 238000012986 modification Methods 0.000 claims description 3
- 230000004048 modification Effects 0.000 claims description 3
- 241000208340 Araliaceae Species 0.000 claims description 2
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 claims description 2
- 235000003140 Panax quinquefolius Nutrition 0.000 claims description 2
- 235000008434 ginseng Nutrition 0.000 claims description 2
- 230000006870 function Effects 0.000 description 74
- 230000015654 memory Effects 0.000 description 33
- 238000010586 diagram Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 5
- 230000008520 organization Effects 0.000 description 4
- 238000000547 structure data Methods 0.000 description 4
- 244000035744 Hura crepitans Species 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000011017 operating method Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012857 repacking Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000243 solution Substances 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 (10)
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应用程序;
打包模块,用于将所述统一资源定位符信息、动态链接库文件和所述待测应用程序的安装包进行重打包,得到所述待测应用程序对应的目标安装包;所述动态链接库文件包括用于监测性能的监测函数;
发送模块,用于将所述目标安装包发生至所述终端,以使所述终端运行安装后的所述待测应用程序,并在所述待测应用程序的应用进程中加载安装后的所述目标安装包中的可执行文件和动态链接库文件;利用加载的动态链接库文件中的监测函数,监测所述可执行文件在运行过程的性能数据;所述性能数据包括至少一项待测应用性能的性能统计信息和对应的时间信息。
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 true CN110362487A (zh) | 2019-10-22 |
CN110362487B 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) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111382076A (zh) * | 2020-03-10 | 2020-07-07 | 北京字节跳动网络技术有限公司 | 应用程序的测试方法、装置、电子设备及计算机存储介质 |
CN111984342A (zh) * | 2020-09-03 | 2020-11-24 | 科大讯飞股份有限公司 | 一种加载动态链接库的方法和相关装置 |
CN112052146A (zh) * | 2020-07-24 | 2020-12-08 | 北京奇艺世纪科技有限公司 | 页面帧率测试方法、应用的安装文件生成方法及装置 |
CN112905432A (zh) * | 2021-03-09 | 2021-06-04 | 北京大米科技有限公司 | 性能测试方法、装置、存储介质及终端 |
CN113094659A (zh) * | 2021-03-17 | 2021-07-09 | 青岛海尔科技有限公司 | 用于应用文件发布的方法、装置、平台设备及*** |
CN113127374A (zh) * | 2021-05-19 | 2021-07-16 | 支付宝(杭州)信息技术有限公司 | 应用于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 | 深圳壹账通智能科技有限公司 | 测试控制方法及装置、电子设备、介质 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111382076A (zh) * | 2020-03-10 | 2020-07-07 | 北京字节跳动网络技术有限公司 | 应用程序的测试方法、装置、电子设备及计算机存储介质 |
CN111382076B (zh) * | 2020-03-10 | 2023-04-25 | 抖音视界有限公司 | 应用程序的测试方法、装置、电子设备及计算机存储介质 |
CN112052146A (zh) * | 2020-07-24 | 2020-12-08 | 北京奇艺世纪科技有限公司 | 页面帧率测试方法、应用的安装文件生成方法及装置 |
CN111984342A (zh) * | 2020-09-03 | 2020-11-24 | 科大讯飞股份有限公司 | 一种加载动态链接库的方法和相关装置 |
CN111984342B (zh) * | 2020-09-03 | 2023-04-07 | 科大讯飞股份有限公司 | 一种加载动态链接库的方法和相关装置 |
CN112905432A (zh) * | 2021-03-09 | 2021-06-04 | 北京大米科技有限公司 | 性能测试方法、装置、存储介质及终端 |
CN113094659A (zh) * | 2021-03-17 | 2021-07-09 | 青岛海尔科技有限公司 | 用于应用文件发布的方法、装置、平台设备及*** |
CN113127374A (zh) * | 2021-05-19 | 2021-07-16 | 支付宝(杭州)信息技术有限公司 | 应用于iOS设备的应用程序测试方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110362487B (zh) | 2024-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110362487A (zh) | 一种应用程序的测试方法及装置 | |
CN106776280B (zh) | 可配置性能测试装置 | |
US8762113B2 (en) | Method and apparatus for load testing online server systems | |
CN103927255B (zh) | 基于云测试***的软件测试方法、云测试***及其客户端 | |
CN105450476B (zh) | 一种回归测试***及测试方法 | |
US10482001B2 (en) | Automated dynamic test case generation | |
CN103778038B (zh) | 云端测试及远端监控集成电路装置的验证的方法及其*** | |
US9823991B2 (en) | Concurrent workload simulation for application performance testing | |
CN105302706B (zh) | 应用程序测试方法和装置 | |
CN108958992A (zh) | 测试方法和装置 | |
CN110362474A (zh) | 一种分布式游戏测试方法、***、装置及存储介质 | |
CN108400902A (zh) | 一种灰度测试的方法、装置及设备 | |
CN104199764A (zh) | 终端性能的测试方法及装置 | |
CN112463588A (zh) | 一种自动化测试***及方法、存储介质、计算设备 | |
CN110007921A (zh) | 一种代码发布方法及装置 | |
Bahga et al. | Performance evaluation approach for multi-tier cloud applications | |
CN108052444A (zh) | 一种用于移动应用的性能测试的方法与装置 | |
US10235266B2 (en) | Application screen mapping for mobile analytics | |
CN109062799A (zh) | 广告场景的回归测试方法、装置及*** | |
CN109739704A (zh) | 一种接口测试方法、服务端及计算机可读存储介质 | |
CN113849356A (zh) | 一种设备测试方法、装置、电子设备和存储介质 | |
CN110752964B (zh) | 一种网络设备的测试方法及装置 | |
CN108875368A (zh) | 一种安全检测方法、装置及*** | |
CN109656825A (zh) | 美术资源处理的方法及装置、电子设备、存储介质 | |
Chai et al. | Modeling distributed platforms from application traces for realistic file transfer simulation |
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 |