怎样评价我们开发出来的应用是耗电还是不耗电,怎样測试?这就是我们今天讨论的主题——电量測试,一个在移动应用中新出现的測试类型。

作者简单介绍

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" align="middle" width="135" height="135" alt="">袁建发腾讯智能平台測试组专项測试专家。擅长高精尖的专项測试。喜欢捣腾各种硬件和仪器。

移动设备从之前的诺基亚、摩托罗拉等功能机到如今android、iOS等智能机。手机已经越来越普及,功能越来越丰富,但电池技术基本上却停滞不前。逐渐显现出功能机时代没有出现的续航短板,续航待机时间短一直是用户吐槽的焦点,而很多厂商也坦承电池成了制约手机发展的最大障碍之中的一个。手机的其它模块越来越小,而电池的体积越来越大,已经成为了一个不争的事实。早前的功能机电池容量基本都小于1000mAh,而如今手机电池容量3000mAh已经是标配了,但反而待机时间都不及之前功能机的三分之中的一个。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

为了提高电池的续航能力,那么须要硬件厂商减少元器件的单位功耗以及软件系统开发商提高对硬件使用的效率。那么对于APP开发人员来说,是不是就不用关心电量消耗了呢?显然不是,比如在anrdoid系统中。不恰当的使用wakelock锁、GPS定位等功能也将产生大量的电量消耗,那么怎样评价我们开发出来的应用是耗电还是不耗电,怎样測试?这就是我们今天讨论的主题——电量測试,一个在移动应用中新出现的測试类型。

1什么是电量測试


所谓的电量測试,就是測试移动设备电量消耗快慢的一种測试方法。通常是用平均电流(电池生产厂家一般都採用mAh来标记电池容量大小,平均电流越小。说明设备使用时间就越长)来衡量电量消耗速度。但平均电流多大才干说明不耗电?其实业界并没有统一的标准。眼下我们(腾讯智能平台測试团队,下同)通用的做法就是通过场景来定义一个平均电流经验值,比如无网络待机下平均电流要小于10mA。下表给出一个常见场景下參考的平均电流值:

从上表能够得知(因iOS可測性不高,上面数据都是在android平台下測试的数据。下同),待机下平均电流和非待机平均电流区别是很大的,最少一个数量级。

所以在我们实际应用开发过程中因为API的错误使用导致CPU一直工作无法休眠。将消耗大量的电量,电量測试的目的就是要測试出这样的可能出现的场景,解决因错误使用API、网络操作处理不合理或者代码编写不规范等导致异常耗电的情况。

2电量測试的方法


上面了解电量測试的一些基本知识概念后,可能有同学要问。怎么測试电量呢?眼下有2种方法能够測试电量,硬件測试法和软件測试法。硬件測试法就是利用硬件设备測试被測设备(比如可拆卸电池的android手机)的电流。统计一段时间内的平均电流值。

硬件測试仪器包含稳压电源,能够实时读取电流的电流仪器以及个人PC电脑(也有稳压电源和电流仪器为一体的电流仪设备。这样的设备较贵)。例如以下图所看到的:

眼下我们採取的电流仪为自己制作的仪器“电量宝”(考虑成本低的因素,且实时处理数据可控),逻辑电路接线图例如以下所看到的:

“电量宝”主要功能实现被測对象电流实时读取。并输出实时曲线图,记录原始电流和电压数据。例如以下实物图所看到的(实物图比較丑陋,芯片、电池处理等比較原始,但比較有用。各位看官不要嘲笑哈。我们不是富二代):

实物图说明:

1)电源:电源是通过原始的电池作为电源供电,也能够选择稳压电源(原始电池省钱,更接近用户场景,缺陷是不稳定,没有稳压电源稳定);

2)电量宝芯片:USB线5V电压作为芯片工作的电压,同一时候通过串口通讯来读取数据;

3)被測对象手机:手机须要取下电池,通过导线正负极和“电量宝”相连。

各个硬件模块功能了解清楚后。在硬件測试过程中另一些事项须要特别注意,第一个就是电压的问题。假设使用电池供电,尽量保证电池满电下開始測试(因有外部接线干扰,会分压。导致手机实际电压不足);假设使用稳压电源,因不同手机对电压敏感程度不同。所以会导致手机开机须要的电压不同(。能够依据实际调整,一般在4.0V~4.5V左右,电压值选择不对,会导致手机无法开机或者开机后不稳定,循环重新启动等问题。严重情况会损坏手机)。第二个就是连接的导线问题,纯铜导线和劣质的非纯铜导线或者铝导线。电阻有明显差异(电流波动较大),这样会对被測手机有较大影响。因手机对电流是很敏感的,电流忽大忽小将导致手机不稳定,很影响測试效率,第三个就是接线正负极的问题。手机端正负极和电源端正负极一定要相应上,接反有可能损坏手机。手机端正负极触片较小。须要购买特殊夹子才干使用,图下图所看到的:

准备工作搞定了之后,就能够通过串口实时读取电流数据了,记录原始数据。就能够计算平均电流值了。例如以下图就是实时採集手机(GT-I9500)开机过程中实时电流曲线图,平均电流值为480mA:

第二种方法就是软件測试法,比如android4.1以上版本号系统设置中提供了电量消耗的统计(也有第三方的统计软件比如电池医生等类似应用),模拟计算应用APP的耗电,这样的方法一般用来分析APP耗电,不作为平均电流值的基准值,能够详细到APP进程级别。能分别统计到APP的CPU使用时间、wakelock锁时间、网络传输的数据、GPS时间等(当中部分选项须要扩展android源代码settings
App才干获取到。默认情况下部分信息无法获取)。下图为我们自己编译android源代码实现的电量统计APP耗电的信息:

也能够通过android系统本身自带的adb调试命令来获取电量信息。命令例如以下:

adb shell dumpsys batterystats/batteryinfo

android4.4及以上为电池统计服务为batterystats。4.4下面为batteryinfo。命令获取的结果分2部分,一部分是系统总体耗电信息,例如以下图所看到的:

另外一部分是各个进程的耗电信息。例如以下图所看到的:

依据上面介绍后。再进行电量測试就easy得多了。

首先明白被測场景,然后使用硬件仪器測试被測硬件(比如手机)的平均电流,统计数据并分析该场景下是否耗电,然后使用软件工具统计具体信息,比如CPU使用情况、WIFI/蜂窝网络数据传输、GPS、蓝牙使用情况等,推断可能耗电的地方,优化,再測试,再分析,直到被測对象平均电流低于预期值。那么本篇文章大致内容介绍完成,下一篇文章将具体介绍电量測试的硬件和软件測试的细节、实战解说等内容。敬请期待。

本文系腾讯Bugly特邀文章,转载请注明作者和出处“腾讯Bugly(http://bugly.qq.com)”

鹅厂揭秘——高端大气的App电量測试的更多相关文章

  1. Android特效专辑(十一)——仿水波纹流量球进度条控制器,实现高端大气的主流特效

    Android特效专辑(十一)--仿水波纹流球进度条控制器,实现高端大气的主流特效 今天看到一个效果挺不错的,就模仿了下来,加上了一些自己想要的效果,感觉还不错的样子,所以就分享出来了,话不多说,上图 ...

  2. 【干货】教你如何利用fullPage.js以及move.js插件打造高端大气的网站效果!

    前言: 如今我们经常能见到全屏网站,尤其是国外网站.这些网站用几幅很大的图片或色块做背景,再添加一些简单的内容,显得格外的高端大气上档次. 在学习过jQuery插件之后,才发现之前的很多网站特效完全可 ...

  3. APP 打包測试流程 从零開始

    前言: 苹果应用打包測试一直是件令人头疼的事.尤其是第一次打包的时候,因为苹果官网是全英文性且缺少仔细的步骤指引.刚開始学习的人往往要花费非常多时间去干一件三分钟就能搞定的事. 今天我们来透彻的解说一 ...

  4. APP压力測试新手教程

    Daniel Knott 用过各种不同编程语言和软件质量保证工具.他在软件开发和測试方面干了七年,自2010年,他一直在德国汉堡的XING AG公司就职,几个项目里,比方XING调查和XING建议,他 ...

  5. HTML5动画图片播放器 高端大气

    我们见过很多图片播放插件(焦点图),很多都基于jQuery.今天介绍的HTML5图片播放器很特别,它不仅在图片间切换有过渡动画效果,而且在切换时图片中的元素也将出现动画效果,比如图中的文字移动.打散. ...

  6. Android App性能測试

    一.内存 1.查看单个应用App最大内存限制 Command:adb shell "getprop|grep heapgrowthlimit" C:\Users\hujiachun ...

  7. 用python做自己主动化測试--对server端的自己主动化測试(3)-很多其它http client实例

    上一篇中仅仅是实现了一个非常easy的http client功能,request还提供了keep alive, SSL, 多文件上传,cookie 管理功能,http requests头管理等丰富的功 ...

  8. 移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践

    这篇是计算机类的优质预售推荐>>>><移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践> 国内顶级互联网公司測试实战经验总结.阿里.腾讯.京东.携程.百 ...

  9. Android測试APP工具(一)

    近期面试APP开发者的时候,遇到了技术总监问 APP測试的概念性问题.后面感觉主要的项目流程.项目逻辑.屏幕适配. 測试是全然没有问题的.可是对于APP的性能測试.压力測试等高端的測试.还是存在着美中 ...

随机推荐

  1. PhoneGap 3.0 安装

    PhoneGap 3.0  已经出来有一段时间了.3.0 提供了使用Node.js 安装,使用命令行创建.编译.运行项目.也就是可以抛弃eclipse,完全使用命令.记事本开发phonegap 项目了 ...

  2. TCP编程的一个小例子

    TCP程序的服务器端与客户端的流程图 例子:服务器端等待客户端连接,若连接成功,则用户可以通过客户端向服务器端发送任意字符串,服务器端在收到字符串后,输出相关信息,在把接受到的字符串重新发生给客户端. ...

  3. 变脸不变质的桥梁模式(Bridge Pattern)

    有一哥们是搞山寨货的,什么流行就搞什么.自己有个厂子,前些时间服装挣钱,就生产衣服,如今搞手机挣钱,搞手机,这哥们非常聪明,就换了个产品,工人,厂房都不变.他是怎么做到的?用类图来模拟一下: 由类图能 ...

  4. [置顶] js综合应用:表格的四则运算

    在做调查问卷的过程中,遇到一个表格的统计问题,算是需要些js方面的综合知识,所以记录下来. 在上次完成了基本的求和的基础上,添加了基本的加减乘除四则运算. 基本需求简化后如下: 对应的htm了为: & ...

  5. Android中的一些基础知识(二)

    这几天在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看. 简单介绍一下Activity的生命周期 在API文档中对生命周期回调的函数描述的很详细,这里我只是翻译 ...

  6. [翻译]Orchard-修改首页布局

    前言 Orchard在你的站点应用的默认主题叫做”Theme Machine”.该主题包括CSS样式和一个布局框架. Orchard 允许你选择或排除显示在你站点每个页面的布局. 默认情况下下图中蓝色 ...

  7. mac下面xcode+ndk7配置cocos2dx & box2d的跨ios和android平台的游戏教程

    这篇教程是介绍如何使用cocos2d-x和box2d来制作一个demo,且此demo能同时运行于ios和android平台.在继续阅读之前,建议您先阅读上一篇教程. 首先,按照上一篇教程,搭建好mac ...

  8. Lowest Common Multiple Plus

    Lowest Common Multiple Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...

  9. STL中copy算法

    STL中通过使用copy函数以提供一种方便的方式来输出容器中的元素.函数copy作为泛型算法的一部分,任何容器类型都可以使用.由于我们需要频繁的初始容器的元素,因此在继续讨论容器之前,先学习一下cop ...

  10. .NET中DLL“没有可放置在工具箱的组件”—FreeTextBox

    主要针对在VS2012.VS2013的工具箱中,通过“选择项”添加自定义的Dll,如.NET类型时,出现“没有可放置在工具箱的组件”问题的常见解决方案.例如在线编辑工具:FreeTextBox 解决方 ...