国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

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

用 Shell 快速寫(xiě)一個(gè)嵌入式測(cè)試框架

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

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

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

測(cè)試函數(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
?}

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

調(diào)度代碼

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,取出每一個(gè) test handler 并調(diào)用,然后用 __update_result_table() 將測(cè)試的結(jié)果填充到 res_table 中。到這里,這個(gè)測(cè)試框架就完成。

運(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è)簡(jiǎn)單的測(cè)試框架非常輕巧且易于擴(kuò)展,但功能強(qiáng)大。在我的實(shí)際工作中被大量地使用,并且進(jìn)行了一些必要的擴(kuò)展,實(shí)實(shí)在在地降低了我的工作負(fù)擔(dān)。它完全可以作為第一次“冒煙測(cè)試”集成到更大的自動(dòng)化系統(tǒng)中。

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
FOD4218SV 1 onsemi Triac Driver Output Optocoupler, 6-Pin DIP 800V Random Phase, 1000-BLKBG
$41.03 查看
HCNW3120#300 1 Avago Technologies 1 CHANNEL LOGIC OUTPUT OPTOCOUPLER, 0.300 INCH, SURFACE MOUNT, DIP-8
$4.78 查看
LTST-C190GKT 1 Lite-On Semiconductor Corporation Single Color LED, Green, Water Clear, 1.1mm, ROHS COMPLIANT PACKAGE-2

ECAD模型

下載ECAD模型
$0.03 查看

相關(guān)推薦

吉安市| 桦川县| 天水市| 黄石市| 宜兰县| 镇康县| 兰考县| 开鲁县| 吴旗县| 崇文区| 湄潭县| 承德市| 怀宁县| 都兰县| 湄潭县| 思南县| 灵璧县| 淅川县| 汝州市| 上虞市| 尤溪县| 宁河县| 五指山市| 桦南县| 土默特左旗| 铁岭县| 靖西县| 陆川县| 石家庄市| 浑源县| 泽州县| 木里| 增城市| 河津市| 玛多县| 天柱县| 登封市| 辽源市| 额尔古纳市| 宜城市| 青田县|