资讯点评 耗电量自动化测试

恒温 · 2012年11月09日 · 最后由 Mingway_Hu 回复于 2014年01月26日 · 3026 次阅读

Link http://qa.baidu.com/blog/?p=942

 
1.简介
 
耗电量测试背景
 
    耗电量测试是手机测试中必不可少的一项,当前的手机耗电量测试主要为手工测试,随着手机产品线的增多,人力的投入非常大。为解决多产品线耗电量测试耗费的大量人力及时间成本,采用了自动化测试方案,完成测试用例的自动选择和组合,并自动产生数据记录、分析以及生成报告,大大减少了测试的人力成本,提高了测试效率。
 
工具应用场景
 
本工具适用于:
1) 手机系统快速迭代,产品数量急速增加,由此带来的耗电量测试需求旺盛、周
期快和测试人力资源短缺的环境。
2) 手机产品周期性的耗电量测试需求。
 

  1. 测试环境搭建       PC 与测试仪使用 USB 连接,PC 控制测试仪进行电流输出并采集测试数据及波形图;待测手机不安装电池,由 Agilent 测试仪进行供电并记录手机的工作电流;手机与 PC 间并无连接,通过预设的时间戳完成操作间严格同步。设备连接图如下:

 

  1. 实现原理       耗电量自动化测试工具由手机端和 PC 端两部分组成,PC 端和手机端同步运行。手机端使用 Café自动化测试框架,对不同测试 CASE 进行测试环境的设置和清理。PC 端负责与设备连接,记录测试数据并保存,测试完毕后分析测试结果并自动生成报告。流程图如下:

 
注:Cafe 测试框架是一款具有开创性意义的 Android 平台的自动化测试框架,框架覆盖了 Android 自动化测试的各种需求。框架致力于实现跨进程测试、快速测试、深度测试,解决了 Android 自动化测试中的诸多难题,比如业界一直没有解决的跨进程测试问题
 

  1. 问题与实现细节   如何模拟 CPU 睡眠 1) 手动测试耗电量通过按下 power 键,等待 5 秒的方式来使 CPU 睡眠,测试此时电流是否符合 CPU 睡眠时的电流,由此可以判断 CPU 是否处于睡眠状态。 2) 如何用程序模拟 CPU 睡眠?我们知道,CPU 处于睡眠状态,程序无法运行,即如何通过程序在 CPU 睡眠之后,到达一定时间后,将其唤醒。   解决方案: 1) 若严格模拟手工测试,保持程序持续运行,CPU 无法处于睡眠状态,无法模拟真实的手机待机环境 2) 通过对 android 源码中闹钟的研究,采用闹钟机制,定时唤醒 CPU,从而保证了整个自动化耗电量测试的测试过程中,CPU 能够正常睡眠。(真正模拟了手工测试时的环境)   CPU 睡眠判断问题 1) 测试用例正常执行的时候,CPU 睡眠时,程序停止运行,CPU 被定时器唤醒后代码继续执行 2) 测试用例异常执行的时候,所引起的 CPU 没有正常进入睡眠状态,程序不会停止运行,此时一条测试用例很快执行完毕。 3) 由于 CPU 没有睡眠,异常执行结果显示 fail,测试用例进入下一条继续执行,从而打乱其他测试用例的执行时间,出现一条测试用例 fail,后续测试用例全部 fail 的情况。   解决方案: 1) 通过对 CPU 睡眠前后的时间的判断来确定当前测试用例运行情况,若此时间符合 CPU 睡眠后的时间值,则判断用例执行正常 2) 若此时间小于一定的时间值,则可直接判定 CPU 没有睡眠,程序提前跑到了此时间断点,用例执行失败 3) 针对失败的用例,获取 CPU wake_lock,补充睡眠时间,使本来失败的用例运行之间符合成功用例所用时间,从而解除了测试用例之间的耦合   同步问题 1) 耗电量测试,手机供电由测试仪器提供,无法通过 USB 将手机连接至电脑(USB 连接会产生充电效果),故手机无法与 PC 通信,PC 端无法获知测试用例的执行情况 2) 耗电量测量由 PC 端与电流测试供电器连接,通过供电器测试到的电路结果反馈给 PC 端,PC 端进行相应输出结果,这个过程中,手机和 PC 无法通过 USB 连接来通信,导致难以同步。   解决方案: 1) 使用时间戳的方式来同步,对于每一个测试用例设置一个严格的测试时间, 2) 测试用例的测试阶段分为设置环境时间,测试时间及缓冲时间,通过对时间戳的严格把控,实现了无通信状态下的同步。   功耗测试设备连接 1) 设备只提供了简单的操作和记录,无法对测试用例进行自动控制及数据记录。 2) 设备无法自行生成测试报告   解决方案: 1) 通过调用 COM 组件,获取相应操作的接口,实现对设备的控制 2) 从 EXCEL 中读取测试需要的测试用例的相关信息,再配置对应的参数,控制设备进行测量,记录,波形保存等 3) 与历史数据进行对比,进行分析并生成报告。  
  2. 创新点       打通耗电量测试的自动化全流程,形成一套完整的自动化工作流,节省大量的人力成本。目前尚未听说其他公司的耗电量测试有实现自动化。       通过代码,实现了 CPU 睡眠,唤醒等操作,并且通过对时间的判断,确定 case 的执行结果是否有效,从而解决了电流测试自动化的难题,真正的做到模拟了手工测试时的环境。       在手机和 PC 端不同通信的情况下,通过对时间戳的控制,达到了测试 CASE 运行与 PC 段耗电量数据记录的准确同步(误差会在每次 CASE 结束的时候得到纠正,从而使得测试 CASE 的时间很准确)。       能够在 PC 端实现对测试结果的记录和分析,将结果保存在 EXECL 表中,将电流图以时间为名字记录在执行磁盘上,测试结束后可以通过对结果的分析,找到相应的电流图,分析其异常原因,并且能够根据测试结果,与原生 android 系统的测试结果进行比对,输出测试报告。       整个自动化测试工具简洁可靠,使用方便,学习成本低,能够很快上手,进行测试,测试结果准确。 执行 CASE 可以根据需求,让用户根据需求,目的,自行选择 CASE 的组合执行,使得整个测试更加有效率。  
  3. 应用效果   工具投入日常测试后,每条产品线每周可节约 4 小时,人工参与量降低为之前的 10% 以下,极大提高了测试效率。 详细的历史数据方便数据查询,并提供了统计与分析依据。 提升了工具的自动化能力。 通过自动化脚本,使每次测试的环境和步骤严格统一,避免了不同测试人员测试时造成的偏差。  
  4. 工具 QuickStart   1) 搭建测试环境 2) 同时开启手机及 PC 端测试程序 3) 等待测试完毕自动生成报告       

Link http://qa.baidu.com/blog/?p=942

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 3 条回复 时间 点赞
匿名 #1 · 2012年11月11日

好东西

mark 这 个 需要有

这个测耗电量的自动化,在 nokia 已经搞了好多年了。
nokia 现在的 S40 系列的手机,700 毫安时的电池,待机时间动辄 20 多天 1 个多月的,就是因为对耗电量的要求极其的严格。
先是系统 or 功能稳定了,测耗电量才有意义。取什么状况下的电流值是个稍微花点心思的活儿~
手机上,影响电流值的因素太多了~手机网络信号、其他程序的干扰、手机的设置等等~需要采取各种手段化解~
我以前测,是自动化 + 人工的盯梢~

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册