簡單聊聊智慧型硬體的韌體測試

2022-06-06 08:15:08 字數 2456 閱讀 4179

去年10月份開始,有幸加入智慧型硬體團隊,參與裝置韌體端測試,主要涉及的測試型別有移動端sdk測試,裝置端韌體測試,sdk與裝置之間的藍芽測試以及基於業務實際場景的功能測試。對於我這樣乙個韌體測試新手來說,剛開始的時候難免會有點不知所措,因此我寫下自己對韌體測試的一點經驗和總結,以便後期回顧。

圖1 簡化的測試物件

圖2 韌體的測試範圍移動端sdk測試,可實施的測試有功能測試,異常測試,api測試,壓力測試等。

功能測試

功能測試主要結合智慧型硬體的使用場景,利用sdk下發各種命令以及命令的組合,前提是將sdk命令寫成視覺化介面,輸入命令引數,點選傳送命令即可使用。

異常測試

異常測試主要移動端sdk和裝置互動過程中模擬藍芽斷開連線,移動端斷網斷電等,裝置斷電重啟等各種中斷異常。

sdk api測試

sdk api測試顯而易見就是針對sdk的介面測試,幫助測試介面邊界值以及回歸時起輔助作用。

壓力測試

壓力測試是設定sdk向裝置下發的指令條數,做到不斷地讓裝置執行各種指令,包括單指令和多指令的組合,觀察移動端sdk執行的情況。

韌體端sdk測試,可實施的測試有功能測試,異常測試,api測試,壓力測試等。

功能測試

功能測試主要包括硬體聲光互動測試,功能按鍵測試以及結合智慧型硬體使用場景的功能點測試。

異常測試

異常測試主要測試裝置工作過程中各種異常中斷導致裝置停止工作或裝置斷電重啟,保證異常動作結束後,裝置可恢復工作,以及裝置異常時可進入相應的異常處理分支。

韌體api測試

韌體api測試是針對裝置sdk的主要介面做測試,韌體**完全由c語言編碼實現,介面測試沒有框架可以利用,寫起來難度比較大,只能由韌體開發引出幾個重要的介面,並在他們工程裡配置的介面測試主函式裡編寫測試函式和測試用例。

壓力測試

壓力測試是設定裝置執行指令條數,並做到不斷地讓裝置執行各種指令,包括單指令和多指令的組合,觀察裝置執行的情況,通過的最基本條件是裝置不掛機。此外,可以配合做一些功耗測試,需要利用到專業的裝置,如萬用表和示波器燈。

靜態**檢查

韌體**完全由c語言編寫,**量大,很容易出現**缺陷,因此必須引入靜態**檢查,有效規避記憶體洩漏,空指標等問題。採用cppcheck和oclint這兩個成熟的c語言檢查工具來做靜態**檢查,cppcheck不檢測**中的語法錯誤,只檢測那些編譯器通常無法檢測到的bug型別,目的是只檢測**中真正的錯誤。而oclint檢查包含了大量語法錯誤的規則,以cppcheck為主,oclint為輔,二者互補,相得益彰。

韌體端排查問題:

在智慧型硬體跑測試**的時候,可以讓它輸出串列埠的除錯資訊,將所有的執行的除錯資訊都儲存下來,方便後面定位問題。

1、在測試**中懷疑可能有問題的地方新增串列埠列印資訊,輸出一些變數的值,大致可以判斷出來是什麼地方有問題,然後深度排查;

2、特殊的除錯工具,使用示波器看看引腳輸出的波形是不是正常的,抓高低電平的波形;萬用表檢視板子上的硬體電路連線是否正常,測電壓電流值,然後分析出來,可能是什麼地方有問題。

藍芽傳輸屬於移動端sdk和韌體sdk之間下發指令和傳輸資料的橋梁,藍芽傳輸速率和效能可靠性影響著韌體測試結果。藍芽測試可從以下幾方面入手:

藍芽協議棧最大的手機匹配數

最開始我們採用的藍芽協議是ble,ble是低功耗但傳輸速率慢。後來我們改用了spp藍芽傳輸協議(特定的藍芽廠商提供),它的優點就是傳輸速率快,但存在藍芽配對溢位的問題。ios端的溢位表現為n臺手機與一台裝置連線配對,當n超過藍芽協議棧的最大連線數(10個)時,第11臺以後的手機與裝置非首次連線時,需要將原有的配對資訊先忽略掉,才能成功連上裝置。

後來我們聯絡藍芽廠商,將規則改為採用fifo(先進先出)的佇列規則儲存第10臺以後連線的手機,移除佇列第一台配對的手機,保證最近連線的手機非首次連線是正常的。ble沒發現此類問題,這個測試點僅供參考。

圖3 協議棧佇列示意圖

針對性測試手機藍芽模組的資料收發情況

用特殊藍芽工具(藍芽廠商提供,包括pc端和移動端),測試較長時間內(1-2個小時)pc端向移動端不斷傳送傳送資料報,發包間隔可調整,發包間隔影響資料傳送速率,測試不同間隔下的資料收發情況,選擇最佳發包間隔。

藍芽斷開重連等異常情況

主要圍繞多台藍芽涉筆訊號干擾、遠距離藍芽自動斷開、斷電重啟導致藍芽斷開等。

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

免費領取驗證碼、內容安全、簡訊傳送、直播點播體驗包及雲伺服器等**

簡單硬體測試說明

1 首先單獨測試控制器 32 一般沒問題,新板子好像有問題,在資料下發的時候好像有bug 2 測試wifi模組,首先了解是不是燒寫的最新的韌體,新韌體和老韌體的at指令好像有兩個不一樣,之後利用串列埠除錯助手,測試能否連線手機或者其他熱點 其他功能可自行測試,使用的裝置是ttl,注意連線方式,測試的...

智慧型硬體的分類

首先,智慧型硬體應該是能夠滿足人們的乙個需求的,最高端的智慧型硬體或者智慧型硬體的組合應該是會給我們帶來全新的生活形式。所以智慧型硬體要麼是被創造出來的。要麼是基於傳統硬體改造的,目的都是使人們可以更便捷的使用,更高效的生產。其次,智慧型硬體的智慧型化程度是不一樣的。智慧型硬體應該具備的功能元素包含...

Python pytest使用測試韌體的三種方式

conftest.py import pytest pytest.fixture name lg def login print 登入系統 test 1.py import pytest pytest.mark.usefixtures lg def test 1 conftest.py import...