簡單聊聊智能硬件的固件測試

1 前言
去年10月份開始,有幸加入智能硬件團隊,參與設備固件端測試,主要涉及的測試類型有移動端sdk測試,設備端固件測試,sdk與設備之間的藍牙測試以及基於業務實際場景的功能測試。對於我這樣一個固件測試新手來講,剛開始的時候不免會有點不知所措,所以我寫下本身對固件測試的一點經驗和總結,以便後期回顧。ios

2 簡化後的大體框架
簡化一下所要測試的對象模型,大體框架圖以下圖,手機app下發命令給智能設備,智能設備反饋各個操做細節的信息給app,app與硬件之間的交互經過藍牙傳輸;手機經過網絡傳輸將收到的必要信息存儲至服務器。api


圖1 簡化的測試對象
固件測試主要工做是對移動端sdk和固件端sdk的測試。移動端sdk可理解爲移動app與設備交互部分的api,包括安卓和ios,是交付給app開發人員使用的。固件端sdk是運行在智能設備上的軟件。移動端sdk和固件端sdk之間使用藍牙協議進行交互。sdk所在的位置標出,以下圖:安全


圖2 固件的測試範圍
3 移動端sdk測試
移動端sdk測試,可實施的測試有功能測試,異常測試,api測試,壓力測試等。服務器

功能測試
功能測試主要結合智能硬件的使用場景,利用sdk下發各類命令以及命令的組合,前提是將sdk命令寫成可視化界面,輸入命令參數,點擊發送命令便可使用。網絡

異常測試
異常測試主要移動端sdk和設備交互過程當中模擬藍牙斷開鏈接,移動端斷網斷電等,設備斷電重啓等各類中斷異常。app

sdk api測試
sdk api測試顯而易見就是針對sdk的接口測試,幫助測試接口邊界值以及迴歸時起輔助做用。框架

壓力測試
壓力測試是設置sdk向設備下發的指令條數,作到不斷地讓設備執行各類指令,包括單指令和多指令的組合,觀察移動端sdk運行的狀況。函數

4 固件端sdk測試
固件端sdk測試,可實施的測試有功能測試,異常測試,api測試,壓力測試等。工具

功能測試
功能測試主要包括硬件聲光交互測試,功能按鍵測試以及結合智能硬件使用場景的功能點測試。性能

異常測試
異常測試主要測試設備工做過程當中各類異常中斷致使設備中止工做或設備斷電重啓,保證異常動做結束後,設備可恢復工做,以及設備異常時可進入相應的異常處理分支。

固件api測試
固件api測試是針對設備sdk的主要接口作測試,固件代碼徹底由C語言編碼實現,接口測試沒有框架能夠利用,寫起來難度比較大,只能由固件開發引出幾個重要的接口,並在他們工程裏配置的接口測試主函數裏編寫測試函數和測試用例。

壓力測試
壓力測試是設置設備執行指令條數,並作到不斷地讓設備執行各類指令,包括單指令和多指令的組合,觀察設備運行的狀況,經過的最基本條件是設備不掛機。此外,能夠配合作一些功耗測試,須要利用到專業的設備,如萬用表和示波器燈。

靜態代碼檢查
固件代碼徹底由c語言編寫,代碼量大,很容易出現代碼缺陷,所以必須引入靜態代碼檢查,有效規避內存泄漏,空指針等問題。採用cppcheck和oclint這兩個成熟的c語言檢查工具來作靜態代碼檢查,cppcheck不檢測代碼中的語法錯誤,只檢測那些編譯器一般沒法檢測到的bug類型,目的是隻檢測代碼中真正的錯誤。而oclint檢查包含了大量語法錯誤的規則,以cppcheck爲主,oclint爲輔,兩者互補,相得益彰。

固件端排查問題:
在智能硬件跑測試代碼的時候,可讓它輸出串口的調試信息,將全部的運行的調試信息都保存下來,方便後面定位問題。
一、在測試代碼中懷疑可能有問題的地方添加串口打印信息,輸出一些變量的值,大體能夠判斷出來是什麼地方有問題,而後深度排查;
二、特殊的調試工具,使用示波器看看引腳輸出的波形是否是正常的,抓高低電平的波形;萬用表查看板子上的硬件電路鏈接是否正常,測電壓電流值,而後分析出來,多是什麼地方有問題。

5 藍牙測試
藍牙傳輸屬於移動端sdk和固件sdk之間下發指令和傳輸數據的橋樑,藍牙傳輸速率和性能可靠性影響着固件測試結果。藍牙測試可從如下幾方面入手:

藍牙協議棧最大的手機匹配數
最開始咱們採用的藍牙協議是ble,ble是低功耗但傳輸速率慢。後來咱們改用了spp藍牙傳輸協議(特定的藍牙廠商提供),它的優勢就是傳輸速率快,但存在藍牙配對溢出的問題。ios端的溢出表現爲n臺手機與一臺設備鏈接配對,當n超過藍牙協議棧的最大鏈接數(10個)時,第11臺之後的手機與設備非首次鏈接時,須要將原有的配對信息先忽略掉,才能成功連上設備。
後來咱們聯繫藍牙廠商,將規則改成採用FIFO(先進先出)的隊列規則存儲第10臺之後鏈接的手機,移除隊列第一臺配對的手機,保證最近鏈接的手機非首次鏈接是正常的。ble沒發現此類問題,這個測試點僅供參考。

圖3 協議棧隊列示意圖

針對性測試手機藍牙模塊的數據收發狀況
用特殊藍牙工具(藍牙廠商提供,包括pc端和移動端),測試較長時間內(1-2個小時)pc端向移動端不斷髮送發送數據包,發包間隔可調整,發包間隔影響數據發送速率,測試不一樣間隔下的數據收發狀況,選擇最佳發包間隔。

藍牙斷開重連等異常狀況
主要圍繞多臺藍牙涉筆信號干擾、遠距離藍牙自動斷開、斷電重啓致使藍牙斷開等。

6 總結
在接觸固件測試的短短半年時間內,自我感受get到的固件測試的知識還挺豐富的,不過測試的原理仍是和軟件測試相差無幾,以上是我在固件測試過程當中總結出的一點經驗,還有許多考慮不周全的測試點,還須要在後續的測試中繼續增強經驗和總結。

免費領取驗證碼、內容安全、短信發送、直播點播體驗包及雲服務器等套餐

更多網易技術、產品、運營經驗分享請訪問網易雲社區。

文章來源: 網易雲社區

相關文章
相關標籤/搜索