工廠測試APP(FactoryTest)用于整機生產(chǎn)測試,驗證整機各項功能是否正常。包含:信息、WiFi、藍(lán)牙、以太網(wǎng)、移動網(wǎng)絡(luò)、定時開關(guān)機、看門狗、串口、人體感應(yīng)、加速度、顯示、觸摸、喇叭、麥克風(fēng)、麥克風(fēng)陣列、按鍵、攝像頭、背光、電池、光感、溫濕度、USB、sdcard、GPIO、韋根等測試。根據(jù)不同產(chǎn)品支持配置功能組合,個別項還支持參數(shù)配置,能夠充分適配各種產(chǎn)品形態(tài)。測試完成支持測試結(jié)果導(dǎo)出為文件,可做為日后分析依據(jù)。

配置
為了能夠靈活適配各種產(chǎn)品,該APP支持通過配置文件來配置功能組合和各項測試參數(shù)。具體配置方法如下:
- 創(chuàng)建配置文件(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': '藍(lán)色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': '藍(lán)', 'device': 'led_b', 'brightness': 1000, 'state': 0}]"}
]
- 將配置文件內(nèi)置到固件vendor根目錄下,完成配置。
配置文件格式說明
配置文件整體由一個Json數(shù)組包含若干Json項,每一個Json項格式如下:
{"key": "測試項關(guān)鍵字", "param": "參數(shù)"}
- key:測試項關(guān)鍵字(注:必須為以上模板中支持的關(guān)鍵字)。
- param:參數(shù)(注:個別測試項需要帶參數(shù),無參數(shù)項使用空字符串)。
key(關(guān)鍵字)說明
- info:設(shè)備信息測試。
- wifi:WiFi測試。
- bt:藍(lán)牙測試。
- eth:以太網(wǎng)測試。
- mobile:移動網(wǎng)絡(luò)(3G/4G/5G)測試。
- timingboot:定時開關(guān)機測試。
- watchdog:看門狗測試。
- uart:串口測試。
- human:人體感應(yīng)測試。
- acc:加速度傳感器測試。
- display:顯示屏測試。
- touch:觸摸屏測試。
- spk:喇叭測試。
- mic:麥克風(fēng)測試。
- micarray:麥克風(fēng)陣列(多麥)測試。
- key:按鍵測試。
- camera:攝像頭測試。
- backlight:背光測試。
- battery:電池測試。
- light:光感測試。
- temp:溫濕度傳感器測試。
- usb:usb測試。
- sd:sdcard測試。
- gpio:gpio測試。
- wiegand:韋根接口測試。
- nd01:物距傳感器測試。
- pwm:pwm器件測試。
- led:led燈測試。
WiFi參數(shù)說明
{'ssid': 'test', 'rssi': -30}
- ssid:測試WiFi熱點名。
- rssi:測試WiFi熱點信號強度閾值(注:設(shè)備搜索到該WiFi熱點且信號強度大于此閾值則測試通過)。
注 WiFi測試項也可不帶參數(shù),不帶參數(shù)則不判定信號強度,僅僅掃描附近WiFi熱點。
串口參數(shù)說明
[{'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:串口設(shè)備文件路徑。
- baud:波特率。
- send:向串口TX發(fā)送的hex數(shù)據(jù)。
- receive:串口RX應(yīng)該收到的hex數(shù)據(jù)(注:如果向串口發(fā)送完指定數(shù)據(jù)后,超時時間內(nèi)未能接收到此數(shù)據(jù)則測試失敗)。
- state:狀態(tài)(默認(rèn)填0)。
麥克風(fēng)陣列參數(shù)說明
{'card':0, 'device': 1, 'channels': 4, 'rate':16000, 'bits':16, 'period_size':1024, 'period_cnt':3, 'play_channel':0}
- card:聲卡ID。
- device:設(shè)備ID。
- channels:總錄音通道數(shù)(一共錄制幾通道數(shù)據(jù))。
- rate:采樣率(8000、16000、44100等)。
- bits:PCM數(shù)據(jù)格式(8bit、16bit、24bit、32bit)。
- period_size:一次采樣的幀數(shù)。
- period_cnt:一共采樣幾次。
- play_channel:播放通道(使用哪個通道數(shù)據(jù)用于播放)。
按鍵參數(shù)說明
[{'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:狀態(tài)(默認(rèn)填0)。
韋根參數(shù)說明
{'write': {'format': 26, 'value': 7825015}, 'read': {'format': 26, 'value': 0}}
- write:韋根寫(注:不支持韋根寫時刪除此項配置)。
- read:韋根讀(注:不支持韋根讀時刪除此項配置)。
- format:格式(26:韋根26,34:韋根34)。
- value:待寫入韋根外設(shè)的數(shù)據(jù)(注:韋根讀配置中此項默認(rèn)填0)。
物距參數(shù)說明
{'i2c': 1, 'calibrate': true}
- i2c:I2C總線ID。
- calibrate:是否需要標(biāo)定(true:需要標(biāo)定,false:不需要標(biāo)定)。
PWM參數(shù)說明
[{'name': '紅色LED', 'pwm': 0, 'period': 10000, 'duty': 1000, 'state': 0}, {'name': '綠色LED', 'pwm': 1, 'period': 10000, 'duty': 1000, 'state': 0}, {'name': '藍(lán)色LED', 'pwm': 2, 'period': 10000, 'duty': 1000, 'state': 0}]
- name:器件名稱(最好配置為器件名,比如:紅色LED、綠色LED、藍(lán)色LED等)。
- pwm:PWM ID(表示CPU的第幾路PWM)。
- period:PWM頻率(單位:Hz)。
- duty:占空比(測試時期望輸出的占空比)。
- state:狀態(tài)(默認(rèn)填0)。
LED參數(shù)說明
[{'name': '紅', 'device': 'led_r', 'brightness': 1000, 'state': 0}, {'name': '綠', 'device': 'led_g', 'brightness': 1000, 'state': 0}, {'name': '藍(lán)', 'device': 'led_b', 'brightness': 1000, 'state': 0}]
- name:LED名稱(比如:紅、綠、藍(lán)等)。
- device:對應(yīng)“/sys/class/leds/”路徑下的設(shè)備名。
- brightness:點亮LED后的亮度值(PWM的占空比)。
- state:狀態(tài)(默認(rèn)填0)。
預(yù)覽




測試結(jié)果
全項測試完成后會導(dǎo)出測試結(jié)果至本地文件(sdcard/factorytest/result.txt),內(nèi)容如下:
測試結(jié)果(2022-03-02 13:31:43)
信息: 通過
WiFi: 通過
藍(lán)牙: 通過
以太網(wǎng): 通過
移動網(wǎng)絡(luò): 失敗
定時開關(guān)機: 失敗
看門狗: 失敗
串口: 失敗
人體感應(yīng): 失敗
加速度: 失敗
顯示: 通過
觸摸: 通過
喇叭: 通過
麥克風(fēng): 通過
麥克風(fēng)陣列: 通過
按鍵: 失敗
攝像頭: 通過
背光: 通過
電池: 通過
光感: 通過
溫濕度: 通過
USB: 通過
sdcard: 通過
GPIO: 通過
韋根: 通過
PWM:通過
LED:通過
共計 25 項
通過 18 項
失敗 7 項
忽略 0 項