“ 有小伙伴在后臺(tái)讓大叔推薦一下TestStand的學(xué)習(xí)資源,其實(shí)我接觸TestStand也很晚,在這里只是分享一下我所掌握的一下資訊內(nèi)容,內(nèi)容有點(diǎn)長(zhǎng),分為上下兩篇,大家可以共同提高!”
我接觸和使用LabVIEW比較早,2001年從LabVIEW 6i 版本開始上手摸著石頭過河式開發(fā),斷斷續(xù)續(xù),分分合合與LabVIEW的開發(fā)緣分倒也一致都在!
在2017年左右,正好有個(gè)客戶項(xiàng)目需要使用TestStand來(lái)完成,這再正式開始接觸和使用TestSand,關(guān)于TestStand的分享將分為兩篇文章進(jìn)行,本篇是上篇,主要是宏觀角度講解一下我對(duì)TestStand的認(rèn)知,也是我知乎的《LabVIEW面向?qū)ο缶幊蘝初窺門徑》系列編程文章的第6篇內(nèi)容。關(guān)于其它的系列文章可以到我的知乎專欄上去查看。
特別警示:文章非常的冗長(zhǎng)和啰嗦,如果只對(duì)TestStand感興趣可只看第3部分內(nèi)容。
01
—
關(guān)于框架的你要先了解的一些事
“編程工作從大體上來(lái)分,你不是在開發(fā)自己的框架中,就是在別人的框架下進(jìn)行著開發(fā)。”
在測(cè)量測(cè)控以及計(jì)量檢測(cè)長(zhǎng)期開發(fā)過程中,隨著開發(fā)被測(cè)類型種類的增多,開發(fā)范圍的擴(kuò)展,你就會(huì)發(fā)現(xiàn):除了使用到的LabVIEW編程語(yǔ)言提供的編程結(jié)構(gòu),字符串,界面提示框等基礎(chǔ)庫(kù)函數(shù)外,在不同的業(yè)務(wù)類型的測(cè)試測(cè)控中都會(huì)有重復(fù)的代碼段,并且重復(fù)的主要表現(xiàn)形式有兩種,一種是低層的明顯可以識(shí)別出的顯式共用基礎(chǔ)功能代碼段,另外一種是隱式且較為抽象的高層算法策略。
為了消除重復(fù)冗余,顯式低層的共用基礎(chǔ)功能代碼段可以封裝為功能函數(shù)子Vi,并且進(jìn)一步按較大的功能模塊分組形成打包庫(kù)(lvlib)結(jié)構(gòu)或者是基礎(chǔ)功能類,也即基礎(chǔ)性框架(Framework),而隱式高層算法策略要著眼于“關(guān)注點(diǎn)分離”的概念,按照分層、分塊的思想切分成不同邏輯單元,應(yīng)用不同的面向過程和面向?qū)ο缶幊谭缎托纬煽梢詮?fù)用的高層邏輯框架,不管是高層模塊還是底層支持代碼都提供了的貫穿于多種相似的應(yīng)用程序的能力,即表現(xiàn)出一致性,這都是框架代碼的體現(xiàn)形式。
這一篇文章主要是講述Framework框架的概念、層次劃分、測(cè)量測(cè)控主流軟件框架應(yīng)用、調(diào)用框架的展示,以及如何開發(fā)自己的類庫(kù)和我們自己以往的相關(guān)開發(fā)經(jīng)驗(yàn),由于內(nèi)容較多故分解成為上下兩個(gè)部分。
首先,讓我們先從框架(Framework)的基本概念、三層分類以及設(shè)計(jì)三特性開始學(xué)習(xí),“Framework”在英文字典中的意思是骨架、框架,而在軟件工程領(lǐng)域中,“Framework指的是一組同時(shí)具備一致性、可重用性、可擴(kuò)展性三準(zhǔn)則的類庫(kù)。
框架(Framework)提供了一種構(gòu)建軟件系統(tǒng)所必需的復(fù)用基本架構(gòu)及功能,協(xié)助軟件開發(fā)者快速開發(fā)應(yīng)用程序,并且能夠顯著降低出錯(cuò)率,明顯提升開發(fā)效率,能夠提供顯著的規(guī)模經(jīng)濟(jì)效益,自從有了框架,開發(fā)人員就無(wú)須從頭開始編寫應(yīng)用程序。
框架 (Framework)會(huì)提供大部分部件,這些部件經(jīng)過開發(fā)人員的定制和拼裝,快速實(shí)現(xiàn)設(shè)計(jì);但是,框架(特別是領(lǐng)域?qū)倏蚣埽┮蚕鄳?yīng)的用規(guī)定套路固限住了開發(fā)人員的思維,強(qiáng)制大家遵循規(guī)定的規(guī)范來(lái)開發(fā)應(yīng)用程序。
一般按照從下到上的層次理論來(lái)劃分框架(Framework),最下層為基石層是基礎(chǔ)框架(Ba Framework ),中間層是程序框架(Application Framework),高層是領(lǐng)域框架 (Domain Framework)。
基礎(chǔ)框架(Ba Framework )是為了提供撰寫程序軟件所需要的基本功能,例如Win32 API 、.NET Framework的基礎(chǔ)編程語(yǔ)言庫(kù)(BCL)、或者LabVIEW中的基礎(chǔ)函數(shù)庫(kù)(目錄、文件操作、字符串、基本函數(shù)等等),基礎(chǔ)框架的最為顯著的特點(diǎn)是簡(jiǎn)單性及全面性,簡(jiǎn)單是指結(jié)構(gòu)簡(jiǎn)單,可能就只是一組功能函數(shù)或者是一些稍加包裝的類,并且程序員要用這些基礎(chǔ)功能模塊組合成程序時(shí)相當(dāng)?shù)暮臅r(shí)費(fèi)力;全面性是指功能覆蓋的層面是相當(dāng)?shù)膹V泛的,從基礎(chǔ)的文本處理到網(wǎng)絡(luò)傳輸?shù)鹊龋绦騿T可以使用基礎(chǔ)框架編寫不同領(lǐng)域的應(yīng)用程序,因此具備高度的靈活性和彈性,缺點(diǎn)是不夠便捷及有效率,基礎(chǔ)框架通常扮演者一個(gè)應(yīng)用程序的基礎(chǔ)角色。
程序框架(Application Framework)基礎(chǔ)框架(BF)提供了撰寫應(yīng)用程序的所需要的基礎(chǔ)功能函數(shù),但是效率不高,便捷性較差,而程序框架(AF)是構(gòu)架在基礎(chǔ)框架之上(BF),提供快速開發(fā)所需要的半成品功能,從而方便程序員提升開發(fā)效率,典型的程序框架(AF)就是頂頂有名的MFC框架,許多人都知道MFC框架將200多行的Windows桌面程序魔法般的縮減至只需20行,而.NET Framework Window Forms框架又將它進(jìn)一步改良成只需要?jiǎng)觿?dòng)鼠標(biāo)就可以完成的魔法。當(dāng)然高效率帶來(lái)的約束就是要按照程序框架(AF)的規(guī)范套路來(lái)編寫程序,另外領(lǐng)域也就受到相應(yīng)的限制,并且不能完全自由的組合基礎(chǔ)框架(BF)完成橫跨多領(lǐng)域的應(yīng)用軟件,在LabVIEW的編程語(yǔ)境中,比較典型的程序框架(AF)就是適用于多線程開發(fā)測(cè)控程序開發(fā)的操作者框架(Actor Framework),并且該框架應(yīng)用了諸多LVOOP的編程技術(shù)。
領(lǐng)域框架(Domain Framework)是為行業(yè)領(lǐng)域特殊定制的專屬框架,限制條件更多,提供的功能模塊相比與應(yīng)用框架(AF)更加的具體實(shí)用,使得程序員開發(fā)軟件速度無(wú)與倫比,另外不但速度提升了,需要開發(fā)代碼也大幅減少,代碼質(zhì)量和穩(wěn)定性也相應(yīng)的有了一定的保證,在計(jì)量測(cè)試行業(yè)最典型的領(lǐng)域框架莫過于Fluke公司的Met/Cal軟件平臺(tái)了,在國(guó)外的校準(zhǔn)軟件市場(chǎng)上等同于事實(shí)上的工業(yè)標(biāo)準(zhǔn),除了Fluke公司本身開發(fā)Met/Cal測(cè)試型號(hào)序列程序外,還有大量的第三方校準(zhǔn)公司為其提供定制化的測(cè)試序列程序。當(dāng)然,高效率的提升是犧牲軟件的廣泛性,提供特殊專屬功能所帶來(lái)的。并且開發(fā)一款一致性、可重用性和便于擴(kuò)展的領(lǐng)域框架是一項(xiàng)耗時(shí)費(fèi)力的編碼工程,并且還要不斷的重構(gòu)提煉,設(shè)計(jì)抽象才能越來(lái)越精確,這往往是中小型項(xiàng)目難以維系開發(fā)出領(lǐng)域框架的重要原因。
在了解了框架的三個(gè)層次分類后,讓我們?cè)龠M(jìn)一步學(xué)習(xí)一下框架設(shè)計(jì)的三個(gè)設(shè)計(jì)準(zhǔn)則:一致性、可重用性、可擴(kuò)展性;一致性是指框架代碼在被應(yīng)用時(shí)不受外界協(xié)作通信代碼的影響而始終如一的提供設(shè)計(jì)之初的功能,一致性體現(xiàn)在接口服務(wù)的一致性,用戶界面的一致性,代碼使用場(chǎng)景的一致性等等具體方面上;而可重用性則是程序代碼從重復(fù)的片段到逐漸封裝成功能函數(shù),進(jìn)而根據(jù)職責(zé)內(nèi)聚封裝為模組(類庫(kù))的程序進(jìn)化的最大內(nèi)驅(qū)力。
從另外一個(gè)角度考慮也是代碼經(jīng)濟(jì)學(xué)的最重要的體現(xiàn),可重用性可以體現(xiàn)為代碼重用,也可以提供為概念重用,在面向?qū)ο缶幊谭缎椭校訌?qiáng)調(diào)的是概念重用,是面向?qū)ο笤O(shè)計(jì)原則中依賴反轉(zhuǎn)的核心思想;框架可擴(kuò)展性是提供靈活、適用的代碼結(jié)構(gòu)所必需具備的能力,也是可重用性的重要技術(shù)保障手段,常常通過插件結(jié)構(gòu)提供擴(kuò)展能力。
02
—
自己的“玩具”框架
上面主要是概念性的框架分類介紹,下面結(jié)合我們自己的編程經(jīng)歷,講講對(duì)框架(Framework)開發(fā)認(rèn)知過程:記得我們剛剛開始接觸LabVIEW編程時(shí),那時(shí)候的版本還是6i,毫無(wú)軟件工程和程序框架(Program Framework)的任何的概念,只是心急火燎的想把手頭的重復(fù)體力工作通過編程映射、轉(zhuǎn)換為可以自動(dòng)測(cè)試的應(yīng)用程序,最開始從LabVIEW系統(tǒng)自帶的硬件設(shè)備驅(qū)動(dòng)和編程范例樣程直接改造,以適應(yīng)我們的測(cè)試具體要求.
因?yàn)槭亲援a(chǎn)自銷的開發(fā)模式,所以那時(shí)候根本就不明白啥叫用戶界面,如何發(fā)布應(yīng)用程序,就在開發(fā)編輯環(huán)境下邊修改邊直接運(yùn)行,所有的數(shù)據(jù)采集完成后就通過一個(gè)第三方基于(ActiveX)的Excel工具函數(shù)包寫入到定制好的Excel被測(cè)設(shè)備標(biāo)準(zhǔn)模板當(dāng)中去,Excel電子表格文件即是我們的運(yùn)行時(shí)界面,即呈現(xiàn)數(shù)據(jù)采集過程,又是最終測(cè)試完成后數(shù)據(jù)保存的文檔載體,程序主框圖代碼雖然也是按照被測(cè)項(xiàng)目的項(xiàng)目封裝要求具體分解成獨(dú)立子VI調(diào)用函數(shù),但是調(diào)用過程卻是直接寫死在順序幀結(jié)構(gòu)節(jié)點(diǎn)中,有時(shí)候測(cè)試項(xiàng)目需要定制,就通過與項(xiàng)目一一對(duì)應(yīng)布爾判斷來(lái)選擇,各個(gè)子程序Vi中到處都是Crtl+C/V的重復(fù)代碼片段,雜亂無(wú)序的高底層邏輯代碼混疊交織在一起,維護(hù)和修改代碼痛苦不堪,雖然程序代碼邏輯現(xiàn)在回想起來(lái),簡(jiǎn)直是慘不忍睹,不堪入目,就更不要提什么封裝性、復(fù)用性、一致性、可擴(kuò)展性等等這些陽(yáng)春白雪的軟件工程名詞了,但是由于是自己開發(fā)自己改,所以的的確確是能用,就像一輛二十年的老舊拖拉機(jī)也比人跑的快,因此也就實(shí)打?qū)嵉奶岣吡宋覀兊墓ぷ餍省?/p>
后來(lái),我們使用LabVIEW 8.2版本提供的項(xiàng)目管理的能力結(jié)合自己慢慢認(rèn)知到的初級(jí)的軟件工程概念,使用NI公司提供的報(bào)告生成器(RGT)及數(shù)據(jù)庫(kù)連接工具包(DCT)軟件后,開始著手花費(fèi)很大的精力、資源對(duì)原先的代碼進(jìn)行了全面的重構(gòu)梳理,封裝共用函數(shù)到功能模組中形成可重用的工具驅(qū)動(dòng)包,按照關(guān)注點(diǎn)分離、功能分組的邏輯結(jié)構(gòu)將共用的功能提取出來(lái)分層處理,引入人機(jī)操作使用界面和測(cè)試過程與證書報(bào)告分離的流程切分,特別是使用動(dòng)態(tài)調(diào)用功能完成對(duì)測(cè)試項(xiàng)目的靈活調(diào)用,詳細(xì)的框架情況請(qǐng)參考我知乎的介紹文章。
隨著分解功能的越清晰,代碼的復(fù)用性也就越來(lái)越來(lái)強(qiáng),在不斷的迭代開發(fā)過程中,編程人員的能力也就越來(lái)越高,組織結(jié)構(gòu)也演變成核心與基礎(chǔ)庫(kù)代碼編程人員和應(yīng)用參數(shù)領(lǐng)域編程人員兩組開發(fā)者團(tuán)隊(duì)共同協(xié)作,使用服務(wù)接口共同開發(fā)編程,從而上層調(diào)用邏輯層次代碼逐漸演變成為具備我們自己行業(yè)(電學(xué)、無(wú)線電參數(shù))領(lǐng)域特點(diǎn)的專屬領(lǐng)域框架(Application Framework)。
該框架(Application Framework)將諸如操作用戶界面、被測(cè)件配置、標(biāo)準(zhǔn)設(shè)備配置、測(cè)試項(xiàng)目選擇及項(xiàng)目動(dòng)態(tài)調(diào)用、報(bào)告生成等共用邏輯功能提升到高層操作框架中以便達(dá)到復(fù)用,具體的被測(cè)項(xiàng)目待調(diào)用VI則可以動(dòng)態(tài)進(jìn)行擴(kuò)展,初步形成了框架設(shè)計(jì)的基本準(zhǔn)則:一致性、可重用性、可擴(kuò)展性。
首先一致性體現(xiàn)在所有的參數(shù)被測(cè)設(shè)備程序都使用相同的人機(jī)操作界面,完成配置、測(cè)試、報(bào)告生成的統(tǒng)一測(cè)控流程,錯(cuò)誤處理及提示也都統(tǒng)一一致,降低了使用者測(cè)學(xué)習(xí)認(rèn)知時(shí)間,提高了開發(fā)者的開發(fā)效率,只需要開發(fā)自己的底層調(diào)用測(cè)試序列就可與上層框架無(wú)縫整合成可實(shí)用的程序。由于開發(fā)過程是演化而成的,測(cè)試上層框架保持了最適應(yīng)的可重用性,并通過動(dòng)態(tài)調(diào)用的函數(shù)功能模板保證其可擴(kuò)展性,具體的被測(cè)項(xiàng)目測(cè)試子VI只要符合公共函數(shù)接口模板即可完成可插拔式的插件結(jié)構(gòu)(Plug-in)擴(kuò)展。
當(dāng)然,使用框架開發(fā)效率的提升也必然帶了相應(yīng)的約束性,如必須遵循一套相對(duì)固定的開發(fā)、發(fā)布的流程,并且只能完成單一被測(cè)的測(cè)試,不能同時(shí)提供多臺(tái)套的并行測(cè)試任務(wù)服務(wù),框架沒有提供的多文檔格式的支持功能就無(wú)法輸出文本格式到特定的文檔載體。當(dāng)然很多情況是由于開發(fā)框架的人員認(rèn)知、需求范圍、開發(fā)能力、時(shí)間精力等諸多條件受限制,導(dǎo)致的框架提供哪些功能,不提供哪些服務(wù)。
在其后來(lái)在工作和學(xué)習(xí)過程中,接觸到了測(cè)控行業(yè)的成熟商業(yè)級(jí)別的框架TestStand,對(duì)比分析了一下,發(fā)現(xiàn)我們不知不覺中使用LabVIEW實(shí)現(xiàn)了一個(gè)符合我們對(duì)自動(dòng)校準(zhǔn)測(cè)試程序認(rèn)知的、最小化TestStand的功能子集,又重復(fù)地生產(chǎn)了一個(gè)“破車輪子”,但是由于我們的存量代碼較多且工程師們已熟練掌握了現(xiàn)有的代碼開發(fā)模式路程,因此目前并沒有大規(guī)模的移植到TestSand平臺(tái)上開發(fā)。下一步準(zhǔn)備部分試驗(yàn)開發(fā)應(yīng)用TestStand框架平臺(tái)軟件的開發(fā)我們的計(jì)量校準(zhǔn)軟件。當(dāng)然研究成熟的商用調(diào)用框架非常有助于我們開發(fā)自己調(diào)用框架,或者完全放棄自己重復(fù)制造破車輪代碼,直接基于成熟的商用調(diào)用框架進(jìn)行開發(fā)。
要想理解成熟的商用調(diào)用框架,我們首先先將視野從計(jì)量檢定校準(zhǔn)的自動(dòng)化測(cè)試向上擴(kuò)展至通用自動(dòng)化測(cè)試系統(tǒng)的大概念上來(lái)討論,這樣才能更好的理解框架在其中起到的關(guān)鍵作用。因?yàn)閺拇蟮姆懂犐蟻?lái)講,計(jì)量檢定校準(zhǔn)的自動(dòng)化測(cè)試是屬于自動(dòng)測(cè)試的一種特殊類別而已,其特殊點(diǎn)就是其它自動(dòng)化測(cè)試系統(tǒng)中標(biāo)準(zhǔn)的測(cè)量設(shè)備成為了計(jì)量檢定/校準(zhǔn)中的被測(cè)件(Device Under Test),并由此帶來(lái)的測(cè)試指標(biāo)性能要求更高和需要最高性能的計(jì)量標(biāo)準(zhǔn)設(shè)備支持。
一般來(lái)說,自動(dòng)化測(cè)試任務(wù)是由“自動(dòng)化測(cè)試系統(tǒng)”來(lái)實(shí)施,自動(dòng)化測(cè)試系統(tǒng)通過減少人工干預(yù),顯著提升了測(cè)試速度,并且測(cè)試結(jié)果的一致性得到良好的保障,伴隨著現(xiàn)代工業(yè)的迅猛發(fā)展。工業(yè)制造業(yè)的產(chǎn)線和計(jì)量服務(wù)單位的自動(dòng)化程度越來(lái)越高,工業(yè)機(jī)器臂更為廣泛的替代人工操作,機(jī)器視覺和運(yùn)動(dòng)流程控制廣泛的應(yīng)用于各類類型測(cè)試當(dāng)中去。
一個(gè)完整的自動(dòng)化測(cè)試系統(tǒng)由測(cè)試站、儀器設(shè)備、測(cè)控軟件這三個(gè)部分總成。
而往往測(cè)試軟件是自動(dòng)化測(cè)試系統(tǒng)中最靈活、最為核心的部分,在著手搭建自動(dòng)化測(cè)試系統(tǒng)的過程中,需要確定測(cè)試站的詳細(xì)配置、儀器設(shè)備的選型,UUT的測(cè)試規(guī)格書和需求文檔則基本上定義了對(duì)儀器設(shè)備的性能要求,重點(diǎn)要考慮的問題就是軟件的設(shè)計(jì),而從設(shè)計(jì)功能上考慮,測(cè)控軟件最少需要包含以下四個(gè)功能模組。
用戶界面(Ur Interface):一般來(lái)說測(cè)試應(yīng)用程序需要給操作人員一個(gè)可視化的用戶界面,它的作用是提示測(cè)試軟件的操作人員通過鼠標(biāo)點(diǎn)擊或者鍵盤輸入完成啟動(dòng)測(cè)試、完成必要的測(cè)試配置、查詢測(cè)試進(jìn)度、異常情況處理提示、測(cè)試完成后顯示結(jié)果等測(cè)試任務(wù)。通常情況下測(cè)試軟件的界面設(shè)計(jì)相比于專門的組態(tài)類型的數(shù)據(jù)采集類的界面更加通用和普通一些,從而可以增加測(cè)試軟件的適用性。
測(cè)試序列程序(Sequence Sub Program):針對(duì)某種特定類型被測(cè)件(DUT)的測(cè)試序列,測(cè)試序列中一般包含一系列的測(cè)試步驟,不同型號(hào)的測(cè)試序列(DUT)的測(cè)試序列的組成是不相同的,現(xiàn)在主流的測(cè)試管理調(diào)用框架平臺(tái)都支持不同的語(yǔ)言編寫的測(cè)試序列,即編程環(huán)境是異構(gòu)組成的。一般測(cè)試序列程序的開發(fā)往往針對(duì)的是某個(gè)單獨(dú)的被測(cè)件的功能或者是性能的開發(fā),通常是一個(gè)獨(dú)立的測(cè)試功能單元,從概念上講,序列程序類似于編程環(huán)境開發(fā)的子程序(或者是LabVIEW的子Vi),例如前面的系列文章我們提到開發(fā)的直流電源為待測(cè)件的“輸出電壓負(fù)載效應(yīng)”校準(zhǔn)/檢定項(xiàng)目,就是一個(gè)單獨(dú)的測(cè)試序列,在測(cè)試中需要選取直流電壓表、與之相匹配的直流負(fù)載,并且按照一定的設(shè)定策略(檢定規(guī)程或者校準(zhǔn)規(guī)范所要求的)進(jìn)行被測(cè)件的性能測(cè)試。這些將會(huì)調(diào)動(dòng)儀器驅(qū)動(dòng)程序,測(cè)試結(jié)果判斷,如果需要還有自研開發(fā)的封裝函數(shù),當(dāng)然采用面向?qū)ο蠹夹g(shù)的開發(fā)范型會(huì)給我們帶來(lái)更易于擴(kuò)展與維護(hù)的解決方案,提供更好的模塊化和組織化。
自動(dòng)化測(cè)試調(diào)用程序(Test Exec Program):測(cè)試管理調(diào)用程序目標(biāo)是在自動(dòng)化測(cè)試系統(tǒng)開發(fā)過程中提供一個(gè)通用性的行業(yè)平臺(tái)化軟件,所以必須適應(yīng)和滿足異常龐大而多樣化的測(cè)試類型和用戶需求,與待調(diào)用的測(cè)試序列程序的千人千面相反,自動(dòng)化測(cè)試調(diào)用程序中則包含共用的邏輯實(shí)現(xiàn)代碼,實(shí)現(xiàn)通用的功能,并且往往需要有足夠廣泛的適應(yīng)性,來(lái)滿足于不同類型的被測(cè)件DUT的測(cè)試需求,這也就要求綜合管理測(cè)試軟件的各個(gè)主要組成模塊單元必須是靈活可配置,并且盡可能多的是可擴(kuò)展的插件模式,使得用戶交互界面、測(cè)試過程函數(shù)調(diào)用、并發(fā)執(zhí)行、文件格式、結(jié)果的存儲(chǔ)與呈現(xiàn)以及核心的測(cè)試配置等諸多方面達(dá)到靈活、擴(kuò)展和定制的應(yīng)用目標(biāo)。高層模塊測(cè)試調(diào)動(dòng)程序?qū)崿F(xiàn)的是底層測(cè)試序列步驟功能的通用功能要求。進(jìn)一步具體而言:自動(dòng)化測(cè)試調(diào)用程序主要完成以下功能要求:負(fù)責(zé)測(cè)試程序子序列的加載、測(cè)試過程數(shù)據(jù)在用戶界面的更新、設(shè)定測(cè)試相關(guān)的配置、并發(fā)執(zhí)行、生成測(cè)試結(jié)果報(bào)表以及存儲(chǔ)數(shù)據(jù)到數(shù)據(jù)庫(kù)系統(tǒng),而上述的測(cè)試序列程序則形成具體的測(cè)試步驟,組合排列起來(lái)形成特定順序完成一一被調(diào)用,并且在管理測(cè)試步驟時(shí)要求步驟順序的調(diào)整簡(jiǎn)便快捷。在自動(dòng)化測(cè)試調(diào)用程序提供的統(tǒng)一接口或者是代碼適配器(Code Adapter)下,開發(fā)人員將核心資源(精力、時(shí)間)投入到差異的測(cè)試序列子程序開發(fā)當(dāng)中去,針對(duì)特定的產(chǎn)品被測(cè)件,通過編寫相應(yīng)的測(cè)試序列完成所需要的功能、性能、指標(biāo)測(cè)試,從而達(dá)到上層的自動(dòng)化測(cè)試調(diào)用程序可以最大化達(dá)到復(fù)用效果,縮短整體開發(fā)系統(tǒng)的時(shí)間,更為快速便捷、有效的輸出大批量可被調(diào)用的插件序列程序,形成規(guī)模效益。
數(shù)據(jù)管理系統(tǒng)(Data Storage):數(shù)據(jù)管理系統(tǒng)用于實(shí)現(xiàn)數(shù)據(jù)的管理,其核心是存儲(chǔ)數(shù)據(jù)的容器存儲(chǔ)庫(kù),該存儲(chǔ)庫(kù)提供對(duì)外的接口完成數(shù)據(jù)的添加、刪除、查詢、更新和讀取,隨著越來(lái)越多的自動(dòng)測(cè)試應(yīng)用程序?qū)?shù)據(jù)的重視,數(shù)據(jù)管理系統(tǒng)單元變得越發(fā)的重要。
實(shí)際上,仔細(xì)觀察自動(dòng)化測(cè)試調(diào)用程序(Test Exec Program)的功能:如完成調(diào)用底層測(cè)試序列程序,完成公共功能如界面顯示、數(shù)據(jù)管理與保存等功能,其實(shí),就是我們前面提到過的極其典型的測(cè)量測(cè)控的領(lǐng)域?qū)I(yè)框架。因此,更加細(xì)致地學(xué)習(xí)與比較測(cè)量領(lǐng)域的框架軟件先進(jìn)理念和模式,特別是在成熟的商業(yè)平臺(tái)調(diào)用程序軟件上開發(fā)計(jì)量校準(zhǔn)軟件的典型應(yīng)用也有助于提高自己的開發(fā)框架的能力。
03
—
真正的主角TestStand
有了清晰的整體測(cè)試系統(tǒng)軟件概念后,特別是了解了調(diào)用管理程序(Test Exec Framework)就是框架(Framework)在測(cè)量測(cè)控領(lǐng)域的典型體現(xiàn)后,讓我們看看成熟的商用測(cè)試系統(tǒng)軟件是如何將這些概念更為具體的落地的,目前應(yīng)用較為廣泛的自動(dòng)測(cè)試系統(tǒng)平臺(tái)軟件除了我們前面提到過的NI公司的TestStand外,還有就是Keysight公司TestExec SL(非常有意思的是TestStand平臺(tái)本身的運(yùn)行時(shí)執(zhí)行文件的名稱是TestExec.exe ,恰恰是Keysight公司的調(diào)用平臺(tái)的名稱),測(cè)試管理軟件目前基本是這兩家獨(dú)大、贏者通吃的局面。應(yīng)用行業(yè)涵蓋了電子、汽車、醫(yī)療、半導(dǎo)體、通信、航空、工業(yè)機(jī)械、能源等,開發(fā)的應(yīng)用模塊和各種相關(guān)工具包有移動(dòng)通信、音視頻測(cè)試、機(jī)器視覺、開關(guān)管理、半導(dǎo)體測(cè)試、需求管理、分布式數(shù)據(jù)管理、用戶界面開發(fā)、配置管理等等。
該類軟件才是行業(yè)中真正的巨無(wú)霸,也是借助平臺(tái)軟件系統(tǒng)發(fā)力引流促進(jìn)自己硬件產(chǎn)品銷售的大殺器,有了競(jìng)爭(zhēng)就不免有排名,那么誰(shuí)是行業(yè)的第一名呢?!由于尚未找到市場(chǎng)份額方面的具體數(shù)字,所以讓我們先對(duì)比看看TestStand和TestExec SL的功能列表。
從性能特點(diǎn)與功能對(duì)比表上來(lái)看,兩者經(jīng)過十幾年的不斷更新,都能夠滿足自動(dòng)化產(chǎn)線所需要綜合測(cè)試平臺(tái)的測(cè)試序列管理通用要求,所以從功能列表中很難得出誰(shuí)是王中王的地位,并且最為有意思的一點(diǎn)是:也都能通過微軟公司的通用對(duì)象組件技術(shù)(COM/ActiveX)提供對(duì)競(jìng)爭(zhēng)對(duì)象的主流圖形化軟件編程環(huán)境開發(fā)的測(cè)試序列支持,其中NI的TestStand支持競(jìng)爭(zhēng)對(duì)手Keysight公司的類似的圖形化編程軟件VEE,同樣的TestExec SL也支持了NI公司的當(dāng)家花旦LabVIEW,兩家公司很好的詮釋了什么是競(jìng)合關(guān)系。
雖然TestStand和TestExec SL不好直接對(duì)比得出誰(shuí)強(qiáng)誰(shuí)弱的結(jié)論,但是圖形化編程環(huán)境VEE和LabVIEW還是是很容易對(duì)比得出結(jié)論的,從國(guó)內(nèi)發(fā)表的論文、出版的圖書和論壇討論帖子的數(shù)量均是LabVIEW占有絕對(duì)的優(yōu)勢(shì)地位,在測(cè)控行業(yè)中國(guó)外也有類似的調(diào)查圖表顯示LabVIEW(47%)相比VEE(8%)遙遙領(lǐng)先。
LabVIEW廣泛的測(cè)控工程師使用基礎(chǔ),使得不管是從個(gè)人能力提升開始使用TestStand的技能發(fā)展的角度來(lái)看,還大量是編寫底層測(cè)控子序列Vi的就業(yè)適應(yīng)性的角度來(lái)看,TestStand毫無(wú)疑問的是更好的選擇。當(dāng)然,企業(yè)開發(fā)考慮角度與個(gè)人技能與就業(yè)角度不盡相同,更多是是考慮到從事行業(yè)領(lǐng)域特色的本身、遺留代碼庫(kù)的情況、兩家公司的技術(shù)背景特色等等,就我所有限接觸的行業(yè)來(lái)看,電子通信等行業(yè)TestStand獨(dú)占鰲頭,TestExec SL在汽車電子(ECU)行業(yè)積累深厚。
另外有趣的是,兩家公司分別應(yīng)用自己的調(diào)用平臺(tái)開發(fā)了支持本公司硬件產(chǎn)品的專用計(jì)量校準(zhǔn)測(cè)試軟件,即NI公司的Calibration Executive系統(tǒng)軟件和KeySight公司的N7800軟件(具體的對(duì)比可以參看以前博客相關(guān)文章),完美的詮釋了各自調(diào)用框架系統(tǒng)的的強(qiáng)項(xiàng)和能力,也是我們編寫自己的上層共用參數(shù)調(diào)用框架時(shí),可以模范與學(xué)習(xí)的范例。
還有個(gè)題外話可以八卦一下,在NI公司出品的測(cè)量測(cè)控等領(lǐng)域軟件使用者當(dāng)中,有著一條秘密的鄙視鏈條,使用不同產(chǎn)品的人處在該鏈條的不同的位置,毫無(wú)疑問給不會(huì)開發(fā)程序的工程師們使用的花里胡哨的LabVIEW是最被鄙視的,處在鄙視鏈的最底層,更高一層的是使用.NET Framework Measurement Studio平臺(tái)開發(fā)的工程師,最高等級(jí)的就是會(huì)使用LabWindows/CVI天龍人工程師們擁有最高的榮譽(yù)度。當(dāng)然以上鄙視鏈條還有個(gè)特殊附件規(guī)則,一旦掌握了附加技能序列調(diào)用管理軟件TestStand,就可以在鄙視鏈自動(dòng)向上遞進(jìn)一級(jí)。
由于自己對(duì)LabVIEW較為熟稔,理所當(dāng)然的也是歸屬到不會(huì)編程的測(cè)控工程師群內(nèi),因此也就愛屋及烏的重點(diǎn)關(guān)注過母公司NI出品的TestStand,TestStand 1.0是美國(guó)NI公司于1998年發(fā)布的測(cè)控序列調(diào)用執(zhí)行器,并逐漸成長(zhǎng)為大型綜合測(cè)試管理軟件。其目標(biāo)是“為自動(dòng)化測(cè)試系統(tǒng)軟件的開發(fā)者們提供一個(gè)高質(zhì)量的開放式擴(kuò)展架構(gòu)和高性能組件的模塊化體系”,目前最新版本的TestStand是2021 SP1版本。
參考文獻(xiàn):
《Framework的設(shè)計(jì)與應(yīng)用—基于Windows Forms的應(yīng)用開發(fā)實(shí)踐》,黃忠成,電子工業(yè)出版社,2006年。
《TestStand工業(yè)自動(dòng)化測(cè)試管理》,胡典鋼,電子工業(yè)出版社,2016年
《Keysight TestExec SL 6.1 技術(shù)資料.pdf》,Keysight Corporation, 2014年
LabVIEW易學(xué)難精,我是李時(shí)珍,也是一名LabVIEW編程開發(fā)的的持續(xù)學(xué)習(xí)者、兼搬磚愛好者,知乎上講解LabVIEW內(nèi)容最啰嗦的中年油膩大叔,沒有之一!
大家共同成長(zhǎng)與進(jìn)步!
如果,感覺對(duì)你有幫助的話請(qǐng)點(diǎn)贊,分享轉(zhuǎn)發(fā),沒關(guān)注的加個(gè)關(guān)注!
在學(xué)習(xí)的道路上你我不孤單。
你的支持與關(guān)注是我持續(xù)輸出最大的動(dòng)力!
本文發(fā)布于:2023-02-28 20:17:00,感謝您對(duì)本站的認(rèn)可!
本文鏈接:http://www.newhan.cn/zhishi/a/167766761783531.html
版權(quán)聲明:本站內(nèi)容均來(lái)自互聯(lián)網(wǎng),僅供演示用,請(qǐng)勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)刪除。
本文word下載地址:measurementstudio(measurementstudio6.0序列號(hào)).doc
本文 PDF 下載地址:measurementstudio(measurementstudio6.0序列號(hào)).pdf
| 留言與評(píng)論(共有 0 條評(píng)論) |