性能数据确定方法、装置、设备和可读存储介质与流程

文档序号:18600799发布日期:2019-09-03 22:37阅读:179来源:国知局
性能数据确定方法、装置、设备和可读存储介质与流程

本发明涉及数据处理技术领域,尤其涉及一种性能数据确定方法、装置、设备和可读存储介质。



背景技术:

在安卓应用程序开发测试过程中,由于安卓系统的文件读取权限的限制,只能通过谷歌公司提供的安卓监控(androidmonitor)工具来查看安卓应用程序的中央处理器(cpu,centralprocessingunit)、内存、流量等性能数据。然而,通过androidmonitor工具只能由人工进行实时数据的观察,无法进行数据收集和保存。



技术实现要素:

本发明实施例提供一种性能数据确定方法、装置、设备和可读存储介质,以解决现有技术中的一个或多个技术问题。

第一方面,本发明实施例提供了一种性能数据确定方法,应用于第一设备,所述第一设备连接第二设备,所述方法包括:

获取所述第二设备的待测应用程序的包名;

确定用于获取性能数据的安卓调试桥命令;

根据所述用于获取性能数据的安卓调试桥命令和所述待测应用程序的包名,确定所述待测应用程序的性能数据;所述性能数据包括中央处理器使用率数据、内存数据、流量数据、耗电量数据和温度数据中的至少一项。

在一种实施方式中,所述用于获取性能数据的安卓调试桥命令包括:用于获取中央处理器的使用时间的第一安卓调试桥命令和用于获取进程使用时间的第二安卓调试桥命令;

所述根据所述用于获取性能数据的安卓调试桥命令和所述待测应用程序的包名,确定所述待测应用程序的性能数据,包括:

根据所述第一安卓调试桥命令,确定待测时间段内中央处理器的总使用时间;

根据所述待测应用程序的包名,确定所述待测应用程序的进程标识符;根据所述第二安卓调试桥命令和所述进程标识符,确定用于获取所述待测应用程序的使用时间的第三安卓调试桥命令;根据所述第三安卓调试桥命令,确定待测时间段内所述待测应用程序的使用时间;

根据所述中央处理器的总使用时间和所述待测应用程序的使用时间,确定所述待测应用程序的中央处理器使用率数据。

在一种实施方式中,所述根据所述第一安卓调试桥命令,确定待测时间段内中央处理器的总使用时间,包括:

根据所述第一安卓调试桥命令,获取所述待测时间段内用户态的中央处理器时间、优先级为负的进程所占用的中央处理器的时间、核心时间、除硬盘输入输出等待时间以外其他等待时间、硬盘输入输出等待时间、硬中断时间和软中断时间;

计算所述获取的时间的总和,得到所述待测时间段内中央处理器的总使用时间。

在一种实施方式中,所述根据所述第三安卓调试桥命令,确定待测时间段内所述待测应用程序的使用时间,包括:

根据所述用于第三安卓调试桥命令,获取与所述待测应用程序对应的进程在用户态运行的时间、进程在核心态运行的时间、所有已死线程在用户态运行的时间和所有已死线程在核心态运行的时间;

计算所述获取的时间的总和,得到所述待测时间段内所述待测应用程序的使用时间。

在一种实施方式中,所述用于获取性能数据的安卓调试桥命令包括:用于获取进程内存数据的第四安卓调试桥命令;

所述根据所述用于获取性能数据的安卓调试桥命令和所述待测应用程序的包名,确定所述待测应用程序的性能数据,包括:

根据所述第四安卓调试桥命令和所述待测应用程序的包名,确定用于获取待测应用程序的内存数据的第五安卓调试桥命令;

根据所述第五安卓调试桥命令,确定所述待测应用程序的内存数据。

在一种实施方式中,所述用于获取性能数据的安卓调试桥命令包括:用于获取流量数据的第六安卓调试桥命令;

所述根据所述用于获取性能数据的安卓调试桥命令和所述待测应用程序的包名,确定所述待测应用程序的性能数据,包括:

根据所述待测应用程序的包名,确定所述待测应用程序的用户标识符;

根据所述第六安卓调试桥命令和所述用户标识符,确定用于获取待测应用程序的流量数据的第七安卓调试桥命令;

根据所述第七安卓调试桥命令,确定所述待测应用程序的流量数据。

在一种实施方式中,所述用于获取性能数据的安卓调试桥命令包括:用于清除历史耗电量数据的第八安卓调试桥命令、用于重置耗电量数据的第九安卓调试桥命令和用于获取耗电量数据的第十安卓调试桥命令;

所述根据所述用于获取性能数据的安卓调试桥命令和所述待测应用程序的包名,确定所述待测应用程序的性能数据,包括:

接收到耗电量测试初始化指令时,根据所述第八安卓调试桥命令,清除所述第二设备的电池历史耗电量数据;

根据所述第九安卓调试桥命令,重置所述第二设备的历史耗电量数据;

接收到耗电量测试结束指令时,根据所述第十安卓调试桥命令,获取所述第二设备的耗电量统计数据;

根据所述待测应用程序的包名,确定所述待测应用程序的用户标识符;

从所述第二设备的耗电量统计数据中,确定与所述用户标识符对应的耗电量数据,得到所述待测应用程序的耗电量数据。

在一种实施方式中,所述用于获取性能数据的安卓调试桥命令包括:用于获取温度数据的第十一安卓调试桥命令;

所述根据所述用于获取性能数据的安卓调试桥命令和所述待测应用程序的包名,确定所述待测应用程序的性能数据,包括:

访问所述第二设备的多个内核文件夹,确定包含中央处理器内核信息的内核文件夹所对应的编号;

根据所述编号和所述第十一安卓调试桥命令,确定用于获取所述编号对应的内核文件夹的温度数据的第十二安卓调试桥命令;

根据所述第十二安卓调试桥命令,确定所述待测应用程序的温度数据。

第二方面,本发明实施例提供了一种性能数据确定装置,应用于第一设备,所述第一设备连接第二设备,包括:

包名获取模块,用于获取所述第二设备的待测应用程序的包名;

安卓调试桥命令确定模块,用于确定用于获取性能数据的安卓调试桥命令;

性能数据确定模块,用于根据所述用于获取性能数据的安卓调试桥命令和所述待测应用程序的包名,确定所述待测应用程序的性能数据;所述性能数据包括中央处理器使用率数据、内存数据、流量数据、耗电量数据和温度数据中的至少一项。

在一种实施方式中,所述用于获取性能数据的安卓调试桥命令包括:用于获取中央处理器的使用时间的第一安卓调试桥命令和用于获取进程使用时间的第二安卓调试桥命令;

所述性能数据确定模块,包括:

中央处理器用时子模块,用于根据所述第一安卓调试桥命令,确定待测时间段内中央处理器的总使用时间;

应用程序用时子模块,用于根据所述待测应用程序的包名,确定所述待测应用程序的进程标识符;根据所述第二安卓调试桥命令和所述进程标识符,确定用于获取所述待测应用程序的使用时间的第三安卓调试桥命令;根据所述第三安卓调试桥命令,确定待测时间段内所述待测应用程序的使用时间;

中央处理器使用率子模块,用于中央处理器耗时子模块,用于根据所述中央处理器的总使用时间和所述待测应用程序的使用时间,确定所述待测应用程序的中央处理器使用率数据。

在一种实施方式中,所述中央处理器用时子模块,包括:

中央处理器时间获取单元,用于根据所述第一安卓调试桥命令,获取所述待测时间段内用户态的中央处理器时间、优先级为负的进程所占用的中央处理器的时间、核心时间、除硬盘输入输出等待时间以外其他等待时间、硬盘输入输出等待时间、硬中断时间和软中断时间;

总使用时间单元,用于计算所述获取的时间的总和,得到所述待测时间段内中央处理器的总使用时间。

在一种实施方式中,所述根据所述第三安卓调试桥命令,确定待测时间段内所述待测应用程序的使用时间,包括:

根据所述用于第三安卓调试桥命令,获取与所述待测应用程序对应的进程在用户态运行的时间、进程在核心态运行的时间、所有已死线程在用户态运行的时间和所有已死线程在核心态运行的时间;

计算所述获取的时间的总和,得到所述待测时间段内所述待测应用程序的使用时间。

在一种实施方式中,所述用于获取性能数据的安卓调试桥命令包括:用于获取进程内存数据的第四安卓调试桥命令;

所述性能数据确定模块包括:

第五安卓调试桥命令子模块,用于根据所述第四安卓调试桥命令和所述待测应用程序的包名,确定用于获取待测应用程序的内存数据的第五安卓调试桥命令;

内存数据子模块,用于根据所述第五安卓调试桥命令,确定所述待测应用程序的内存数据。

在一种实施方式中,所述用于获取性能数据的安卓调试桥命令包括:用于获取流量数据的第六安卓调试桥命令;

所述性能数据确定模块包括:

用户标识符子模块,用于根据所述待测应用程序的包名,确定所述待测应用程序的用户标识符;

第六安卓调试桥命令子模块,用于根据所述第六安卓调试桥命令和所述用户标识符,确定用于获取待测应用程序的流量数据的第七安卓调试桥命令;

流量数据子模块,用于根据所述第七安卓调试桥命令,确定所述待测应用程序的流量数据。

在一种实施方式中,所述用于获取性能数据的安卓调试桥命令包括:用于清除历史耗电量数据的第八安卓调试桥命令、用于重置耗电量数据的第九安卓调试桥命令和用于获取耗电量数据的第十安卓调试桥命令;

所述性能数据确定模块包括:

清除历史耗电量子模块,用于接收到耗电量测试初始化指令时,根据所述第八安卓调试桥命令,清除所述第二设备的电池历史耗电量数据;

重置历史耗电量数据子模块,用于根据所述第九安卓调试桥命令,重置所述第二设备的历史耗电量数据;

耗电量统计数据子模块,用于接收到耗电量测试结束指令时,根据所述第十安卓调试桥命令,获取所述第二设备的耗电量统计数据;

用户标识符子模块,用于根据所述待测应用程序的包名,确定所述待测应用程序的用户标识符;

应用程序耗电量子模块,用于从所述第二设备的耗电量统计数据中,确定与所述用户标识符对应的耗电量数据,得到所述待测应用程序的耗电量数据。

在一种实施方式中,所述用于获取性能数据的安卓调试桥命令包括:用于获取温度数据的第十一安卓调试桥命令;

所述性能数据确定模块包括:

编号子模块,用于访问所述第二设备的多个内核文件夹,确定包含中央处理器内核信息的内核文件夹所对应的编号;

第十二安卓调试桥命令子模块,用于根据所述编号和所述第十一安卓调试桥命令,确定用于获取所述编号对应的内核文件夹的温度数据的第十二安卓调试桥命令;

温度数据子模块,用于根据所述第十二安卓调试桥命令,确定所述待测应用程序的温度数据。

第三方面,本发明实施例提供了一种性能数据确定设备,所述性能数据确定设备的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。

在一个可能的设计中,所述性能数据确定设备的结构中包括处理器和存储器,所述存储器用于存储支持所述性能数据确定设备执行上述性能数据确定方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。所述性能数据确定设备还可以包括通信接口,用于与其他设备或通信网络通信。

第四方面,本发明实施例提供了一种计算机可读存储介质,用于存储性能数据确定设备所用的计算机软件指令,其包括用于执行上述性能数据确定方法所涉及的程序。

上述技术方案中的一个技术方案具有如下优点或有益效果:通过第一设备获取第二设备上的应用程序的性能数据,实现对性能数据的自主收集和监控,降低人工工作量。

上述概述仅仅是为了说明书的目的,并不意图以任何方式进行限制。除上述描述的示意性的方面、实施方式和特征之外,通过参考附图和以下的详细描述,本发明进一步的方面、实施方式和特征将会是容易明白的。

附图说明

在附图中,除非另外规定,否则贯穿多个附图相同的附图标记表示相同或相似的部件或元素。这些附图不一定是按照比例绘制的。应该理解,这些附图仅描绘了根据本发明公开的一些实施方式,而不应将其视为是对本发明范围的限制。

图1示出根据本发明实施例的性能数据确定方法的流程图;

图2示出根据本发明实施例的性能数据确定方法的步骤s3的第一种实施方式的流程图;

图3示出根据本发明实施例的性能数据确定方法的步骤s3的第二种实施方式的流程图;

图4示出根据本发明实施例的性能数据确定方法的步骤s3的第三种实施方式的流程图;

图5示出根据本发明实施例的性能数据确定方法的步骤s3的第四种实施方式的流程图;

图6示出根据本发明实施例的性能数据确定方法的步骤s3的第五种实施方式的流程图;

图7示出根据本发明实施例的性能数据确定装置的结构框图;

图8示出根据本发明实施例的性能数据确定装置的性能数据确定模块的第一种实施方式的结构框图;

图9示出根据本发明实施例的性能数据确定装置的性能数据确定模块的第二种实施方式的结构框图;

图10示出根据本发明实施例的性能数据确定装置的性能数据确定模块的第三种实施方式的结构框图;

图11示出根据本发明实施例的性能数据确定装置的性能数据确定模块的第四种实施方式的结构框图;

图12示出根据本发明实施例的性能数据确定装置的性能数据确定模块的第五种实施方式的结构框图;

图13示出根据本发明实施例的性能数据确定设备的结构框图。

具体实施方式

在下文中,仅简单地描述了某些示例性实施例。正如本领域技术人员可认识到的那样,在不脱离本发明的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。

图1示出根据本发明实施例的性能数据确定方法的流程图。本发明实施例,应用于第一设备,第一设备连接第二设备。如图1所示,该方法包括:

s1、获取第二设备的待测应用程序的包名;

s2、确定用于获取性能数据的安卓调试桥命令;

s3、根据用于获取性能数据的安卓调试桥命令和待测应用程序的包名,确定待测应用程序的性能数据;性能数据包括中央处理器使用率数据、内存数据、流量数据、耗电量数据和温度数据中的至少一项。

通过上述实施例,一方面可以避免安卓系统对系统文件的读取权限限制,另一方面,第一设备通过调用相关的安卓调试桥命令,获取第二设备的性能数据,可以实现对第二设备的性能监控和数据收集。尤其解决了长时间的测试过程中人工无法实时监控的问题,大大降低测试开发人员的工作量,且有利于测试开发人员根据性能数据及时发现问题,提高产品质量和用户体验。

需要说明的是,安卓调试桥(adb,androiddebugbridge)为用于操作管理安卓模拟器或者安卓设备的命令行工具。通过安卓调试桥执行相关的命令,可以实现对连接的安卓设备的管理,例如安装/卸载应用程序。

通常,安卓调试桥为一命令行窗口,在命令行窗口输入相关的命令,以实现对安卓设备的管理。

应用程序的包名是唯一的,只表示应用程序的安装包文件的名称。

在一种实施方式中,第一设备可以为计算机,例如台式电脑和笔记本。第二设备可以为智能移动设备,例如手机、平板电脑或智能手表。待测应用程序可以运行于第二设备上。

在一种实施方式中,第一设备连接第二设备的方式包括:有线连接或者无线连接,以实现数据传输。其中,有线连接通常选用通用串行总线(usb,universalserialbus)连接。

在一种实施方式中,当接收到对待测应用程序的测试指令时,触发步骤s1至步骤s3的执行。

本实施方式要求第二设备开启安卓调试桥服务。因此,在一种实施方式中,在步骤s1之前还包括步骤:判断第二设备是否已启动安卓调试桥服务,若否,则生成开启安卓调试桥服务提醒;若是,则可以继续执行步骤s1。

一种示例:根据用户获取设备标识符的安卓调试桥命令,例如,adbdevices判断是否获取到第二设备的设备标识符,若否,则第二设备未启动安卓调试桥服务,若是,则第二设备已启动安卓调试桥服务。

在一种示例中,步骤s1包括:根据用于获取第二设备运行的应用程序的安卓调试桥命令,获取第二设备的待测应用程序的包名。例如,在第二设备上运行待测应用程序,通过安卓调试桥执行命令adbshelldumpsyswindoww|findstr∨|findstrname=,根据执行命令后获取的数据,确定待测应用程序的包名。

在一种实施方式中,本实施例步骤s2所确定的用于获取性能数据的安卓调试桥命令用于读取安卓系统/proc目录下的文件的数据的安卓调试桥命令。步骤s3根据步骤s2确定的安卓调试桥命令,读取/proc目录下的文件的数据,并根据/proc目录下的文件的数据获取与待测应用程序相关的性能数据,可以避免安卓系统自身对/proc目录下的文件的读取权限的限制。

在一种实施方式中,步骤s2所确定的用于获取性能数据的安卓调试桥命令包括:用于获取中央处理器的使用时间的第一安卓调试桥命令和用于获取进程使用时间的第二安卓调试桥命令。

参见图2,对应的,步骤s3包括:

s201、根据第一安卓调试桥命令,确定待测时间段内中央处理器的总使用时间totalcputime。

s202、根据待测应用程序的包名,确定待测应用程序的进程标识符;根据第二安卓调试桥命令和进程标识符,确定用于获取待测应用程序的使用时间的第三安卓调试桥命令;根据第三安卓调试桥命令,确定待测时间段内待测应用程序的使用时间processcputime。

其中,进程标识符(pid,processidentification)是一个进程的基本属性。根据进程标识符,可以定位一个进程。一个进程标识符唯一对应一个进程,而多个进程标识符可以对应同一应用程序。

s203、根据中央处理器的总使用时间totalcputime和待测应用程序的使用时间processcputime,确定待测应用程序的中央处理器使用率数据processcpuratio。

在一种实施方式中,步骤s201,包括:

根据第一安卓调试桥命令,获取待测时间段内用户态的中央处理器时间user、优先级为负的进程所占用的中央处理器的时间nice、核心时间system、除硬盘输入输出等待时间以外其他等待时间idle、硬盘输入输出等待时间iowait、硬中断时间irq和软中断时间softirq。

计算获取的时间的总和,得到待测时间段内中央处理器的总使用时间totalcputime,即totalcputime=user+nice+system+idle+iowait+irq+softirq。

一种示例中,执行该第一安卓调试桥命令“adbshellcat/proc/stat”后获得第一数据,从第一数据的第一位置读取user、nice、system、idle、iowait、irq和softirq的数值并计算totalcputime。进一步的,第一位置为第一数据的第一行的第二列至第八列的数值,依次表示用户态的中央处理器时间user、优先级为负的进程所占用的中央处理器的时间nice、核心时间system、除硬盘输入输出等待时间以外其他等待时间idle、硬盘输入输出等待时间iowait、硬中断时间irq和软中断时间softirq。

例如,得到的第一数据的第一行为:cpu111581272700779550813934866530313320063000。

计算1115812、72700、795508、13934866、5303、133、20063、0、0和0的数值之和,得到中央处理器的总耗时。

在一种实施方式中,在得到得到待测时间段内中央处理器的总使用时间后,步骤s201还包括:根据待测时间段内中央处理器的总使用时间totalcputime和除硬盘输入输出等待时间以外其他等待时间idle,计算中央处理器使用率,中央处理器使用率=(totalcputime-idle)/totalcputime。

在一种实施方式中,步骤s202包括:

根据待测应用程序的包名和用于获取的待测应用程序的进程标识符的安卓调试桥命令“adbshellps|grep包名”,通过执行该命令得到的数据可以确定待测应用程序的进程标识符pid。假设得到进程标识符pid为2302。

根据第二安卓调试桥命令“adbshellcat/proc/pid/stat”和进程标识符2302,确定用于获取待测应用程序的使用时间的第三安卓调试桥命令“adbshellcat/proc/2030/stat”。

执行第三安卓调试桥命令“adbshellcat/proc/2030/stat”,得到第二数据。

从第二数据的第二位置读取数据,获取与待测应用程序对应的进程在用户态运行的时间utime、进程在核心态运行的时间stime、所有已死线程在用户态运行的时间cutime和所有已死线程在核心态运行的时间cstime。其中,第二位置为第一行的第一列、第十四列、第十五列、第十六列和第十七列,依次表示pid、utime、stime、cutime和cstime。

计算获取的时间的总和,得到待测时间段内待测应用程序的使用时间processcputime。即,processcputime=utime+stime+cutime+cstime。

在一种实施方式中,步骤s203,包括:

计算待测应用程序的使用时间processcputime和中央处理器的总使用时间totalcputime之比,确定待测应用程序的中央处理器使用率数据processcpuratio。即,processcpuratio=processcputime/totalcputime。

在一种实施方式中,步骤s2所确定的用于获取性能数据的安卓调试桥命令包括:用于获取进程内存数据的第四安卓调试桥命令和用于获取第二设备整体内存数据的第十三安卓调试桥命令。

参见图3,步骤s3包括:

s301、根据第四安卓调试桥命令和待测应用程序的包名,确定用于获取待测应用程序的内存数据的第五安卓调试桥命令。

s302、根据第五安卓调试桥命令,确定待测应用程序的内存数据。

s303、根据第十三安卓调试桥命令,确定第二设备的整体内存数据。

一种示例,s301、根据第四安卓调试桥命令“adbshelldumpsysmeminfo包名”和待测应用程序的包名,如“com.xxx.duersdk.speed”,得到第五安卓调试桥命令“adbshelldumpsysmeminfocom.xxx.duersdk.speed”。

一种示例,s302、通过执行第五安卓调试桥命令,得到第三数据。在第三数据的第三位置读取数据,获取待测应用程序的内存占用数据。第三位置为列名称为psstotal及行名称为total所对应的位置。

一种示例,s303、通过执行十二安卓调试桥命令“adbshellcat/proc/meminfo”,得到第四数据。在第四数据的第四位置读取数据,获取待测应用程序的内存占用数据memtotal。通常,第四位置为第一行的第二列。

在一种实施方式中,步骤s2所确定的用于获取性能数据的安卓调试桥命令包括:用于获取流量数据的第六安卓调试桥命令;

参见图4,步骤s3包括:

s401、根据待测应用程序的包名,确定待测应用程序的用户标识符(uid,useridentifier)。

用户标识符uid,表示用户的标识符,由于安卓系统为单用户系统,为了实现应用程序之间的数据共享,安卓系统为每个应用程序分配了不同的uid,使之成了数据共享的工具。

s402、根据第六安卓调试桥命令和用户标识符,确定用于获取待测应用程序的流量数据的第七安卓调试桥命令;

s403、根据第七安卓调试桥命令,确定待测应用程序的流量数据。

一种示例,s402、根据第六安卓调试桥命令“adbshellcat/proc/net/xt_qtaguid/stats|findstruid”(第六安卓调试命令未写入待测应用程序的用户标识符)和待测应用程序的用户标识符,例如10069,得到第七安卓调试桥命令“adbshellcat/proc/net/xt_qtaguid/stats|findstr10069”。

一种示例,s403、获取当前该uid总流量消耗:通过执行第七安卓调试桥命令,得到第五数据。在第五数据的第五位置读取数据,确定待测应用程序的流量数据。

进一步的,第五位置为第六列和第八列,第六列的数据为接收数据(rx_bytes),第八列的数据为传输数据(tx_bytes)。将第六列的数据和第八列的数据进行求和,得到当前的待测应用程序的流量数据。

在一种实施方式中,步骤s2所确定的用于获取性能数据的安卓调试桥命令包括:用于清除历史耗电量数据的第八安卓调试桥命令、用于重置耗电量数据的第九安卓调试桥命令和用于获取耗电量数据的第十安卓调试桥命令;

参见图5,步骤s3包括:

s501、接收到耗电量测试初始化指令时,根据第八安卓调试桥命令,清除第二设备的电池历史耗电量数据。

s502、根据第九安卓调试桥命令,重置第二设备的历史耗电量数据。

s503、接收到耗电量测试结束指令时,根据第十安卓调试桥命令,获取第二设备的耗电量统计数据。

s504、根据待测应用程序的包名,确定待测应用程序的用户标识符。

s505、从第二设备的耗电量统计数据中,确定与用户标识符对应的耗电量数据,得到待测应用程序的耗电量数据。

其中,在步骤s502完成重置后,要求第二设备无其它设备为其供电,避免耗电量测试结果产生干扰。示例,第一设备通过usb数据线连接第二设备,此时需要断开usb数据线连接后,再通过第二设备运行待测应用程序进行测试。耗电量测试结束后,第一设备再次通过usb数据线连接第二设备,然后执行步骤s503。

一种示例,s501、接收到耗电量测试初始化指令时,通过执行第八安卓调试桥命令“adbshelldumpsysbatterystats--enablefull-wake-history”,清除第二设备的电池历史耗电量数据。

一种示例,s502、通过执行第九安卓调试桥命令“adbshelldumpsysbatterystats-reset”,重置第二设备的历史耗电量数据。

一种示例,s503、接收到耗电量测试结束指令时,通过执行第十安卓调试桥命令“adbshelldumpsysbatterystats”,获取第二设备的耗电量统计数据。

一种示例,假设待测应用程序的用户标识符为u0a405。s505、从第二设备的耗电量统计数据中,确定与u0a405对应的耗电量数据为“uidu0a405:2.71(cpu=03861,wifi=1.85)”,因此得到待测应用程序的耗电量数据为“2.71(cpu=03861,wifi=1.85)”。

在一种实施方式中,步骤s2所确定的用于获取性能数据的安卓调试桥命令包括:用于获取温度数据的第十一安卓调试桥命令。

对应的,参见图6,步骤s3包括:

s601、访问第二设备的多个内核文件夹,确定包含中央处理器内核信息的内核文件夹所对应的编号;

s602、根据编号和第十一安卓调试桥命令,确定用于获取编号对应的内核文件夹的温度数据的第十二安卓调试桥命令;

s603、根据第十二安卓调试桥命令,确定待测应用程序的温度数据。

一种示例,第二设备中存储温度数据的路径为/sys/class/thermal/thermal_zone$i,其中,$i对应了第二设备的内核文件夹的编号,i∈[1,40],且i为整数。

步骤s601、依次访问编号$1到$40的内核文件,并判断每一编号的内核文件里是否包含了以上两种中央处理器的关键字。假设,确定编号为$30的内核文件夹里包含了以上两种中央处理器的关键字,则确定包含中央处理器内核信息的内核文件夹所对应的编号为$30。步骤s602、根据编号$30和第十一安卓调试桥命令“adbshellcat/sys/class/thermal/thermal_zone$i/temp”,确定第十二安卓调试桥命令“adbshellcat/sys/class/thermal/thermal_zone$30/temp”。步骤s603、根据第十二安卓调试桥命令,确定待测应用程序的温度数据。

需要注意的是,从第二设备的内核文件夹中存储的温度数据精确到小数点后3位,但是没有小数点,例如45300。因此在读取到温度数据后还需要进行转换,得到的最终温度数据为45.3℃。

在一种实施方式中,执行步骤s3后,还可以包括:

将待测应用程序的性能数据进行保存;

根据待测应用程序的性能数据,生成待测应用程序的性能测试报告。

在另一种实施方式中,执行步骤s3后,还可以包括:

获取预设的各项性能数据指标;

判断获取的性能数据是否符合对应的性能数据指标;

若存在至少一项性能数据不符合对应的性能指标,则生成性能不达标提醒,若所有性能指标均符合对应的性能数据指标,则生成测试正常的结果。

在另一种实施方式中,执行步骤s3后,还可以包括:

获取预设的各项性能数据指标;

根据获取的性能数据和对应的性能指标进行比对,获取各项性能数据的比对结果;

根据每一性能数据的比对结果,生成待测应用程序的性能测试报告。

图7所示为本发明实施例提供的性能数据确定装置的结构框图。该装置应用于第一设备,第一设备连接第二设备。参见图7,该装置包括:

包名获取模块71,用于获取第二设备的待测应用程序的包名;

安卓调试桥命令确定模块72,用于确定用于获取性能数据的安卓调试桥命令;

性能数据确定模块73,用于根据用于获取性能数据的安卓调试桥命令和待测应用程序的包名,确定待测应用程序的性能数据;性能数据包括中央处理器使用率数据、内存数据、流量数据、耗电量数据和温度数据中的至少一项。

在一种实施方式中,用于获取性能数据的安卓调试桥命令包括:用于获取中央处理器的使用时间的第一安卓调试桥命令和用于获取进程使用时间的第二安卓调试桥命令;

参见图8,性能数据确定模块73,包括:

中央处理器用时子模块801,用于根据第一安卓调试桥命令,确定待测时间段内中央处理器的总使用时间;

应用程序用时子模块802,用于根据待测应用程序的包名,确定待测应用程序的进程标识符;根据第二安卓调试桥命令和进程标识符,确定用于获取待测应用程序的使用时间的第三安卓调试桥命令;根据第三安卓调试桥命令,确定待测时间段内待测应用程序的使用时间;

中央处理器使用率子模块803,用于中央处理器耗时子模块,用于根据中央处理器的总使用时间和待测应用程序的使用时间,确定待测应用程序的中央处理器使用率数据。

在一种实施方式中,中央处理器用时子模块801,包括:

中央处理器时间获取单元,用于根据第一安卓调试桥命令,获取待测时间段内用户态的中央处理器时间、优先级为负的进程所占用的中央处理器的时间、核心时间、除硬盘输入输出等待时间以外其他等待时间、硬盘输入输出等待时间、硬中断时间和软中断时间;

总使用时间单元,用于计算获取的时间的总和,得到待测时间段内中央处理器的总使用时间。

在一种实施方式中,根据第三安卓调试桥命令,确定待测时间段内待测应用程序的使用时间,包括:

根据用于第三安卓调试桥命令,获取与待测应用程序对应的进程在用户态运行的时间、进程在核心态运行的时间、所有已死线程在用户态运行的时间和所有已死线程在核心态运行的时间;

计算获取的时间的总和,得到待测时间段内待测应用程序的使用时间。

在一种实施方式中,用于获取性能数据的安卓调试桥命令包括:用于获取进程内存数据的第四安卓调试桥命令;

参见图9,性能数据确定模块73包括:

第五安卓调试桥命令子模块901,用于根据第四安卓调试桥命令和待测应用程序的包名,确定用于获取待测应用程序的内存数据的第五安卓调试桥命令;

内存数据子模块902,用于根据第五安卓调试桥命令,确定待测应用程序的内存数据。

在一种实施方式中,用于获取性能数据的安卓调试桥命令包括:用于获取流量数据的第六安卓调试桥命令;

参见图10,性能数据确定模块73包括:

用户标识符子模块1001,用于根据待测应用程序的包名,确定待测应用程序的用户标识符;

第六安卓调试桥命令子模块1002,用于根据第六安卓调试桥命令和用户标识符,确定用于获取待测应用程序的流量数据的第七安卓调试桥命令;

流量数据子模块1003,用于根据第七安卓调试桥命令,确定待测应用程序的流量数据。

在一种实施方式中,用于获取性能数据的安卓调试桥命令包括:用于清除历史耗电量数据的第八安卓调试桥命令、用于重置耗电量数据的第九安卓调试桥命令和用于获取耗电量数据的第十安卓调试桥命令;

参见图11,性能数据确定模块73包括:

清除历史耗电量子模块1101,用于接收到耗电量测试初始化指令时,根据第八安卓调试桥命令,清除第二设备的电池历史耗电量数据;

重置历史耗电量数据子模块1102,用于根据第九安卓调试桥命令,重置第二设备的历史耗电量数据;

耗电量统计数据子模块1103,用于接收到耗电量测试结束指令时,根据第十安卓调试桥命令,获取第二设备的耗电量统计数据;

用户标识符子模块1104,用于根据待测应用程序的包名,确定待测应用程序的用户标识符;

应用程序耗电量子模块1105,用于从第二设备的耗电量统计数据中,确定与用户标识符对应的耗电量数据,得到待测应用程序的耗电量数据。

在一种实施方式中,用于获取性能数据的安卓调试桥命令包括:用于获取温度数据的第十一安卓调试桥命令;

参见图12,性能数据确定模块73包括:

编号子模块1201,用于访问第二设备的多个内核文件夹,确定包含中央处理器内核信息的内核文件夹所对应的编号;

第十二安卓调试桥命令子模块1202,用于根据编号和第十一安卓调试桥命令,确定用于获取编号对应的内核文件夹的温度数据的第十二安卓调试桥命令;

温度数据子模块1203,用于根据第十二安卓调试桥命令,确定待测应用程序的温度数据。

本发明实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。

图13示出根据本发明实施例的性能数据确定设备的结构框图。如图13所示,该性能数据确定设备包括:存储器910和处理器920,存储器910内存储有可在处理器920上运行的计算机程序。所述处理器920执行所述计算机程序时实现上述实施例中的性能数据确定设备。所述存储器910和处理器920的数量可以为一个或多个。

该性能数据确定设备还包括:

通信接口930,用于与外界设备进行通信,进行数据交互传输。

存储器910可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

如果存储器910、处理器920和通信接口930独立实现,则存储器910、处理器920和通信接口930可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(isa,industrystandardarchitecture)总线、外部设备互连(pci,peripheralcomponentinterconnect)总线或扩展工业标准体系结构(eisa,extendedindustrystandardarchitecture)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图13中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

可选的,在具体实现上,如果存储器910、处理器920及通信接口930集成在一块芯片上,则存储器910、处理器920及通信接口930可以通过内部接口完成相互间的通信。

本发明实施例提供了一种计算机可读存储介质,其存储有计算机程序,该程序被处理器执行时实现上述实施例中任一所述的方法。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。所述存储介质可以是只读存储器,磁盘或光盘等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1