日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用 Shell 快速写一个嵌入式测试框架

發(fā)布時(shí)間:2023/12/20 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用 Shell 快速写一个嵌入式测试框架 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

大家好,轉(zhuǎn)發(fā)我朋友老吳的一篇文章,我們在做測試框架的時(shí)候用的是python,但是一些理論基礎(chǔ)和用shell是一樣的,在這里,語言并不是關(guān)鍵。希望對大家有幫助。


哈嘍,我是老吳。

作為一個(gè)嵌入式底層碼農(nóng),

在項(xiàng)目初期,我經(jīng)常需要測試各種 Linux 單板的穩(wěn)定性和性能

例如:

用 memtester 測試內(nèi)存的穩(wěn)定性。

用 glmark-es2 測試 GPU 的性能。

用 iperf 測試網(wǎng)卡設(shè)備的帶寬。

等一大堆、雜七雜八的測試項(xiàng)目。

這些測試都不難,但是比較碎片化,一般都是基于簡單的測試腳本。

為了節(jié)省我的時(shí)間和精力,我寫了一個(gè)簡單的測試框架

它的服務(wù)對象是像我這樣的嵌入式底層開發(fā)人員。

我對它的要求是:

能擴(kuò)展以適應(yīng)不同的單板;

能自由地組合測試項(xiàng);

能對每個(gè)測試項(xiàng)進(jìn)行單獨(dú)地定制;

能復(fù)用和積累各種測試腳本;

下面是實(shí)現(xiàn)這個(gè)測試框架的關(guān)鍵點(diǎ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 的關(guān)聯(lián)數(shù)組定義了兩個(gè)查找表。

fct_table 是測試函數(shù)表。

res_table 是測試結(jié)果表。

測試函數(shù)

function?do_empty_handler() {echo?"Test?Not?Implemented:?$1"return?2}function?do_test1 {echo?"Test?1"ret=0return?$ret}function?do_test2 {echo?"Test?2"ret=0return?$ret }function?do_test3 {echo?"Test?1"ret=0return?$ret}

這里的每一個(gè) test handler 函數(shù)就代表一個(gè)測試項(xiàng)目。

只要將 memetester、iperf 等具體地測試命令填充進(jìn)行就可以執(zhí)行真實(shí)的測試了。

調(diào)度代碼

function?validate_system() {for?i?in?"${!fct_table[@]}";?doecho?"Test?:?$i"${fct_table[$i]}res=$?__update_result_table?$res?"$i"?res_tabledone}#?Main?entry?point validate_system print_result

遍歷 fct_table,取出每一個(gè) test handler 并調(diào)用,然后用 __update_result_table() 將測試的結(jié)果填充到 res_table 中。

到這里,這個(gè)測試框架就完成。

運(yùn)行效果

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

總結(jié)

這個(gè)簡單的測試框架非常輕巧且易于擴(kuò)展,但功能強(qiáng)大。

在我的實(shí)際工作中被大量地使用,并且進(jìn)行了一些必要的擴(kuò)展,實(shí)實(shí)在在地降低了我的工作負(fù)擔(dān)。

它完全可以作為第一次“冒煙測試”集成到更大的自動(dòng)化系統(tǒng)中。

—— The End ——

總結(jié)

以上是生活随笔為你收集整理的用 Shell 快速写一个嵌入式测试框架的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。