Android工厂测试(开源推荐)

Android-FactoryTest

工厂测试APP(FactoryTest)用于整机生产测试,验证整机各项功能是否正常。包含:信息、WiFi、蓝牙、以太网、移动网络、定时开关机、看门狗、串口、人体感应、加速度、显示、触摸、喇叭、麦克风、麦克风阵列、按键、摄像头、背光、电池、光感、温湿度、USB、sdcard、GPIO、韦根等测试。根据不同产品支持配置功能组合,个别项还支持参数配置,能够充分适配各种产品形态。测试完成支持测试结果导出为文件,可做为日后分析依据。


配置

为了能够灵活适配各种产品,该APP支持通过配置文件来配置功能组合和各项测试参数。具体配置方法如下:

  1. 创建配置文件(factory_test_config.json)。
  2. 参考下面文本,编写配置文件:
[
  {"key": "info", "param": ""},
  {"key": "wifi", "param": "{'ssid': 'test', 'rssi': -30}"},
  {"key": "bt", "param": ""},
  {"key": "eth", "param": ""},
  {"key": "mobile", "param": ""},
  {"key": "timingboot", "param": ""},
  {"key": "watchdog", "param": ""},
  {"key": "uart", "param": "[{'device':'/dev/ttyS1', 'baud': 9600, 'send': '7A7A', 'receive': '7A7A', 'state': 0}, {'device':'/dev/ttyS3', 'baud': 9600, 'send': '7A7A', 'receive': '7A7A', 'state': 0}, {'device':'/dev/ttyS4', 'baud': 9600, 'send': '7A7A', 'receive': '7A7A', 'state': 0}]"},
  {"key": "human", "param": ""},
  {"key": "acc", "param": ""},
  {"key": "display", "param": ""},
  {"key": "touch", "param": ""},
  {"key": "spk", "param": ""},
  {"key": "mic", "param": ""},
  {"key": "micarray", "param": "{'card':0, 'device': 1, 'channels': 4, 'rate':16000, 'bits':16, 'period_size':1024, 'period_cnt':3, 'play_channel':0}"},
  {"key": "key", "param": "[{'name':'BACK', 'code': 4, 'state': 0}, {'name':'MENU', 'code': 82, 'state': 0}, {'name':'MUTE', 'code': 164, 'state': 0}, {'name':'VOL+', 'code': 24, 'state': 0}, {'name':'VOL-', 'code': 25, 'state': 0}]"},
  {"key": "camera", "param": ""},
  {"key": "backlight", "param": ""},
  {"key": "battery", "param": ""},
  {"key": "light", "param": ""},
  {"key": "temp", "param": ""},
  {"key": "usb", "param": ""},
  {"key": "sd", "param": ""},
  {"key": "gpio", "param": ""},
  {"key": "wiegand", "param": "{'write': {'format': 26, 'value': 7825015}, 'read': {'format': 26, 'value': 0}}"},
  {"key": "nd01", "param": "{'i2c': 1, 'calibrate': true}"},
  {"key": "pwm", "param": "[{'name': '红色LED', 'pwm': 0, 'period': 10000, 'duty': 1000, 'state': 0}, {'name': '绿色LED', 'pwm': 1, 'period': 10000, 'duty': 1000, 'state': 0}, {'name': '蓝色LED', 'pwm': 2, 'period': 10000, 'duty': 1000, 'state': 0}]"},
  {"key": "led", "param": "[{'name': '红', 'device': 'led_r', 'brightness': 1000, 'state': 0}, {'name': '绿', 'device': 'led_g', 'brightness': 1000, 'state': 0}, {'name': '蓝', 'device': 'led_b', 'brightness': 1000, 'state': 0}]"}
]
  1. 将配置文件内置到固件vendor根目录下,完成配置。

配置文件格式说明

配置文件整体由一个Json数组包含若干Json项,每一个Json项格式如下:

{"key": "测试项关键字", "param": "参数"}
  • key:测试项关键字(:必须为以上模板中支持的关键字)。
  • param:参数(:个别测试项需要带参数,无参数项使用空字符串)。
key(关键字)说明
  • info:设备信息测试。
  • wifi:WiFi测试。
  • bt:蓝牙测试。
  • eth:以太网测试。
  • mobile:移动网络(3G/4G/5G)测试。
  • timingboot:定时开关机测试。
  • watchdog:看门狗测试。
  • uart:串口测试。
  • human:人体感应测试。
  • acc:加速度传感器测试。
  • display:显示屏测试。
  • touch:触摸屏测试。
  • spk:喇叭测试。
  • mic:麦克风测试。
  • micarray:麦克风阵列(多麦)测试。
  • key:按键测试。
  • camera:摄像头测试。
  • backlight:背光测试。
  • battery:电池测试。
  • light:光感测试。
  • temp:温湿度传感器测试。
  • usb:usb测试。
  • sd:sdcard测试。
  • gpio:gpio测试。
  • wiegand:韦根接口测试。
  • nd01:物距传感器测试。
  • pwm:pwm器件测试。
  • led:led灯测试。
WiFi参数说明
{'ssid': 'test', 'rssi': -30}
  • ssid:测试WiFi热点名。
  • rssi:测试WiFi热点信号强度阈值(:设备搜索到该WiFi热点且信号强度大于此阈值则测试通过)。

WiFi测试项也可不带参数,不带参数则不判定信号强度,仅仅扫描附近WiFi热点。

串口参数说明
[{'device':'/dev/ttyS1', 'baud': 9600, 'send': '7A7A', 'receive': '7A7A', 'state': 0}, {'device':'/dev/ttyS3', 'baud': 9600, 'send': '7A7A', 'receive': '7A7A', 'state': 0}, {'device':'/dev/ttyS4', 'baud': 9600, 'send': '7A7A', 'receive': '7A7A', 'state': 0}]
  • device:串口设备文件路径。
  • baud:波特率。
  • send:向串口TX发送的hex数据。
  • receive:串口RX应该收到的hex数据(:如果向串口发送完指定数据后,超时时间内未能接收到此数据则测试失败)。
  • state:状态(默认填0)。
麦克风阵列参数说明
{'card':0, 'device': 1, 'channels': 4, 'rate':16000, 'bits':16, 'period_size':1024, 'period_cnt':3, 'play_channel':0}
  • card:声卡ID。
  • device:设备ID。
  • channels:总录音通道数(一共录制几通道数据)。
  • rate:采样率(8000、16000、44100等)。
  • bits:PCM数据格式(8bit、16bit、24bit、32bit)。
  • period_size:一次采样的帧数。
  • period_cnt:一共采样几次。
  • play_channel:播放通道(使用哪个通道数据用于播放)。
按键参数说明
[{'name':'BACK', 'code': 4, 'state': 0}, {'name':'MENU', 'code': 82, 'state': 0}, {'name':'MUTE', 'code': 164, 'state': 0}, {'name':'VOL+', 'code': 24, 'state': 0}, {'name':'VOL-', 'code': 25, 'state': 0}]
  • name:按键名。
  • code:键值。
  • state:状态(默认填0)。
韦根参数说明
{'write': {'format': 26, 'value': 7825015}, 'read': {'format': 26, 'value': 0}}
  • write:韦根写(:不支持韦根写时删除此项配置)。
  • read:韦根读(:不支持韦根读时删除此项配置)。
  • format:格式(26:韦根26,34:韦根34)。
  • value:待写入韦根外设的数据(:韦根读配置中此项默认填0)。
物距参数说明
{'i2c': 1, 'calibrate': true}
  • i2c:I2C总线ID。
  • calibrate:是否需要标定(true:需要标定,false:不需要标定)。
PWM参数说明
[{'name': '红色LED', 'pwm': 0, 'period': 10000, 'duty': 1000, 'state': 0}, {'name': '绿色LED', 'pwm': 1, 'period': 10000, 'duty': 1000, 'state': 0}, {'name': '蓝色LED', 'pwm': 2, 'period': 10000, 'duty': 1000, 'state': 0}]
  • name:器件名称(最好配置为器件名,比如:红色LED、绿色LED、蓝色LED等)。
  • pwm:PWM ID(表示CPU的第几路PWM)。
  • period:PWM频率(单位:Hz)。
  • duty:占空比(测试时期望输出的占空比)。
  • state:状态(默认填0)。
LED参数说明
[{'name': '红', 'device': 'led_r', 'brightness': 1000, 'state': 0}, {'name': '绿', 'device': 'led_g', 'brightness': 1000, 'state': 0}, {'name': '蓝', 'device': 'led_b', 'brightness': 1000, 'state': 0}]
  • name:LED名称(比如:红、绿、蓝等)。
  • device:对应“/sys/class/leds/”路径下的设备名。
  • brightness:点亮LED后的亮度值(PWM的占空比)。
  • state:状态(默认填0)。

预览




测试结果

全项测试完成后会导出测试结果至本地文件(sdcard/factorytest/result.txt),内容如下:

测试结果(2022-03-02 13:31:43)

信息: 通过
WiFi: 通过
蓝牙: 通过
以太网: 通过
移动网络: 失败
定时开关机: 失败
看门狗: 失败
串口: 失败
人体感应: 失败
加速度: 失败
显示: 通过
触摸: 通过
喇叭: 通过
麦克风: 通过
麦克风阵列: 通过
按键: 失败
摄像头: 通过
背光: 通过
电池: 通过
光感: 通过
温湿度: 通过
USB: 通过
sdcard: 通过
GPIO: 通过
韦根: 通过
PWM:通过
LED:通过

共计 25 项
通过 18 项
失败 7 项
忽略 0 项
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容