工厂测试APP(FactoryTest)用于整机生产测试,验证整机各项功能是否正常。包含:信息、WiFi、蓝牙、以太网、移动网络、定时开关机、看门狗、串口、人体感应、加速度、显示、触摸、喇叭、麦克风、麦克风阵列、按键、摄像头、背光、电池、光感、温湿度、USB、sdcard、GPIO、韦根等测试。根据不同产品支持配置功能组合,个别项还支持参数配置,能够充分适配各种产品形态。测试完成支持测试结果导出为文件,可做为日后分析依据。
配置
为了能够灵活适配各种产品,该APP支持通过配置文件来配置功能组合和各项测试参数。具体配置方法如下:
- 创建配置文件(factory_test_config.json)。
- 参考下面文本,编写配置文件:
[
{"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}]"}
]
- 将配置文件内置到固件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 项