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 项

你可能感兴趣的:(Android工厂测试(开源推荐))