1、盛年不重来,一日难再晨。及时宜自勉,岁月不待人。老化测试设计方案修改记录版本/状态修改内容制定/日期审核/日期批准/日期A0初始版本徐寅文2016-03-18苏宏营贾楠A11、增加老化测试次数的检测和限制。2、增加老化前置条件。3、增加老化测试前防呆设计。4、补充充电控制说明。5、补充老化APK管理、安装说明。6、产品无陀螺仪,去除。7、补充指纹老化说明。8、补充音频环路测试。9、增加TP检测中开路检测和短路检测如何设计说明;10、增加验证方案的有效性说明。徐寅文2016-04-01苏宏营贾楠 目录一、目的3二、需求分析32.1.硬件器件测试32.2.软件功能测试32.3.电路测试32.4.背
2、景应力测试3三、APK具体测试流程图4四、概要设计74.1.测试启动及条件确认74.2.数据初始化74.3.电量控制84.4.重启部分84.5.循环测试阶段94.6.Camera测试124.7.EMMC擦写测试134.8.指纹测试144.9.DDR模块检测144.10.背景应力154.11.测试结果保存164.12.电量问题164.13.日志分析设计方案16五、避免老化残影17六、APK有效性验证18七、APK安装与管理18一、 目的通过器件以及系统老化测试,激发产品早期类问题,拦截制程/器件/系统类导致的失效问题,从而降低合作产品的FFR。 因为从华为自研近5000万台的产品失效分析数据来看
3、,前三个月故障占比可达到58.2%,所以对于合作产品来说,能拦截住前三个月的故障,对产品FFR改善会有很大帮助。二、 需求分析2.1. 硬件器件测试对手机各部分器件进行全面检测,如:I2C 、TP 、Receiver、Speaker、LCD、背光灯、LED 指示灯、Camera、EMMC、指纹以发现各部分器件早期失效问题。2.2. 软件功能测试软件功能测试主要是对手机常用的功能(如休眠唤醒、重启、功能开关或关闭等)进行模拟和控制。其中如重启和功能开关或关闭已在硬件器件测试中体现。故此处重点描述休眠唤醒操作。2.3. 电路测试电路测试部分主要涉及到充电电路测试和电路调压测试。2.4. 背景应力测
4、试背景应力测试主要是通过执行CPU高负载操作来进行升温操作,关闭CPU高负载来进行降温操作。同时加以马达的震动服务来进行应力构建。三、 APK具体测试流程图整个老化测试需要重复18轮: 每一轮都会重复“升温(6分钟)降温(10分钟)升温(6分钟)降温(10分钟)”这个操作(暂定其名称为“升降操作”)。 但是,第一轮和最后一轮比较特殊: 第一轮刚开始的时候,在升降操作之前,需要进行50次重启测试; 而在最后一轮的升降操作之后,将开始依次进行Camera、EMMC以及DDR的测试(DDR测试放在最后是有原因的,因为DDR测试需要进入Recovery模式)。也就是说,除了第一轮和最后一轮测试,其他每
5、一轮只进行升降操作的过程。 升降操作过程中,包括了除重启、Camera、EMMC和DDR测试外的其他所有老化测试项。流程图:充电器连接状态MMI测试情况老化执行次数重启手机START检查测试启动条件初始化测试项列表注册充电广播执行I2C测试重启次数大于50NY进入LCD测试项综合测试进入视频播放测试项综合测试重启次数大于18YCAMERA测试EMMC测试指纹测试DDR测试END综合测试的测试流程图:具体测试项架构图:四、 概要设计4.1. 测试启动及条件确认1、 确认老化测试环境温度控制在20-28摄氏度,湿度控制在30%-75%2、 通过桌面图标点击进入老化测试启动界面3、 测试前二次弹框确
6、认避免测试人员误操作,因为老化测试一旦启动无法退出4、 确认充电器是否连接完善,避免未连接充电器导致老化过程中电量耗尽5、 读取NV值确认手机老化次数,超过3次就弹框提示并无法继续执行6、 确认MMI测试是否成功4.2. 数据初始化刚开始测试时,将一些测试所需的数据进行初始化记录,如:初始化器件检测存储值、老化NV写为F、保存系统初始状态、打开充电log开关、判定老化测试开始前是否存在系统稳定性问题。在数据初始化过程中出现记录失败的情况,对于这类情况做一下初步失败原因判断,并记录START初始化数据写入写入成功Log记录失败原因记录NY进入重启部分4.3. 电量控制启动一个service,监听
7、电量变化的广播。在service启动一个handle,每过10秒监听一次电量变化值,超过10%作为失败。每次开机后对比上次关机前的电量值,超过10%作为失败。4.4. 重启部分1、 I2C 检测在每个i2c器件的探测函数里面进行判断,如果此i2c器件探测函数执行成功,则判定此i2c器件检测成功。如该I2C器件检测成功,则在此器件对应的标志位标记为1,否则不处理,默认为0。蓝牙、Wifi、麦克风、接近光、重力感应、指南针、GPS 2、 重启通过监听android.intent.action.BOOT_COMPLETED来开机自动调起程序,完成重复重启动作。每次重启前将剩余重启次数保存在Share
8、dPreferences中,以便下次开机后读取。 对于检测失败的原因做一个大致的判断和记录。对于重启过程中产生的异常重启做判断并记录时间点。重启次数50初始化数据写入操作检测成功Log记录失败原因记录NYI2C检测N开机重启次数相同YLog打印&进入循环测试阶段NLog打印 & 异常时间记录Y重启4.5. 循环测试阶段1、 LCD测试1) 首先调用后台测试接口,打开开后台测试项(包括:PA老化、CPU高负载以及震动三部分)2) 接着,设置一个闹钟,6分钟后,老化apk会收到闹钟广播,从而停止6分钟的升温过程,进入10分钟的降温过程3) 然后,把手机屏幕亮度调成最大.4) 最后,发送消息到消息队
9、列,前2min通过消息处理接口来处理红、蓝、黄、白、黑五幅纯色图片的循环切换操作.(备注:合作产品暂时不进行LCD GRAM数据检测操作)。需要通过相应接口来判断图片是否显示正常。并记录相应的测试结果。5) 然后调用相应的LCD反转接口来对LCD的显示结构进行调整。6) 同时,启动后台的TP检测和音频播放流程。7) 纯色图片切换2min 结束后接2min的动、静态2D图切换8) 最后2min为3D旋转测试(OpenGL框架开发的魔方或茶壶)2、 音频老化音频测试的服务起来之后,依次调用onCreate()和onStartCommand()方法。1).进入onCreate()方法后,首先调用初始
10、化音频参数接口(包括加载音频文件以及设置3个音视频相关的监听器),然后,设置闹钟,6分钟后停止音频测试。2)接着,开始调用onStartCommand()方法。在该方法中,仅做一件事:注册闹钟广播接收器。3)调用相应的播放接口启动音频播放。4)音频播放结束后,进行相应计数来控制音频播放的模式切换(偶数时receiver发声,奇数时speaker发声)。然后在调用相应的播放接口,继续播放音频,形成循环播放的效果。3、 TP 检测TP测试包含开路测试和短路测试。开路测试通过读取每个通断容值来跟预设的阈值进行比较,如果超出阈值范围,认为TP存在断路情况。短路测试主要通过读取寄存器的状态来判断TP是不
11、是存在短路情况。以上两种情况只要由一种或者一种以上情况发生,则认为TP不良。1) 根据节点状态,判断TP类型,创建相应的对象实例接口2) 查询TP检查结果接口查询TP检查结果,如果为fail,更新相应的失败次数3) 读取节点文件中的内容接口4) 获取测试结果接口根据读取节点文件中的内容,判断测试结果,并设置测试结果,生成结果描述字符串。4、 综合测试1.打开器件;2.检查器件是否打开;3.显示检测结果;4.保存结果;5.释放占用的硬件资源、完成当前Activity等相关活动。5、 speaker音频环路测试通过speaker播放铃声,mic录音组成一个环路,自判定speaker和mic的通路是
12、否正常;开启一个mediaplayer和一个record,启动一个handle,通过postDelayed消息,每次获取record得到的maxAmplitude,然后取100次平均值,大于1k即pass。6、 视频播放测试全屏播放视频,开启震动和多线程CPU使用,执行TP测试。测试过程中不应该有退出或卡死现象N升温重启流程开启成功Log记录失败原因记录NY开启后台测试项NY6分钟升温定时器10分钟降温定时器纯色图片切换音频老化测试TP检测静态动态2D图切换音频老化测试TP检测3D图旋转音频老化测试TP检测循环次数大于18YYCamera测试测试结果记录综合测试休眠2次休眠操作NN图片测试YN
13、视频播放音频老化测试TP检测4.6. Camera测试下述流程描述中,包括了前后Camera、闪光灯、FF/AF类型不同情况判断,然后在log记录系统中进行相应信息的记录和判断。 此项目配置如下:主摄像头:13MP AF 带闪光灯副摄像头:5MP FF 不带闪光灯备注:SurfaceHolder为android.view.SurfaceHolder,其为显示一个surface的抽象接口,可以控制surface的大小和格式, 以及在surface上编辑像素,和监视surface的改变。4.7. EMMC擦写测试测试的整体思路是将int型数据以数据块的形式写入到手机存储器中(EMMC),保存在em
14、mc.txt文件中;然后再对该文件进行读取操作,并与写入的数据进行比对。如果写入的数据与读取的数据相同,则判定为测试通过。 这个过程一共需进行50轮,每一轮对11个数据块进行写入、读取和对比操作。如下为具体流程描述 1) 判断手机内置sd卡(内置sd卡其实就是手机的内置存储器,即手机的硬盘)是否正常在位。这也是对EMMC检测中的一个重要判断,如果不在位,说明手机自带的内置存储器根本无法使用。如果不在位,直接结束本测试项。 2) 定义010共11个字符块,大小分别为512/1K/2K.512K bits; 3)依次向EMMC里写入这11个字符块(将int型数据以数据块的形式),并对写入成功过程进
15、行判定. (备注:可在在手机EMMC中创建emmc.txt文本文件;文件的具体路径建议为:mnt/sdcard/emmc.txt。即在手机硬盘区的根目录下创建的该文件) 4)这11个当做一个循环,写完一个循环后,开始从EMMC里面读出写入的值,并对读出成功与否的过程进行判定; 5)比对写入和读出的值,如果真值不匹配也判定为Fail; 6)上述过程重新循环50次,测试完毕。4.8. 指纹测试对指纹模组进行5分钟的老化测试,验证器件的一致性。指纹老化测试包括spi通讯是否正常、中断是否正常、芯片型号检测、指纹采图判断像素点坏点。设置一个指纹sensor的监听,调用framework的Fingerp
16、rintSensorTest类中的测试接口,开启关闭指纹器件,获取芯片型号检查通讯是否正常。启动指纹采集自测试方案,通过代码内部实现采集芯片像素点,自判断是否有坏点。APP通过接口取值判断并记录测试结果4.9. DDR模块检测1、 APK写入要测试的参数文件,如DDR要测试多少M(一般每次10MB即可) 2、 手机重启,进入HOTA升级模式/界面; 3、 进行HOTA升级;把HOTA升级包(DDR测试可执行文件)写到tmp目录下; 4、 用不同算法对DDR写入10M的值,然后读出这些值,比对写入和读出来是否一致; (这些算法根据不同的DDR而自行决定,主要是要模拟实际用户操作中会采用哪些算法/
17、操作方式来对DDR进行写操作,一般跟具体的DDR芯片相关) 5、 如不一致,需要记录这些错误的测试结果 6、 HOTA升级后结果写入相关测试临时文件下面 7、 APK检测HOTA是否升级成功; 8、 记录相应的测试结果 9、 手机重启。 4.10. 背景应力背景应力测试主要是通过执行CPU高负载操作来进行升温操作,关闭CPU高负载来进行降温操作。同时加以马达的震动服务来进行应力构建。1. CPU模块1. 开启多个CPU线程。(根据不同的核数而定,一般2核或4核对应的线程就可以开多) 2. 提高CPU占用率为96%,同时进行死循环运算,并快速的进行图片切换,CPU占用率最终会达到约99%.(其中
18、 手机震动同时启动) 在这种操作下,5分钟内,CPU背面单板温度可以达到约55度左右。 3.6分钟后停止CPU高负载操作,进行降温过程 4.10分钟后又启动升温过程,如此反复。2. 马达模块振动方式为:振2秒停1秒。 long al = 0, 2000L, 1000l, 2000l, 1000l ;vibrator.vibrate(al, 0);在升温的6分钟震动,在降温的10分钟期间停止此模块测试。4.11. 测试结果保存测试结果以TXT形式保存到persist分区,以byte形式保存。P表示测试通过,F表示测试失败,U表示未测试。4.12. 电量问题测试过程中,后台启动一个service每
19、过10秒监听一下电量情况。当2次电量差距超过10%时判断为异常,当电量小于等于60%时开始充电,当电量大于75%后停止充电。后台service测试过程中永远存在。用来保证电量。4.13. 日志分析设计方案老化测试过程中,测试过程及各项测试结果均会以Log形式被保存到mnt/sdcard/RunningTestII/Log/目录下,测试结束后,可以通过PC端抓取老化测试log工具将Log导出。Log文件名:日期时间 + Log_runningtest.txt。其中的日期时间为测试开始时间,每次测试生成一个日志文件。测试过程以Info等级打印;测试结果以Debug等级打印,可以搜索关键字“resu
20、lt”找到;测试失败原因以Error等级打印,可以通过搜索“reason”找到。五、 避免老化残影1、 所有界面隐藏状态栏和导航栏2、 非屏幕测试界面避免白色等高亮度颜色出现在屏幕上 修改前 修改后六、 APK有效性验证1、 使用故障机或器件缺损的机器进行有效性验证,如:无camera/指纹及其他sensor的机器执行老化,相应的测试项应该fail。2、 使用良品进行老化测试,应该全部pass。七、 APK安装与管理1、 提供APK安装工具,APK通过工厂安装手动安装。安装后APK在data分区可以找到2、 恢复出厂设置可以清除APK及测试log,测试结果保留3、 老化测试过程:MMI老化MMI2同时安装APK的工具也可以提供给测试或者售后用来安装老化APK执行测试