• 正文
  • 推薦器件
  • 相關推薦
申請入駐 產(chǎn)業(yè)圖譜

用 Shell 快速寫一個嵌入式測試框架

2022/02/09
401
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

哈嘍,我是老吳。作為一個嵌入式底層碼農,在項目初期,我經(jīng)常需要測試各種 Linux 單板的穩(wěn)定性和性能。例如:用 memtester 測試內存的穩(wěn)定性。用 glmark-es2 測試 GPU 的性能。用 iperf 測試網(wǎng)卡設備的帶寬。等一大堆、雜七雜八的測試項目。這些測試都不難,但是比較碎片化,一般都是基于簡單的測試腳本。為了節(jié)省我的時間和精力,我寫了一個簡單的測試框架。它的服務對象是像我這樣的嵌入式底層開發(fā)人員。我對它的要求是:能擴展以適應不同的單板;能自由地組合測試項;能對每個測試項進行單獨地定制;能復用和積累各種測試腳本;下面是實現(xiàn)這個測試框架的關鍵點。

查找表

declare?-gA?fct_table=(['Test?1']="do_test1"
?['Test?2']="do_test2"
?['Test?3']="do_test3"
?['Test?4']="do_empty_handler"
?['Test?5']="do_empty_handler"
?['Test6']="do_empty_handler"
?)

declare?-gA?res_table=(['Test?1']="N/A"
?['Test?2']="N/A"
?['Test?3']="N/A"
?['Test?4']="N/A"
?['Test?5']="N/A"
?['Test?6']="N/A"
?)

這里通過 Shell 的關聯(lián)數(shù)組定義了兩個查找表。fct_table 是測試函數(shù)表。res_table 是測試結果表。

測試函數(shù)

function?do_empty_handler()
{
???echo?"Test?Not?Implemented:?$1"
???return?2
?}

function?do_test1
{
???echo?"Test?1"
???ret=0
???return?$ret
?}

function?do_test2
{
???echo?"Test?2"
???ret=0
???return?$ret
}

function?do_test3
{
???echo?"Test?1"
???ret=0
???return?$ret
?}

這里的每一個 test handler 函數(shù)就代表一個測試項目。只要將 memetester、iperf 等具體地測試命令填充進行就可以執(zhí)行真實的測試了。

調度代碼

function?validate_system()
{
??for?i?in?"${!fct_table[@]}";?do
????echo?"Test?:?$i"

????${fct_table[$i]}
????res=$?

????__update_result_table?$res?"$i"?res_table
??done
?}

#?Main?entry?point
validate_system
print_result

遍歷 fct_table,取出每一個 test handler 并調用,然后用 __update_result_table() 將測試的結果填充到 res_table 中。到這里,這個測試框架就完成。

運行效果

wwd@think:~/Desktop$?./board_test.sh?
Test?:?Test?1
Test?1
>>>>>?SUCCESS
Test?:?Test?3
Test?1
>>>>>?SUCCESS
Test?:?Test?2
Test?2
>>>>>?SUCCESS
Test?:?Test?5
Test?Not?Implemented:?
>>>>>?N/A
Test?:?Test?4
Test?Not?Implemented:?
>>>>>?N/A
Test?:?Test6
Test?Not?Implemented:?
>>>>>?N/A
TEST?RESULTS:
============
Test:?Test?1?Result:?PASS
Test:?Test?3?Result:?PASS
Test:?Test?2?Result:?PASS
Test:?Test?5?Result:?N/A
Test:?Test?4?Result:?N/A
Test:?Test?6?Result:?N/A
Test:?Test6?Result:?N/A

總結

這個簡單的測試框架非常輕巧且易于擴展,但功能強大。在我的實際工作中被大量地使用,并且進行了一些必要的擴展,實實在在地降低了我的工作負擔。它完全可以作為第一次“冒煙測試”集成到更大的自動化系統(tǒng)中。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
SN74LVC1G08DCKRE4 1 Texas Instruments Single 2-input, 1.65-V to 5.5-V AND gate 5-SC70 -40 to 125

ECAD模型

下載ECAD模型
$0.37 查看
SN74LVC1G125DCKT 1 Texas Instruments Single 1.65-V to 5.5-V buffer with 3-state outputs 5-SC70 -40 to 125

ECAD模型

下載ECAD模型
$0.9 查看
KSZ9031RNXVA-TR 1 Microchip Technology Inc Ethernet Transceiver
暫無數(shù)據(jù) 查看

相關推薦