范凱胤 王學(xué)奇 姚鵬 唐希浪 張景昆
摘 要:針對網(wǎng)絡(luò)化條件下,被測對象日益復(fù)雜、測試數(shù)據(jù)難以整合、測試需求變化迅速等問題,提出了一種基于SOA的測試軟件開發(fā)方法。從業(yè)務(wù)需求的角度出發(fā),采用業(yè)務(wù)流程模型詳細(xì)地分析了測試業(yè)務(wù)過程,捕獲到測試中需要的數(shù)據(jù)對象和完成的任務(wù)。根據(jù)業(yè)務(wù)流程模型,使用面向服務(wù)架構(gòu)建模語言(SoaML),分別從服務(wù)框架構(gòu)建、服務(wù)識別和定義、服務(wù)實現(xiàn)等幾個方面建立了一個測試服務(wù)模型。利用Web Service的技術(shù)將測試服務(wù)模型映射到服務(wù)組件,實現(xiàn)了基于SOA的軍用測試系統(tǒng)軟件。實踐表明,基于SOA的測試軟件開發(fā)方法能夠有效解決測試領(lǐng)域面臨的問題。
關(guān)鍵詞:測試系統(tǒng);軟件開發(fā);服務(wù)建模;SoaML
中圖分類號:TP311.5 文獻(xiàn)標(biāo)識碼:A DOI:10.15913/j.cnki.kjycx.2017.08.017
軍用測試系統(tǒng)經(jīng)歷了專用測試系統(tǒng)、積木式測試系統(tǒng)、模塊化測試系統(tǒng)和網(wǎng)絡(luò)化測試系統(tǒng)等4個發(fā)展階段。在網(wǎng)絡(luò)化的條件下,測試系統(tǒng)能夠?qū)崿F(xiàn)遠(yuǎn)程測試、診斷和信息共享。但隨著被測對象的日益復(fù)雜,且產(chǎn)品豐富,測試需求將會更加多變,測試數(shù)據(jù)也將更加龐大。如何應(yīng)對迅速變化的測試需求,如何有效整合測試數(shù)據(jù),是分布網(wǎng)絡(luò)環(huán)境下的軍用測試系統(tǒng)所面臨的主要問題。
面向服務(wù)的構(gòu)架(Service-Oriented Architecture,SOA)是包含運(yùn)行環(huán)境、編程模型、架構(gòu)風(fēng)格和相關(guān)方法論等在內(nèi)的一整套新的分布式軟件系統(tǒng)構(gòu)造方法和環(huán)境。SOA擁有一套統(tǒng)一的標(biāo)準(zhǔn),使信息高度共享,且不依賴于特定技術(shù)、特定平臺,請求者與提供者之間高度解耦。這種松耦合的系統(tǒng)使得軟件可以靈活地適應(yīng)業(yè)務(wù)需求的變化,且復(fù)用性強(qiáng)。將SOA應(yīng)用在自動測試領(lǐng)域,可以有效地解決測試領(lǐng)域面臨的問題。
本文提出了一種基于SOA的測試軟件開發(fā)方法,從測試業(yè)務(wù)需求分析、測式軟件SOA模型建立、Web Service技術(shù)實現(xiàn)等幾個實踐過程入手,簡要介紹了如何構(gòu)建和開發(fā)面向服務(wù)的測試軟件。這對測試軟件開發(fā)人員有一定的參考價值。在開發(fā)軟件的同時,也參考了SPR生物傳感檢測系統(tǒng)軟件的設(shè)計與實現(xiàn),基于uC/OS-Ⅱ操作系統(tǒng)的無人機(jī)飛控系統(tǒng)軟件設(shè)計的一些經(jīng)驗、方法。
1 測試業(yè)務(wù)需求分析
傳統(tǒng)的軍用自動測試系統(tǒng)采用的是封閉結(jié)構(gòu),具有應(yīng)變能力不足、軟件復(fù)用和升級難、系統(tǒng)間互操作性不強(qiáng)、故障診斷的效率和準(zhǔn)確性低等缺陷,無法適應(yīng)信息化條件下多軍種聯(lián)合作戰(zhàn)對多型裝備系統(tǒng)、多級維護(hù)的需求。為此,國內(nèi)外專家提出下一代自動測試系統(tǒng)采用開放的體系結(jié)構(gòu),以便能夠靈活、快速適應(yīng)需求變化,具有良好的軟件可移植性和互操作能力,提高診斷的有效性。同時,這種結(jié)構(gòu)還具備資源管理服務(wù)、測試管理服務(wù)、診斷服務(wù)、運(yùn)行時服務(wù)和測試數(shù)據(jù)服務(wù)等能力。根據(jù)這些需求,整個系統(tǒng)的業(yè)務(wù)結(jié)構(gòu)如圖1所示。
測試代理采取Web應(yīng)用的形式,作為測試人員與系統(tǒng)之間的交互代理,提供用戶管理服務(wù)和運(yùn)行時服務(wù),例如用戶登錄、輸入輸出、測試報告等。同時,它也作為各服務(wù)之間的統(tǒng)籌模塊,根據(jù)測試人員的輸入,協(xié)調(diào)并請求各服務(wù)模塊執(zhí)行相應(yīng)的動作。測試管理提供測試服務(wù),接收測試代理的測試請求,加載、運(yùn)行測試項目,調(diào)度測試資源,完成測試任務(wù)并返回測試結(jié)果。測試數(shù)據(jù)管理提供數(shù)據(jù)服務(wù),它收集并保存不同測試平臺、不同環(huán)境下的測試結(jié)果,形成一個海量測試數(shù)據(jù)庫,在測試代理的請求下,提供歷史測量數(shù)據(jù)。另外,它作為一個描述信息庫,可以保存各類描述文件,需要時可以被測試代理調(diào)用。故障診斷中心提供故障診斷和故障預(yù)測服務(wù),它擁有豐富的診斷算法和知識庫,在測試代理的請求下可以迅速、準(zhǔn)確地完成故障診斷或預(yù)測,且可以提供有效的維修決策建議。
要想建立一個有效、可靠的SOA模型,需要構(gòu)建一個業(yè)務(wù)流程模型,詳細(xì)分析業(yè)務(wù)需求。業(yè)務(wù)流程模型是一種描述和歸檔業(yè)務(wù)(或業(yè)務(wù)的一部分)如何運(yùn)作(或希望如何運(yùn)作)的方法,它可捕獲必須執(zhí)行的步驟或任務(wù)(包括決策點(diǎn)),執(zhí)行這些
步驟或任務(wù)的實體或角色,以及它們?nèi)绾谓换崿F(xiàn)對信息(數(shù)據(jù))的處理和共享。構(gòu)建業(yè)務(wù)流程模型可以使用業(yè)務(wù)流程建模符號(Business Process Modeling Notation,BPMN),它包含以下3個關(guān)鍵要素:①通道(Lane)。它表示活動的分組,通常用于表明一組活動均由相同的實體(例如人員或系統(tǒng))或者角色執(zhí)行。②任務(wù)(Task)。它表示通用活動,僅包含名稱和記錄。③消息(Message)。也可以將其認(rèn)為是一個數(shù)據(jù)對象,表示在一個流程內(nèi)的2個實體間發(fā)送的信息。
根據(jù)對業(yè)務(wù)需求的初步分析,可以構(gòu)建一個測試業(yè)務(wù)流程模型(為了使后續(xù)建模和程序設(shè)計具有可溯性,建模均采用英文),具體如圖2所示。
從圖2中可以看出,根據(jù)使用需求可設(shè)置5個通道,分別對應(yīng)測試人員(Tester)、測試代理(TestAgency)、測試管理(TestManager)、數(shù)據(jù)管理(DataManager)和診斷中心(DiagnosticCenter)等5個實體,每個實體在一次測試過程中都擁有各自的任務(wù),在任務(wù)之間包含著一些信息的傳遞。采用這種方法,整個測試的業(yè)務(wù)流程被清晰地展現(xiàn)出來,且各參與者需要在何時完成何任務(wù),數(shù)據(jù)對象如何流向等信息都會被捕獲到,這將為下一步的建模打下堅實的基礎(chǔ)。
2 基于SOA的測試軟件模型
2.1 SoaML概述
為了建立一個標(biāo)準(zhǔn)的SOA模型,本節(jié)將采用SoaML(面向服務(wù)架構(gòu)建模語言)進(jìn)行建模。SoaML是由OMG(對象管理組織)定義的開源規(guī)范,是對UML(統(tǒng)一建模語言)的擴(kuò)展,它定義了一種符號和元模型來描述面向服務(wù)的系統(tǒng)。使用SoaML,可以從2個角度開發(fā)服務(wù)架構(gòu):①自上而下的設(shè)計。根據(jù)BPMN圖定義服務(wù)架構(gòu),以探索參與者之間的連接方式,而后識別服務(wù)、定義服務(wù)、實現(xiàn)服務(wù)。②自下而上的抽象。服務(wù)模型已經(jīng)存在,需要被抽象為更高層次的描述。這2種設(shè)計方法有所差異,但軟件的設(shè)計通常是一個迭代的過程,所以,2種方法都會在設(shè)計中用到。由于篇幅有限,本文將以自上而下的方法為例闡述測試軟件的建模過程。
2.2 測試軟件服務(wù)框架的構(gòu)建
運(yùn)用自上而下的設(shè)計方法創(chuàng)建服務(wù)框架時,必須要考慮參與者之間怎樣聯(lián)系,要試圖解決哪些問題。這些已經(jīng)在業(yè)務(wù)流程模型中捕捉到了,將BPMN圖映射到服務(wù)框架如圖3所示。
在圖3中,5類參與者對應(yīng)BPMN圖中的5個通道,參與者之間通過服務(wù)契約進(jìn)行綁定。例如,測試代理與測試管理之間就是通過名為測試執(zhí)行(TestExcute)的契約綁定的。服務(wù)契約實際上反映了2個參與者(服務(wù)提供者和服務(wù)請求者)之間的交互活動,它將定義一系列協(xié)議,規(guī)定消費(fèi)者與提供者之間的活動在何時、何地,以何順序進(jìn)行。例如,在系統(tǒng)運(yùn)行時,管理(RunTimeManage)契約可以用時序圖描述,如圖4所示。
圖4清晰地描述了測試代理和測試管理這2種角色之間的活動契約。測試代理作為一種邏輯上的角色,任何參與者(例如測試站、生產(chǎn)方、研究所等)都可以扮演測試代理這種角色,只需要遵循圖4所示的活動契約,就可以調(diào)用測試管理所提供的服務(wù)接口實現(xiàn)加載項目、卸載項目、啟動測試、獲取測試結(jié)果等功能。
2.3 測試軟件的服務(wù)識別和定義
服務(wù)識別和定義是整個建模過程中最關(guān)鍵的一步,它實際上就是要以業(yè)務(wù)需求為驅(qū)動,找出并定義參與者需要提供或消費(fèi)的服務(wù)。在BPMN圖中可以清晰地看到每個參與者均需完成一系列的任務(wù),這些任務(wù)實際上就是該參與者所應(yīng)具備的能力,而服務(wù)接口的職責(zé)就是要暴露這些能力。下面,以參與者測試管理的測試服務(wù)為例加以說明。從BPMN圖中可以明確TestManger通道中所有的任務(wù)映射為保證測試管理順利進(jìn)行而應(yīng)具備的能力,作為候選服務(wù),有些操作是測試管理內(nèi)部完成的,例如運(yùn)行測試動作(Run Test Action)和驅(qū)動儀器(Drive Instrument)等,這樣的操作無需作為服務(wù)供外部調(diào)用,可將其刪除,再根據(jù)之前構(gòu)建的服務(wù)框架定義好服務(wù)接口,具體如圖5所示。
在定義服務(wù)接口時,還需完成另一個重要的任務(wù),即定義服務(wù)操作的輸入輸出參數(shù),例如加載測試項目和卸載測試項目需要以測試項目描述作為輸入?yún)?shù),生成測試結(jié)果以測試結(jié)果作為輸出參數(shù)。這些參數(shù)類型應(yīng)當(dāng)具有統(tǒng)一的標(biāo)準(zhǔn),以便實現(xiàn)信息共享。在測試領(lǐng)域,ATML(Automatic Test Markup language,自動測試標(biāo)記語言)是基于XML(Extensible Markup Language,可擴(kuò)展標(biāo)記語言)的數(shù)據(jù)交換標(biāo)準(zhǔn),它定義了一個描述,比如測試項目、測試資產(chǎn)、被測對象、測試數(shù)據(jù)等測試信息的XML模式集合。所以,在服務(wù)定義中,操作的輸入或輸出參數(shù)實質(zhì)上是加載或生成的ATML文件,使測試信息高度共享,從而解決了測試數(shù)據(jù)難以整合的問題。
2.4 測試軟件的服務(wù)實現(xiàn)
參與者是實現(xiàn)服務(wù)的實體,這些參與者之間的服務(wù)和消費(fèi)關(guān)系可以通過服務(wù)通道來連接,具體如圖6所示。
圖6反映了所有參與者之間的服務(wù)關(guān)系,但這些參與者都是大顆粒的,它們只能夠在頂層上描述整個測試服務(wù)體系,而在程序的實現(xiàn)上需要作進(jìn)一步的分解。例如,TestManager(測試管理)可以被分解為TestProjectManager(測試項目管理)、TestProcessManager(測試過程管理)和TestResourceManager(測試資源管理)等3個參與者,所以,在參與者層級又可以按照同樣的方法構(gòu)建一個新的服務(wù)框架。由于方法一致,這里不再贅述。
3 基于SOA的測試軟件實現(xiàn)
從技術(shù)層面上來看,實現(xiàn)SOA的方法有多種,而Web Service(Web服務(wù))是其中最主流的實現(xiàn)方案。Web 服務(wù)作為功能實現(xiàn)體,向外界暴露能通過Web調(diào)用的API,而這些API都采用WSDL(Web Services Definition Language,Web 服務(wù)描述語言)進(jìn)行描述,并使用SOAP(Simple Object Access Protocol,簡單對象訪問協(xié)議)進(jìn)行數(shù)據(jù)交換,這些標(biāo)準(zhǔn)都是統(tǒng)一、開放的,與平臺無關(guān)。
開發(fā)Web服務(wù)的平臺也有多種,例如JAVA的J2EE平臺和微軟的.NET平臺,開發(fā)者可以采用自己比較熟悉的平臺開發(fā)。但隨著.NET技術(shù)的日益成熟,以及測試行業(yè)標(biāo)準(zhǔn)對.NET的支持(例如IVI驅(qū)動定義了IVI.NET),基于.NET平臺開發(fā)軍用測試系統(tǒng)軟件將成為測試領(lǐng)域的一種趨勢。
技術(shù)上實現(xiàn)SOA的過程實際上就是從SOA模型到服務(wù)組件的映射過程。有的開發(fā)工具能夠自動完成這個映射過程,例如IBM公司的Rational Software Architect就能根據(jù)SoaML自動創(chuàng)建SCA(Service Component Architect,服務(wù)組件架構(gòu))工件,而且能夠生成主干源代碼,開發(fā)人員只需擴(kuò)充源代碼實現(xiàn)功能即可。將Microsoft Visual Studio.net作為編程環(huán)境創(chuàng)建Web Service時,可將測試服務(wù)模型(服務(wù)定義)映射到(或采用工具自動映射到)服務(wù)組件,并編寫代碼,實現(xiàn)服務(wù)功能。圖7表述的是參與者測試管理實現(xiàn)測試服務(wù)的Web Service。
圖7展示了測試管理所提供的Web服務(wù),這些服務(wù)接口與平臺無關(guān),任何一個消費(fèi)者只要按照服務(wù)契約均可調(diào)用圖7中的服務(wù)接口。這樣做,可以大幅提高測試軟件的可重用性和可移植性。另外,測試管理提供的測試服務(wù)與其他參與者提供的服務(wù)沒有任何耦合關(guān)系,當(dāng)一個服務(wù)需要升級時,并不會影響其他服務(wù)的工作。例如,診斷管理中心需添加新的診斷算法,暫時停止診斷服務(wù),但它并不會影響測試代理請求測試管理的服務(wù),因而使測試軟件能夠敏捷地應(yīng)對需求的更新和測試系統(tǒng)的升級。
4 結(jié)束語
本文從測試業(yè)務(wù)需求分析、測試服務(wù)建模、測試服務(wù)實現(xiàn)等幾個方面入手,研究了SOA在測試領(lǐng)域的實踐方法。使用該方法能夠克服傳統(tǒng)測試軟件復(fù)用升級難、數(shù)據(jù)整合效率低和應(yīng)變能力不足等缺陷。基于SOA的測試軟件將為大數(shù)據(jù)和云計算在測試領(lǐng)域的應(yīng)用創(chuàng)造機(jī)會,而如何治理已經(jīng)實現(xiàn)的測試服務(wù)軟件,實現(xiàn)云測試和大數(shù)據(jù)故障預(yù)測將是下一步需要解決的關(guān)鍵問題。
參考文獻(xiàn)
[1]肖明清,胡雷剛.自動測試系統(tǒng)概論[M].北京:國防工業(yè)出版社,2012.
[2]毛新生.SOA原理·方法·實踐[M].北京:電子工業(yè)出版社,2007.
[3]ZHAO Xin,XIAO Ming-qing.Research on the TPS Development based on SOA.2009 IEEE AUTOTESTCON Proceedings. California,2011:151-154.
[4]IBM developerWroks.Design and develop a more effective SOA[EB/OL].[2011-05-02].http://www.ibm.com/
developerworks/library/ws-designsoapart1/index.html.
[5]方江雄,何紅波,李義兵.基于SOA和BPM的ERP系統(tǒng)的研究與實現(xiàn)[J].計算機(jī)應(yīng)用,2007,27(5):1264-1267.
[6]楊軍,吳松,李圓怡,等.SPR生物傳感檢測系統(tǒng)軟件的設(shè)計與實現(xiàn)[J].傳感器與微系統(tǒng),2010,29(6):95-97.
[7]史峰,何立明,馬曉峰,等.基于uC/OS-Ⅱ操作系統(tǒng)的無人機(jī)飛控系統(tǒng)軟件設(shè)計[J].傳感器與微系統(tǒng),2008,27(4):94-96.
本文部分參考文獻(xiàn)因著錄項目不全被刪除。
〔編輯:白潔〕