童穎飛,宋 云,肖蘇飛
(中國船舶重工集團公司第七二四研究所,南京 211153)
T/R組件通用自動化測試平臺的設計
童穎飛,宋云,肖蘇飛
(中國船舶重工集團公司第七二四研究所,南京 211153)
摘要:設計了一款T/R組件通用自動化測試平臺。該平臺主要由系統(tǒng)管理、資源管理、測試程序開發(fā)、測試程序執(zhí)行和數(shù)據(jù)管理等5個模塊組成,可實現(xiàn)T/R組件以及一般微波射頻設備的自動測試,并支持測試數(shù)據(jù)的管理和報表輸出。
關鍵詞:相控陣雷達;T/R組件;.Net;軟件架構;SCPI;自動化測試
0引言
T/R組件是構成相控陣雷達的基礎,是相控陣雷達的核心部件。T/R組件的各項指標直接影響雷達相應的整機指標。在T/R組件研制前期以及大規(guī)模批量生產(chǎn)階段,大量全面的電性能指標測試是必需的。傳統(tǒng)的電子測量采用人工手動的方式,通過手動操作測試儀器,人工記錄儀器上的數(shù)值,測試過程需要多人協(xié)作,且測試時間長,效率極低,已很難滿足現(xiàn)代雷達的研制需求。
由于計算機可通過SCPI語言對通用儀器進行控制,開發(fā)軟件實現(xiàn)相應的測試內容往往是行之有效的方法[1]?,F(xiàn)有相關軟件一般采用硬編碼的方式固定測試參數(shù)在開發(fā)過程中,通用性不強,只能實現(xiàn)對某個固定被測對象的測量。對不同的被測對象都開發(fā)特定的測試程序顯然會耗費大量時間及人力物力,效率低下。因此,開發(fā)一款通用型測試軟件,在此基礎上對不同的被測對象進行自動化測試開發(fā)是十分必要的。
自動化測試軟件平臺的搭建需要一種安全、穩(wěn)定和高效的語言環(huán)境。.Net是一種Windows平臺上編程的架構,是一種極高安全性的面相對象程序編程架構。C#是一種從頭開始設計的用于.Net的語言,含有豐富的類庫,用其開發(fā)的軟件架構清晰、周期短、數(shù)據(jù)訪問能力強,十分適合大型軟件平臺的設計[2]。
本文采用C#語言設計了一款T/R組件通用自動化測試平臺,主要由系統(tǒng)管理、資源管理、測試程序開發(fā)、測試程序執(zhí)行和數(shù)據(jù)管理等5個模塊組成??赏ㄟ^該平臺實現(xiàn)對自動化測試的二次開發(fā)、執(zhí)行以及測試數(shù)據(jù)存儲和報表的輸出。該平臺也適應一般微波射頻設備的自動化測試。
1通用自動測試平臺一般特性
對于通用自動測試軟件,其需要實現(xiàn)的主要功能是:在通用自動測試軟件上,使用者根據(jù)被測件的測試指標特性,自主配置測試所需的硬件設備,并形成測試鏈路。利用配置好的設備及滿足測試精度的測試方法,按一定的邏輯流自動控制測試鏈路中各個環(huán)節(jié)配合完成對被測件待測指標的測試、數(shù)據(jù)采集、數(shù)據(jù)處理以及數(shù)據(jù)記錄,最后以需要的形式輸出測試數(shù)據(jù)。
由通用自動測試軟件需要實現(xiàn)的功能,可以得出軟件平臺應具備以下的功能特性:
(1) 具備完善的用戶管理功能,可供測試開發(fā)人員以及實際測試人員等不同身份的用戶操作相對應的功能模塊;
(2) 具備測試系統(tǒng)硬件配置功能,用戶可配置(添加、修改、刪除)測試所需測試設備;
(3) 具備與測試設備通信功能,能夠對配置好的設備進行遠程控制以及數(shù)據(jù)交互;
(4) 具備測試流程開發(fā)及調試功能,用戶能夠按自己的測試方法并結合測試鏈路中的設備功能,通過圖形化界面實現(xiàn)測試項的測試流程開發(fā)。開發(fā)完成后,可對測試流程進行調試并固化測試流程以供自動測試調用;
(5) 具備自動測試及測試結果實時顯示功能,用戶能夠一鍵對被測件所有指標測試項進行測試,同時通過實時顯示的測試數(shù)據(jù)對測試過程進行監(jiān)控;
(6) 具備數(shù)據(jù)處理、數(shù)據(jù)記錄及數(shù)據(jù)存儲功能,能夠對測試結果進行二次處理滿足輸出需求,并自動存儲至數(shù)據(jù)庫中;
(7) 具備測試報表輸出功能,用戶能夠按需求生成被測件的測試結果報表,對超差測試值進行標示。
2通用自動測試平臺設計
軟件架構描述的對象是直接構成系統(tǒng)的抽象組件。各個組件之間的連接明確,能相對細致地描述組件之間的通訊。在面向對象領域中,組件之間的連接通常用接口來實現(xiàn)。軟件架構設計的目的是為了使系統(tǒng)能夠適應需求的變更、易于維護和升級,同時盡可能地節(jié)約開發(fā)成本。
在軟件體系架構設計中,常用的架構模式有三層開發(fā)架構(3-tier application)、SOA(面向服務架構)、DDD(領域驅動設計)等,目的在于實現(xiàn)高內聚、低耦合的思想[3]。
在通用自動測試平臺的開發(fā)中,需要處理大量不同實體間復雜的邏輯業(yè)務關系,需要用到大量的事件、代理等方式。實體自身的屬性也比較復雜。如果仍然從數(shù)據(jù)層開始設計會帶來增加復雜程度,因此采用領域驅動設計思想是比較合適的。
領域驅動設計架構主要分為基礎設施層、表現(xiàn)層、應用層、領域層?;A結構層為各層提供各個通用技術能力。表現(xiàn)層負責與用戶進行信息溝通。領域層根據(jù)業(yè)務的邏輯流程定制業(yè)務信息及規(guī)則,并制定領域模型。應用層負責協(xié)調領域層與表現(xiàn)層之間的關系。
對測試軟件而言,用戶對軟件設置的參數(shù)多、軟件向用戶反饋的信息多,表示層將存在大量界面控件。因此,在設計過程對前端可以采用MVC(Model-View-Controller)架構模式來分離控件間的相互調用以及控件與后端服務間的交互。MVC用一種業(yè)務邏輯和數(shù)據(jù)顯示分離的方法組織代碼,將邏輯部分聚集到一個部件中,在控件改進的同時無需重新編寫邏輯部分。
在領域驅動設計架構中融入MVC架構時,去除MVC中的Model部分,將Model中的映射關系對應到DTO(數(shù)據(jù)傳輸對象)中。由此,測試平臺的架構圖如圖1所示。
圖1 測試平臺架構設計圖
測試平臺的功能實現(xiàn)建立在與外部交互的基礎上。測試平臺與測試設備驅動的接口實現(xiàn)遠程控制測試設備動作及數(shù)據(jù)交互,與數(shù)據(jù)庫接口實現(xiàn)測試參數(shù)配置及測試結果存儲,與COM組件接口實現(xiàn)測試信息的報表輸出。被測件通過信號中樞經(jīng)測試總線到系統(tǒng)總線與測試儀表及測試平臺構成測試鏈路。
COM組件接口用來實現(xiàn)在.NET出現(xiàn)之前編寫的非托管程序(Word、Excel等)與托管環(huán)境間的交互。測試系統(tǒng)中,利用微軟提供的COM互操作技術,即Microsoft.Office.Interop(實現(xiàn).NET與Office的互操作)、Microsoft.Data.OleDb(實現(xiàn).NET與數(shù)據(jù)庫的互操作),封裝功能模塊實現(xiàn)數(shù)據(jù)交互。
自動測試平臺利用LXI(LAN-based eXtensions for Instrumentation)總線技術實現(xiàn)測試設備的遠程控制及數(shù)據(jù)交互。它基于工業(yè)標準以太網(wǎng)(Ethernet)技術,擴展了儀器需要的語言、命令、協(xié)議等內容。LXI總線以IPV4、IPV6、TCP/IP協(xié)議為數(shù)據(jù)交換協(xié)議,定義了LXI總線的數(shù)據(jù)遵循的網(wǎng)絡協(xié)議,使測試設備具有通過以太網(wǎng)實現(xiàn)設備的訪問、配置以及控制的能力。
作為軟件系統(tǒng)運作的協(xié)調部分,接口是軟件的關鍵組成部分。接口管理模塊實現(xiàn)軟件的接口定義,并通過對封裝好的組件的注冊、加載和卸載來實現(xiàn)測試平臺內部模塊之間以及與Woord、測試儀表、數(shù)據(jù)庫之間的協(xié)調、映射及關聯(lián),是系統(tǒng)內部模塊之間以及系統(tǒng)與外部數(shù)據(jù)交換的樞紐。接口設計主要利用動態(tài)連接庫模塊(DLL)的調用與加載來實現(xiàn)。接口引擎根據(jù)動態(tài)連接庫模塊的注冊或配置信息,查詢需要的功能模塊然后其實例化,從而使模塊對象與設計的接口相映射,并將模塊對象動態(tài)加載到進行的內存中。
自動測試平臺的接口如圖2所示。
圖2 測試平臺接口示意圖
模塊設計是描述系統(tǒng)需求的一個過程,需要將需求中的感性描述進行抽象進行描述,提取出要實現(xiàn)的功能,是整個系統(tǒng)開發(fā)的一個關鍵過程。
根據(jù)需求,通用自動化測試平臺設計分為系統(tǒng)管理、測試資源管理 、測試流程開發(fā)、測試程序執(zhí)行和數(shù)據(jù)管理等5個模塊。軟件模塊設計圖如圖3所示。其中系統(tǒng)管理模塊主要實現(xiàn)軟件用戶的管理和軟件注冊,測試資源管理主要實現(xiàn)對各類通用電子測量儀器對應的IP、驅動等信息的管理。測試流程開發(fā)模塊主要實現(xiàn)測試流程的編輯和調試,將測試流程通過節(jié)點的方式編輯。測試程序執(zhí)行模塊主要實現(xiàn)測試邏輯流程的運行、對測試儀器進行遠程控制與數(shù)據(jù)交互、測試結果實時顯示以及測試流程的監(jiān)控。數(shù)據(jù)管理模塊與數(shù)據(jù)庫進行交互,實現(xiàn)測試結果的存儲、更新、查詢以及測試報表的輸出,報表輸出模板包含Word和Excel。
圖3 通用自動化測試平臺模塊設計圖
測試軟件的一個重要功能就是具備與測試設備通信功能,能夠對設備進行遠程控制以及數(shù)據(jù)交互。為了實現(xiàn)測試軟件的通用化,需要為不同類型和型號的儀器設計驅動文件。現(xiàn)在大部分的測試設備都支持SCPI(程控儀器標準指令集)指令,所以本文將利用SCPI指令實現(xiàn)對被測設備的遠程控制[4]。將所有的測試設備抽象為一個類Instrument。一般的測試設備都具備打開、關閉設備的功能。因此,為Instrument類實現(xiàn)接口IOpenClose接口,實現(xiàn)此接口的類都將實現(xiàn)打開、關閉設備的功能。不同的測試設備具備不同的測試功能,將每種測試設備都抽象為一個類InstrumentA、InstrumentB…,繼承Instrument類。對不同設備的每個功能點以SCPI語言進行描述,利用TCP/IP協(xié)議與測試設備進行通訊實現(xiàn)遠程控制及數(shù)據(jù)交換。將功能點封裝成方法作為每個測試設備類的一個操作,最后將所有類封裝成動態(tài)鏈接供測試時動態(tài)調用。測試平臺設計了包含信號源、頻譜儀、功率計、示波器、矢量網(wǎng)絡分析儀、電源等多類型多型號的儀器驅動供開發(fā)人員使用。測試設備驅動設計UML圖如圖4所示。
圖4 測試設備驅動設計UML圖
測試流程開發(fā)是體現(xiàn)通用自動測試軟件靈活性、可擴展性的核心功能,需具備測試節(jié)點模塊的添加、編輯、刪除等功能。基于領域驅動思想,對測試流程開發(fā)的業(yè)務邏輯實體進行設計。可以將測試流程中的每一個節(jié)點抽象為基于測試流程節(jié)點類的子類,共有的特性為節(jié)點名、節(jié)點類型、節(jié)點ID等,不同的地方在于每個節(jié)點能完成的功能不同。采用充血型實體模型,這些節(jié)點各自的動作將加入各自的實體中,減少領域層服務的耦合性,也便于修改邏輯。
在實例化測試流程節(jié)點的過程中,采用工廠模式結合反射方法。在生成簡單實例時可直接利用構造函數(shù)生成。如果生成的實例內部屬性之間存在復雜的邏輯業(yè)務關系,就可以將實例的生成方法設計到一個工廠類內部。這樣,客戶端將不需要依賴下層潛在的邏輯關系,直接通過工廠來生成相對應的實例,避免將復雜的邏輯關系暴露在客戶端中[5-6]。
工廠模式也存在缺陷,那就是類的數(shù)量越多,對應的工廠數(shù)量會越多,客戶端需要使用到的工廠也將更多。這樣的后果:第一,代碼中將存在大量switch或者if else語句,不利于后期維護;第二,客戶端將依賴大量的工廠類,代碼耦合性增加。引入反射機制將能解決這個缺陷。
反射是.NET中重要機制。通過反射,可以獲取.NET中每個類型的成員及其名稱、限定符和參數(shù)等。該機制結合動態(tài)數(shù)組很好地解決了應用軟件的維護的升級。對于應用軟件的變化,可不改動任何現(xiàn)有的程序,只需要修改配置文件的相應對象名稱和加載新的對象即可,程序不需要作任何的硬性改動。
利用反射得到所有節(jié)點類的信息,然后利用傳入的構造參數(shù)生成對應的實例。強類型轉換后賦給父類實例,完成節(jié)點的動態(tài)創(chuàng)建。UML結構圖見圖5。
圖5 動態(tài)創(chuàng)建實例UML圖
創(chuàng)建好的各個節(jié)點實例在內存中將按照邏輯順序以樹型結構存儲,通過數(shù)據(jù)層經(jīng)持久化保存在流程配置文件中。在領域層實現(xiàn)方法,通過數(shù)據(jù)層讀取流程配置文件,存儲在內存中,通過遞歸調用樹形結構的所有節(jié)點完成測試流程的執(zhí)行,表現(xiàn)層調用應用層封裝好的相應服務來執(zhí)行各個節(jié)點實例的動作。測試結果通過DTO轉化為DTO對象。表現(xiàn)層調用DTO對象將測試結果實時顯示在空間上,完成對用戶的信息反饋。這里還涉及多線程及異步方法等領域,就不再贅述。
平臺的實際使用中,程序已經(jīng)完成部署。當測試任務發(fā)生改變時,可以通過讀取插件配置信息的方法,載入新的應用構件,來兼容測試任務的變化。通過XML文件來實現(xiàn)配置信息的編寫。讀取配置信息,裝載動態(tài)鏈接庫,通過C#的反射機制分析驅動文件中的全部方法及其輸入?yún)?shù)、輸出參數(shù)等信息。
測試完成后,領域層調用數(shù)據(jù)層實例。數(shù)據(jù)層通過ADO.NET實現(xiàn)對數(shù)據(jù)的管理,將測試結果轉化為DataSet類和DataTable類進行存儲,通過SQL或LINQ實現(xiàn)對測試結果數(shù)據(jù)庫的查詢、插入、更新、刪除。此功能也可以通過加入ORM框架,通過對象和數(shù)據(jù)表之間的mapping對數(shù)據(jù)實體進行持久化。對查詢篩選出的數(shù)據(jù)轉化為DataTable。基礎設施層利用.NET平臺的Word和Excel組件的COM互操作接口,分別將測試數(shù)據(jù)DataTable的內容插入至Word和Excel文件中輸出。文件中數(shù)據(jù)均以表格形式給出,便于測試結果的統(tǒng)計和存儲。
3通用自動測試平臺應用實例
基于本文設計的通用自動測試平臺完成了一種T/R組件電性能指標的自動測試系統(tǒng)開發(fā)。該測試系統(tǒng)可以完成多項參數(shù)測試,測試開發(fā)便捷,測試結果重復性好,顯示規(guī)范清晰,測試效率高。經(jīng)使用比對,手動測試方式2人配合2天完成的工作,使用該測試系統(tǒng)1人20分鐘左右即可完成。圖6~圖10分別為自動測試系統(tǒng)中的用戶管理模塊、資源管理模塊、測試流程開發(fā)模塊、測試程序執(zhí)行模塊、測試數(shù)據(jù)管理模塊。
圖6 用戶管理模塊界面
圖7 資源管理模塊界面
圖8 測試流程開發(fā)模塊界面
圖9 測試程序執(zhí)行模塊界面
4結束語
通用自動測試平臺可根據(jù)具體的測試需要,在軟件不作硬性改動的情況下設計相應的測試方法,實現(xiàn)了測試過程的自動化,測試效率高。平臺具備完善的數(shù)據(jù)管理方法,可將測試數(shù)據(jù)永久保存在后臺數(shù)據(jù)庫,并支持報表的輸出,人機界面友好。由于該軟件平臺具備通用性好、測試效率高等特點,可以在更多的自動化測試中得到廣泛應用。
參考文獻:
[1]Joel P Dunsmore.微波器件測量手冊[M].北京:電子工業(yè)出版社,2014.
[2]Christian Nagel,Bill Evjen,Karli Watson,Morgan Skinner.C#高級編程 [M].8版.北京:清華大學出版社,2013.
[3]Martin Fowler.企業(yè)應用架構模式[M].北京:機械工業(yè)出版社,2010.
[4]Agilent Technologies.Signal Generators Programming Guide.(FEB.2010).
[5]Erich Gamm,Richard Helm,Ralph Johson,John Vlissides.設計模式:可復用面向對象軟件的基礎[M].北京:機械工業(yè)出版社,2007.
[6]Martin Fowler.重構:改善既有代碼的設計[M].北京:人民郵電出版社,2010.
Design of a general automatic T/R module test platform
TONG Ying-fei, SONG Yun, XIAO Su-fei
(No.724 Research Institute of CSIC, Nanjing 211153)
Abstract:A general automatic T/R module test platform is designed, and it comprises five modules such as the system management, resource management, test program development, and data management, which can realize the automatic test of the T/R module and general microwave RF equipment and support test data management and report output.
Keywords:phased array radar; T/R module; .Net; software architecture; SCPI; automatic test
中圖分類號:TP311.5
文獻標志碼:A
文章編號:1009-0401(2015)04-0068-05
作者簡介:童顏飛(1989-),男,工程師,碩士,研究方向:軟件工程、自動化儀器儀表;宋云(1968-),女,高級工程師,研究方向:計量測試及其管理;肖蘇飛(1989-),男,助理工程師,碩士,研究方向:軟件工程、自動化儀器儀表。
收稿日期:2015-08-27;修回日期:2015-09-11