, ,
(陸軍工程大學(xué)石家莊校區(qū) 導(dǎo)彈工程系,石家莊 050003)
隨著電子技術(shù)、計(jì)算機(jī)技術(shù)的不斷進(jìn)步發(fā)展,對(duì)ATS(Automatic Test System,自動(dòng)測試系統(tǒng))越來越高。傳統(tǒng)的ATS軟件平臺(tái)是以儀器為核心,存在很大的局限性,主要在于儀器的互換性差和TPS(Test Program Sets,測試程序集)不可移植兩個(gè)方面,極大阻礙了ATS的通用化發(fā)展。而面向信號(hào)的測試軟件平臺(tái)是當(dāng)前ATS發(fā)展的主流,它以信號(hào)為核心,整個(gè)測試過程實(shí)質(zhì)上就是信號(hào)的激勵(lì)與響應(yīng)過程,這種以信號(hào)來描述測試需求和儀器能力的思想為提高TPS可移植能力以及儀器互換能力提供了可能。構(gòu)建通用的ATS軟件平臺(tái),需要對(duì)多種格式測試診斷信息以及ATS中各種接口進(jìn)行標(biāo)準(zhǔn)化、統(tǒng)一化,而ATML(Automatic Test Markup Language,自動(dòng)測試標(biāo)記語言)的提出,為這一問題提供了方法。ATML標(biāo)準(zhǔn)使用XML(eXtention Marked Language,可擴(kuò)展標(biāo)記語言)來實(shí)現(xiàn)測試系統(tǒng)中測試信息的標(biāo)準(zhǔn)化描述,通過建立符合ATML標(biāo)準(zhǔn)的文檔,可實(shí)現(xiàn)測試結(jié)果、測試儀器功能、測試策略需求、信號(hào)的特征信息、診斷信息以及被測對(duì)象的規(guī)格、需求等信息共享、互換,進(jìn)而實(shí)現(xiàn)測試系統(tǒng)軟件平臺(tái)的開發(fā)[1-2]。
ATML標(biāo)準(zhǔn)作為自動(dòng)測試系統(tǒng)中的標(biāo)準(zhǔn)交換媒介,提供了測試系統(tǒng)中信息交換的標(biāo)準(zhǔn)數(shù)據(jù)方式,實(shí)現(xiàn)了對(duì)所有測試信息的支持。ATML 標(biāo)準(zhǔn)體系中又劃分為 9 個(gè)子標(biāo)準(zhǔn),表1列出了標(biāo)準(zhǔn)集合以及 Schema 定義。
ATML 標(biāo)準(zhǔn)定義了構(gòu)建一個(gè) ATS 需要的大部分的要素,提供了測試信息交換和共享的框架結(jié)構(gòu)及詳細(xì)內(nèi)涵,它定義的各個(gè)組件標(biāo)準(zhǔn)構(gòu)成了一次測試執(zhí)行的過程中需要共享和交換的測試信息的全集,提供了獲得測試和測試程序的靜態(tài)信息以及實(shí)時(shí)的測試信息的機(jī)制。因此,ATML標(biāo)準(zhǔn)的應(yīng)用將使ATS實(shí)現(xiàn)以下目標(biāo):
支持測試信息的流動(dòng);支持整個(gè)TPS生命周期;支持TPS的移植和復(fù)用;支持ATML的開發(fā)工具;支持動(dòng)態(tài)測試序列以充分利用歷史數(shù)據(jù)[3-4]。
測試系統(tǒng)軟件主要包括計(jì)算機(jī)操作系統(tǒng)、測試程序開發(fā)和管理環(huán)境、測試程序運(yùn)行環(huán)境,以及在測試程序開發(fā)環(huán)境中開發(fā)、在測試程序運(yùn)行環(huán)境中執(zhí)行的信號(hào)模型、系統(tǒng)模型、測試資源控制程序、自檢校準(zhǔn)測試程序等。測試系統(tǒng)軟件支持ATML測試程序的開發(fā)和執(zhí)行[5-7]。
表1 窗口長度為N的不同窗函數(shù)性能對(duì)比
測試系統(tǒng)軟件結(jié)合系統(tǒng)硬件設(shè)計(jì)采用分布式結(jié)構(gòu),進(jìn)行系統(tǒng)功能分解后實(shí)現(xiàn)管理、測試功能雙分離,管理和測試功能之間通過組件接口進(jìn)行數(shù)據(jù)交互,支持軟件模塊化、可重用。
開發(fā)/管理功能部分包括系統(tǒng)管理平臺(tái)、TPS開發(fā)平臺(tái)和綜合數(shù)據(jù)庫,實(shí)現(xiàn)系統(tǒng)資源配置、操作權(quán)限管理、數(shù)據(jù)模型管理、儀器驅(qū)動(dòng)管理、TPS管理、TPS開發(fā)、TPS移植、TPS導(dǎo)入/導(dǎo)出、測試數(shù)據(jù)管理、故障診斷、數(shù)據(jù)信息化應(yīng)用、系統(tǒng)備份/恢復(fù)等功能,提供測試系統(tǒng)工作狀態(tài)以及綜合數(shù)據(jù)等信息。
測試運(yùn)行功能部分主要為TPS運(yùn)行平臺(tái),調(diào)度各類系統(tǒng)資源實(shí)現(xiàn)TPS的運(yùn)行、模擬運(yùn)行和調(diào)試等功能,滿足測試對(duì)象的功能檢查、性能測試、設(shè)備調(diào)教和歷程記錄等需求。
測試系統(tǒng)軟件依據(jù)ATML標(biāo)準(zhǔn)建立軟件架構(gòu)、數(shù)據(jù)和信號(hào)模型,并將其納入綜合數(shù)據(jù)庫進(jìn)行管理及配置,通過系統(tǒng)管理平臺(tái)、TPS開發(fā)平臺(tái)和TPS運(yùn)行平臺(tái)實(shí)現(xiàn)TPS開發(fā)和運(yùn)行過程的規(guī)范化、通用化和標(biāo)準(zhǔn)化。
測試系統(tǒng)軟件基于IEEE-1641標(biāo)準(zhǔn)定義信號(hào),基于IEEE-1671和IEEE-1636等系列標(biāo)準(zhǔn)進(jìn)行測試信息及結(jié)果的描述和應(yīng)用,通過TPS開發(fā)平臺(tái)匹配綜合數(shù)據(jù)庫內(nèi)的數(shù)據(jù)模型形成被測對(duì)象TPS,由系統(tǒng)管理平臺(tái)統(tǒng)一管理和調(diào)度,TPS運(yùn)行平臺(tái)具體負(fù)責(zé)TPS的運(yùn)行支持和交互。
測試系統(tǒng)軟件建立開放式、標(biāo)準(zhǔn)化的軟件體系結(jié)構(gòu),其管理和測試功能各組成部分均為獨(dú)立功能軟件。
綜合數(shù)據(jù)庫為測試系統(tǒng)軟件綜合數(shù)據(jù)源。
系統(tǒng)管理平臺(tái)是綜合數(shù)據(jù)庫的管理和應(yīng)用前端,提供測試系統(tǒng)軟件管理功能的人機(jī)接口,負(fù)責(zé)測試系統(tǒng)所有硬件、軟件及數(shù)據(jù)的管理和配置功能。
TPS開發(fā)平臺(tái)掛接于系統(tǒng)管理平臺(tái),本地訪問綜合數(shù)據(jù)庫,實(shí)現(xiàn)TPS的開發(fā)和移植。
TPS運(yùn)行平臺(tái)遠(yuǎn)程訪問綜合數(shù)據(jù)庫,提供測試系統(tǒng)軟件測試功能的人機(jī)接口,負(fù)責(zé)被測對(duì)象TPS的測試運(yùn)行和調(diào)試功能。
TPS開發(fā)平臺(tái)基于ATML標(biāo)準(zhǔn),構(gòu)建面向信號(hào)的通用TPS開發(fā)平臺(tái),支持TPS移植。TPS開發(fā)平臺(tái)采用開放式結(jié)構(gòu),由一組用于TPS開發(fā)和輔助的功能軟件集組成,同時(shí)形成TPS開發(fā)規(guī)范用于指導(dǎo)和約束TPS開發(fā)[8-10]。
TPS開發(fā)平臺(tái)分為建模層、開發(fā)層和應(yīng)用層,如圖1所示。
圖1 TPS開發(fā)平臺(tái)架構(gòu)示意
建模層提供測試系統(tǒng)系統(tǒng)建模工具,根據(jù)測試系統(tǒng)系統(tǒng)數(shù)據(jù)模型生成符合ATML要求的被測對(duì)象描述文件集合。
開發(fā)層為TPS開發(fā)平臺(tái)的功能模塊組合,通過圖形和表單方式完成測試信號(hào)、測試參數(shù)、測試項(xiàng)目的組合開發(fā),也用于外部TPS的驗(yàn)證和移植,形成符合被測對(duì)象描述文件要求的測試項(xiàng)目序列。
應(yīng)用層是TPS開發(fā)平臺(tái)的執(zhí)行引擎,將被測對(duì)象測試項(xiàng)目序列與測試系統(tǒng)系統(tǒng)數(shù)據(jù)模型進(jìn)行匹配,形成可供TPS運(yùn)行平臺(tái)使用的測試執(zhí)行序列。
開發(fā)人員按照測試系統(tǒng)軟件開發(fā)規(guī)范,使用TPS開發(fā)平臺(tái)可以形成各測試對(duì)象的TPS,完成TPS開發(fā)和移植,主要功能包括:
UUT建模:建立匹配測試系統(tǒng)數(shù)據(jù)模型和具體被測對(duì)象的UUT描述實(shí)例,包括UUT信息的定義、UUT插針定義、UUT插針組、UUT信號(hào)與UUT插針組的匹配定義、UUT與接口適配器的連接定義等;
接口適配器建模:建立匹配測試系統(tǒng)數(shù)據(jù)模型和具體被測對(duì)象的接口適配器描述實(shí)例,包括接口適配器的基本信息、插針定義、以及與測試系統(tǒng)、UUT之間的連接關(guān)系定義等;
測試信號(hào)建模:建立匹配測試系統(tǒng)數(shù)據(jù)模型和具體被測對(duì)象的信號(hào)描述實(shí)例,包括信號(hào)的名稱、類型、方向等測試信號(hào)定義,以及參數(shù)、范圍、分辨率、精確度等信號(hào)參數(shù)屬性的描述信息;
測試配置建模:建立匹配測試系統(tǒng)數(shù)據(jù)模型和具體被測對(duì)象的測試配置描述實(shí)例,包括被測對(duì)象關(guān)聯(lián)的硬件、軟件和相關(guān)文檔等配置信息;
測試描述建模:建立匹配測試系統(tǒng)數(shù)據(jù)模型和具體被測對(duì)象的測試描述實(shí)例,包括UUT執(zhí)行測試時(shí)所需要的測試需求(激勵(lì)信號(hào)、響應(yīng)信號(hào)等)、測試診斷、接口需求以及測試的執(zhí)行行為等物理特性及操作需求信息;
測試結(jié)果建模:建立匹配測試系統(tǒng)數(shù)據(jù)模型和具體被測對(duì)象的測試結(jié)果描述實(shí)例,包括測量值、測試狀態(tài)、以及相關(guān)的操作員、測試站和環(huán)境等信息;
TPS開發(fā):采用表單和圖形的方式描述測試流程、UUT、適配器等,通過面向信號(hào)的測試程序開發(fā)方式,形成ATML測試程序,滿足UUT檢測需求;
TPS導(dǎo)入/導(dǎo)出:支持UUT、適配器、測試配置、測試需求等描述信息文件在不同測試系統(tǒng)平臺(tái)的導(dǎo)入、導(dǎo)出,并編譯生成TPS;
TPS轉(zhuǎn)換:對(duì)TPS進(jìn)行移植檢查和驗(yàn)證,將其轉(zhuǎn)換為符合測試系統(tǒng)軟件識(shí)別和運(yùn)行的TPS。
測試結(jié)果信息的主要作用是向測試系統(tǒng)軟件傳遞各個(gè)測試項(xiàng)目的結(jié)果判據(jù)信息,其標(biāo)準(zhǔn)化描述是實(shí)現(xiàn)不同平臺(tái)之間測試結(jié)果信息交換的關(guān)鍵,并且標(biāo)準(zhǔn)化的測試結(jié)果信息對(duì)于實(shí)現(xiàn)ATS被測單元的通用性起著至關(guān)重要的作用。利用 ATML 標(biāo)準(zhǔn)中的TestResults.xsd可對(duì)測試結(jié)果進(jìn)行標(biāo)準(zhǔn)化描述。
ATML標(biāo)準(zhǔn)中的TestResults.xsd是用來指導(dǎo)用戶對(duì)描述測試結(jié)果的架構(gòu)文件。符合TestResults.xsd的測試結(jié)果文檔必須以TestResults為根元素,其下面的子元素涵蓋所有在測試中與測試結(jié)果有關(guān)的信息,包括Personnel、PreTestRepairs、References、ResultSet、Site、TestDescription、TestProgram、TestStation、UUT、Workorder以及Extension元素。由此可知TestResults.xsd的結(jié)構(gòu)相對(duì)復(fù)雜,因?yàn)樵跇?biāo)準(zhǔn)制定時(shí)需要考慮其全面性和功能的可擴(kuò)展性,但對(duì)于用戶來說大多信息略顯冗余,因此Schema文件給了用戶極大的自由度去從這些子元素中篩選、刪減,選擇最需要的內(nèi)容來進(jìn)行描述,這也充分體現(xiàn)了在工程中對(duì)ATML的靈活運(yùn)用。通過對(duì)TestResults.xsd文件的充分研究,簡化了其復(fù)雜的樹形結(jié)構(gòu),簡化后的TestResults的Schema視圖如圖1所示。
從圖中我們可以看出,該文件仍然以TestResults為根元素,其包含四個(gè)子元素,分別是tr:Personnel(tr為名稱空間前綴,是一種用來解決名稱沖突的機(jī)制)、tr:ResultSet、tr:TestDescrption 和tr:UUT。其中tr:Personnel元素利用其子元素tr:CustomerRepresentative描述測試相關(guān)人員信息,tr:ResultSet元素用來描述測試結(jié)果的集合,屬于tr:TestGroup類型,它包含一個(gè)tr: OutCome元素和tr:TestGroup元素(該元素個(gè)數(shù)不受限制),tr: OutCome元素用來描述整體測試結(jié)果;tr:TestDescrption元素,屬于在Common.xsd文件中定義的c:ItemDescriptionReference類型,用來標(biāo)記測試描述的相關(guān)信息;tr:UUT元素,屬于Common.xsd文件中定義的c:ItemInstance類型,用來標(biāo)記被測對(duì)象名稱。
tr:TestGroup為此文檔中的核心,對(duì)其進(jìn)行修改后,其邏輯視圖如圖2所示。該部分用于描述測試的結(jié)果數(shù)據(jù),是整個(gè)架構(gòu)中最重要的一部分,該部分的描述方法也最為關(guān)鍵。
圖2 修改后的測試結(jié)果 Schema 文件邏輯視圖
測試結(jié)果數(shù)據(jù)描述的部分由tr:ResultSet元素構(gòu)成,它繼承于tr: TestGroup類型。tr:TestGroup類型邏輯類型如圖3~4所示。
圖3 TestGroup 邏輯視圖
圖4 TestResult 邏輯視圖
考慮到測試結(jié)果數(shù)據(jù)數(shù)目的不確定,ATML用遞歸思想來定義了tr:TestGroup類型。tr:TestGroup不僅繼承了tr:Test的全部元素和屬性,同時(shí)還擴(kuò)展了tr:Test、tr:SessionAction以及一個(gè)嵌套的tr:TestGroup元素。其中,tr:Outcome元素用來標(biāo)記測試結(jié)果是否正確;tr:TestLimits用來標(biāo)記標(biāo)準(zhǔn)值的范圍;tr:TestResult用來存儲(chǔ)測試結(jié)果的數(shù)據(jù);兩個(gè)屬性ID和name用來標(biāo)識(shí)每組數(shù)據(jù)的ID號(hào)和具體信號(hào)名稱。由于測試結(jié)果數(shù)據(jù)往往是多維數(shù)據(jù),為了全面詳細(xì)描述測試結(jié)果的所有參數(shù)信息,選擇用tr:TestGroup循環(huán)嵌套的方式來存儲(chǔ)所有結(jié)果數(shù)據(jù);tr:SessionAction元素用來標(biāo)記測試結(jié)果描述結(jié)束的信息。其余冗余的元素我們?nèi)匀豢梢赃x擇舍棄。
下面主要介紹tr:TestResult,該類型邏輯視圖如圖 3所示。
該元素中,最重要的子元素是tr:TestData,用來存儲(chǔ)具體數(shù)據(jù)。由圖可知tr:TestData繼承自c:Value(前綴“c:”表示該元素在Common.xsd中定義),具體代碼如下:
通過繼承的方式,tr:TestData就可以使用c:Value的子元素。而Value元素可以在 c:Datum、c:Collection與c:IndexedArray 三者中進(jìn)行選擇,這種定義方式允許測試數(shù)據(jù)可以有不同的形式,充分考慮了測試需求多樣性的特點(diǎn),體現(xiàn)了面向?qū)ο笾械亩鄳B(tài)性思想。根據(jù)定義,我們可以利用c:Datum元素描述單個(gè)數(shù)據(jù),c:Collection用來描述數(shù)據(jù)集合,而IndexedArray元素用來描述波形數(shù)據(jù)類型的數(shù)值數(shù)組。c:Datum元素為c:DatumType類型,該類型在Schema中被定義為:
在該段代碼中,abstract="true"屬性的定義表明該類型不可以被直接使用,而必須指明具體類型(其擴(kuò)展類型),否則,使用無效。這種定義方式充分體現(xiàn)了面向?qū)ο笾屑兲擃愃枷搿?/p>
由于XML 文件格式要求相對(duì)而言較嚴(yán)格,如果直接利用文本編輯工具手動(dòng)輸入則非常容易出錯(cuò),而利用 XML Spy 類似工具填充 XML 元素與屬性數(shù)據(jù),則開發(fā)效率非常低。為此,我們開發(fā)了ATML 標(biāo)準(zhǔn)的測試結(jié)果配置工具,以實(shí)現(xiàn)測試結(jié)果模型的自動(dòng)配置,自動(dòng)生成符合 ATML 標(biāo)準(zhǔn)的 XML 文件。
測試結(jié)果配置工具采用Visual Studio 2013中的MFC并結(jié)合了COM組件技術(shù)進(jìn)行開發(fā)。在組件中,建立并對(duì)外開放ITR接口,以供客戶端程序調(diào)用來實(shí)現(xiàn)XML文檔的自動(dòng)配置。在ITR接口中,設(shè)計(jì)的方法定義如下:
STDMETHOD_(HRESULT, put_UUT_Name)( BSTR newVal);
STDMETHOD_(HRESULT, Savefile)( BSTR path);
STDMETHOD_(HRESULT, put_Descripition)( BSTR newVal);
STDMETHOD_(HRESULT, put_OutcomeValue)( short newVal);
STDMETHOD_(HRESULT, put_TestResultID)( short newVal);
STDMETHOD_(HRESULT, AddData)( BSTR itemName, BSTR qualifier, short valueLength, double min, double max, double*value, short resultFlag);
可以看出,客戶端可以調(diào)用接口中的多種方法,來實(shí)現(xiàn)對(duì)測試結(jié)果中的被測對(duì)象名稱添加、相關(guān)測試信息的描述、測試結(jié)果ID號(hào)的添加、測試數(shù)據(jù)中數(shù)據(jù)值以及相關(guān)信息的添加、存儲(chǔ)并生成相應(yīng)的XML文件等功能。其中AddData方法至關(guān)重要,該方法中通過指針遍歷存儲(chǔ)數(shù)據(jù)的單鏈表結(jié)構(gòu)以實(shí)現(xiàn)對(duì)多組數(shù)據(jù)的訪問及添加,部分關(guān)鍵代碼如下:
STDMETHODIMP_(HRESULT) TResult::XTR::AddData(BSTR itemName, BSTR qualifier, short valueLength, double min, double max, double *value, short resultFlag)
{
TestData** td = &m_pTestGroup;
char* itemNameString, *qualifierString;
itemNameString = (char*)malloc(strlen( (itemName)) + 1);
strcpy(itemNameString, OLE2T(itemName));
qualifierString = (char*)malloc(strlen( (qualifier)) + 1);
strcpy(qualifierString, OLE2T(qualifier));
for (int i = 0; i { td = &((*td)->next);//指針指向下一組數(shù)據(jù) } (*td) = (TestData*)malloc(sizeof(TestData));; strcpy((char*)(*td)->testdataName, (char*)itemNameString); //存儲(chǔ)itemName信息 strcpy((char*)(*td)-> testqualifier, (char*)qualifierString); // 存儲(chǔ)qualifier信息 (*td)-> Length = valueLength; // 存儲(chǔ)valueLength信息 (*td)-> min_limit = (double*)malloc(sizeof(double)); (*td)-> max_limit = (double*)malloc(sizeof(double)); (*td)->data = (double*)malloc(sizeof(double)*valueLength); …… (*td)->next = NULL; } 對(duì)于客戶端界面的設(shè)計(jì),如圖5所示。由圖可見,我們可以在客戶端中直接對(duì)TestResults的中的相應(yīng)元素、屬性進(jìn)行配置以及添加測試數(shù)據(jù)及相關(guān)信息,其中,用戶使用時(shí)間可有后臺(tái)程序自動(dòng)設(shè)定。在測試數(shù)據(jù)信息添加完成后,即可點(diǎn)擊保存按鈕,程序會(huì)自動(dòng)生成符合標(biāo)準(zhǔn)的測試結(jié)果XML文件。 圖5 配置工具界面 本文通過對(duì)ATML標(biāo)準(zhǔn)深入研究后,提出了測試系統(tǒng)軟件平臺(tái)的基本架構(gòu);設(shè)計(jì)完成了符合ATML標(biāo)準(zhǔn)的測試結(jié)果Schema,為測試結(jié)果的建模提供了依據(jù);并在此基礎(chǔ)上,設(shè)計(jì)并開發(fā)了相應(yīng)的配置工具,實(shí)現(xiàn)了測試結(jié)果中信息的自動(dòng)配置。在實(shí)際中的應(yīng)用中,基于ATML的軟件平臺(tái)架構(gòu)為測試系統(tǒng)的開發(fā)提供了依據(jù),為未來自動(dòng)測試系統(tǒng)發(fā)展奠定良好基礎(chǔ);且本文開發(fā)測試結(jié)果建模工具效果良好,可生成所需的測試結(jié)果XML文件為測試過程帶來了極大便利,為測試信息的共享和重用奠定了良好的基礎(chǔ)。5 總結(jié)