一种基于物理实测的移动端app加载能耗自动测量方法

文档序号:9727237阅读:459来源:国知局
一种基于物理实测的移动端app加载能耗自动测量方法
【技术领域】
[0001]本发明是一种基于物理实测的移动端APP加载能耗自动测试方法,属于软件分析技术领域。
【背景技术】
[0002]《第31次中国互联网络发展状况统计报表》显示:手机已经成为了第一大上网终端,使用手机上网的网民数量占整体网民数量的74.5%。而且随着用户体验在移动Web开发中越来越受到开发者的关注,网页在手机上的加载时间和加载所需电量也受到了开发者的重视。对于一个移动Web,加载时间过长会导致用户等待时间过长,导致用户使用体验较差;加载消耗电量过多会导致手机电池损耗过快,进而导致手机过热等问题,同样不利于提升用户体验。因此,移动Web的加载电量以及加载时间需要开发者的关注。
[0003]对于加载时间,现有方案一般是直接计算HTTP请求开始到浏览器渲染完成的时间。例如,在浏览器中输入URL之后开始计时,直到整个页面不再变化停止计时。这样的估计方式将电量加载过程中的所有步骤都考虑在内,在对实验结果要求不是非常精细的时候是一个可以接受的测量方案。对于加载耗费的电量,现有方案是利用安卓系统提供的电量监测接口,或者使用电量模型估算。安卓系统提供的接口可以大致估算出电量的使用情况,很多电池管理软件正是基于这些接口。电量模型则是在硬件和软件的不同层次建立电量模型,再由电量模型估算出电量消耗。上述两种计算加载电量的方法都是基于软件模拟,在计算移动Web加载电量这种精度要求比较高的任务中不能完全胜任。
[0004]针对上述问题,对于时间测量,更好的办法是从浏览器底层接口获得时间。一个移动Web的加载过程中可能会包含多个HTTP请求,由浏览器底层接口获得的细粒度时间可以将这些不同的请求过程中的细节一一展现出来,这样就可以对加载过程进行细致分析。对于电量测量,最直接准确的解决方案是采用物理测试的方法,结合由浏览器底层接口获得的细粒度时间,可以进一步细化加载过程中的电量消耗。但是,即便在技术上实现了上面的方法,但这样的工具并不具有可推广性,因为对于大部分开发者而言,物理测量能耗的机器价格昂贵,学习成本过高。

【发明内容】

[0005]针对现有技术中存在的问题,本发明的目的是提供一种基于物理实测的移动端APP加载能耗自动测量方法。其核心思想为:利用浏览器底层接口以及专用电表对移动Web的加载时间和加载电量进行测量和计算。本发明中移动Web应用包括利用Web技术实现(如WebKit)的APP和在浏览器上的网页应用。
[0006]本发明的技术方案为:
[0007]—种基于物理实测的移动端Web加载能耗自动测量方法,其步骤为:
[0008]I)移动Web开发者将指定的移动端Web和移动端机型输入到我们提供的Web页面中,这些数据被传送到后台服务器上;
[0009]2)服务器将该移动端Web传送到指定的实验机型上运行的浏览器中进行加载,并启动PowerTool电表开始测量;
[0010]3)经过一段时间,移动端Web在手机上加载完成,服务器控制电表结束测量,并将所有相关数据取回处理;
[0011]4)所有数据处理完毕之后,按照一定格式将结果返回网页,呈现给开发者。
[0012]进一步的,为了精确获取加载时间的开始和结束时间点,需要基于当前开源的浏览器Chromium:修改其底层的网络请求模块、页面清染模块的和js引擎的代码,在一些特定的函数入口和结束点添加Log日志(例如发送网络请求前打印该请求url和时间戳,在返回资源时的回调函数里打印该资源的url和时间戳),这些日志会被存入专门的内存缓冲区中,最后输出到指定的文件里。这样我们就可以获取每一个网络资源(包括html,js,css和图片等)的请求和接收时间,以及计算时间(js执行,图形绘制等)。基于这些信息,我们可以通过解析日志里的内容,获取细粒度的页面加载过程及其中的时间戳。这与当前的一些公知的技术不同:通常现在的技术依赖于Android提供WebView的相关接口来获取加载时间点,或者通过高速摄像机来人为地确定加载时间点。前者的问题在于WebView模块本身性能较差,相比Chromium缺少许多技术支持,其实验结果不具有现实意义;后者则需要大量的人力,无法以自动化测试服务的方式开放给开发者。
[0013]进一步的,由于电表和手机使用不同的计时系统,为获得准确的电量消耗,需要同步手机和电表所连计算机的时间,即在受控的网络环境下让手机给计算机发送TCP请求,接收返回,分析包中记录下的手机和计算机端的时间戳,即可获得两者的时间差。
[0014]进一步的,这个工具链将以移动服务的方式开放给开发者,使得移动Web开发者不需要任何硬件支持,只需要访问特定的网页,输入特定的URL和机型,即可获得在该机型上加载这个Web页面的时间和电量消耗。
[0015]本发明包含六个关键构件,分别是用户接口,缓存自动更新,核心控制逻辑,数据处理模块,电表控制模块以及手机控制模块。每个模块需要完成的功能介绍如下。
[0016]1.用户接口模块。本模块的主要任务是与用户交互,包括获得待测URL(移动端Web)和机型以及展示结果。整个工具的输入非常简单,只需要一个待测URL,以及一个特定的机型;输出则包含分析结果,根据需要的分析精度展示相应结果。
[0017]由于测量一个Web页面需要一定的时间,而我们所购置的实验机和测量电表有限,因此在同时有多个用户请求的时候可能需要进行多用户调度。最简单的是先到先测的方式,即如果一个用户请求的机型没有闲置,已经被占用,则需要等待前面队列中的URL都被测量完毕。这样的策略保证了一定的公平性。
[0018]—种更为有效的方式,是采用缓存的机制:每次用户请求URL和机型进行测量时,都将这些信息和测量结果记录在缓存中,这样当有其他用户请求相同的URL和机型时,即可直接返回之前测量得到的数据,无需占用手机和电表重新测量。这种策略的问题在于:许多Web页面是动态的,不同时间点所包含的内容可能有所区别。
[0019]2.缓存自动更新模块。针对上面提到的动态页面的问题,该模块会在电表闲置的时间段,对缓存中的条目(包括URL和机型)进行自动更新。即模拟用户输入请求,跳过当前缓存进行实际测量,并将测量的结果在缓存中更新。对条目的更新只会发生在当前时间与上次更新时间的间隔大于某一个阈值时发生,同样的,真实用户请求时如果时间间隔大于该阈值,即便缓存中存在匹配的条目,也会进行实际测量,保证结果的准确性和时效性。
[0020]3.电表控制模块。本模块的主要功能是控制电表的开关,电量文件的获取。电表通常会拥有一些编程接口,可以通过程序的方式自动控制电表何时开始以及何时停止测量。电表运行中会将测
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1