• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      面向服務(wù)的輔助集成測試系統(tǒng)設(shè)計與實現(xiàn)

      2014-10-21 19:57徐亮亮宋劍鋒田飛
      計算機光盤軟件與應(yīng)用 2014年24期
      關(guān)鍵詞:測試用例

      徐亮亮 宋劍鋒 田飛

      摘要:為了削弱面向服務(wù)的應(yīng)用系統(tǒng)中業(yè)務(wù)流程對服務(wù)模塊的強依賴關(guān)系,降低系統(tǒng)集成測試階段問題服務(wù)對集成過程的影響,提出了基于模擬服務(wù)的輔助集成測試方法,設(shè)計了面向服務(wù)的輔助集成測試系統(tǒng)模型,以緩解面向服務(wù)的體系結(jié)構(gòu)下系統(tǒng)集成測試階段面臨的巨大壓力。根據(jù)輔助集成測試系統(tǒng)模型中闡述的模擬服務(wù)生命周期以及構(gòu)建模擬服務(wù)的關(guān)鍵過程,實現(xiàn)了系統(tǒng)原型研制并構(gòu)建了SOAP類型模擬服務(wù),驗證了輔助集成測試方法有效性。

      關(guān)鍵詞:集成測試;模擬服務(wù);SOAP服務(wù);測試用例;服務(wù)生成

      中圖分類號:TP311.52

      在面向服務(wù)的體系結(jié)構(gòu)[1](Service-oriented architecture,SOA)下,通過對業(yè)務(wù)單元進行服務(wù)封裝,提高了系統(tǒng)中模塊的復(fù)用率,也解耦了模塊間的相互關(guān)系。雖然應(yīng)用系統(tǒng)被拆分并封裝成服務(wù),但是系統(tǒng)業(yè)務(wù)流程依然對服務(wù)模塊具有強依賴關(guān)系,隨著服務(wù)的增多,導(dǎo)致服務(wù)集成過程變得緩慢而脆弱。首先,服務(wù)間通過網(wǎng)絡(luò)進行通信,不但提高了集成測試環(huán)境的構(gòu)建成本,而且增加了模塊間的調(diào)試難度;其次,采用多團隊或引入第三方單位的合作研制方式,加重了集成測試階段的協(xié)調(diào)工作,通常會由于某個服務(wù)自身存在問題、研制團隊失誤或第三方研制單位的缺席而導(dǎo)致集成測試節(jié)點的延期,最終擾亂整個應(yīng)用系統(tǒng)的研發(fā)過程,為集成測試帶來巨大的壓力[2]。

      目前,面向服務(wù)系統(tǒng)的集成測試較多地側(cè)重于單個服務(wù)的接口測試方面[3],以保證服務(wù)接口功能的正確性,從而降低服務(wù)相互間集成時出現(xiàn)問題的概率,但無法從根本上解決集成測試過程中存在的問題。針對這一狀況,本文從輔助服務(wù)間交互測試的角度出發(fā),利用模擬服務(wù)配合被集成服務(wù)完成集成過程,有效地緩解了集成測試階段的壓力。

      1 面向服務(wù)的系統(tǒng)集成測試定義

      系統(tǒng)集成測試[4],也叫組裝測試或聯(lián)合測試,即將程序模塊采用一次性或增殖方式組裝起來,對模塊間的接口進行正確性檢驗的測試工作。面向服務(wù)系統(tǒng)的集成測試是在面向服務(wù)的體系架構(gòu)下,對應(yīng)用系統(tǒng)中的服務(wù)模塊進行組裝,以驗證各服務(wù)間接口的功能正確性,確保應(yīng)用系統(tǒng)中各服務(wù)間的互聯(lián)互通互操作。

      面向服務(wù)的系統(tǒng)集成測試將單個服務(wù)模塊集成到應(yīng)用系統(tǒng)中進行測試,可以是一次性的集成(非增量式集成),也可以是逐個的擴展集成(增量式集成),直到完成整個應(yīng)用系統(tǒng)測試。服務(wù)的集成測試要求被集成的服務(wù)按照設(shè)計要求通過單元測試,保證單個服務(wù)的高質(zhì)量要求,但經(jīng)過單元測試的服務(wù)不足以保證整個系統(tǒng)的質(zhì)量,有許多隱蔽的失效是高質(zhì)量模塊間發(fā)生非預(yù)期交互而產(chǎn)生的,所以服務(wù)集成測試的必要性在于保證能夠單獨工作的服務(wù)連接起來也能正常工作。此外,在某些開發(fā)模式中,如迭代式開發(fā),服務(wù)的設(shè)計和實現(xiàn)是迭代進行的,在這種情況下,服務(wù)服務(wù)集成測試的意義還在于它能間接地驗證概要設(shè)計是否具有可行性。

      2 模擬服務(wù)輔助集成測試原理

      模擬服務(wù)是一種服務(wù)真實存在的服務(wù)提供者,模擬服務(wù)存在一個或多個被模擬的目標(biāo)服務(wù),模擬服務(wù)對外提供與目標(biāo)服務(wù)相同的服務(wù)接口,兩者對于同一服務(wù)調(diào)用請求(接口調(diào)用參數(shù)相同)返回一致的響應(yīng)結(jié)果。與真實服務(wù)不同的是,模擬服務(wù)不關(guān)心目標(biāo)服務(wù)的業(yè)務(wù)邏輯,僅僅采用請求參數(shù)匹配的方法來得到應(yīng)該返回的結(jié)果數(shù)據(jù),這樣模擬服務(wù)即可替代目標(biāo)服務(wù)及目標(biāo)服務(wù)依賴的所有服務(wù),屏蔽了目標(biāo)服務(wù)的實現(xiàn)細(xì)節(jié)。如圖1所示,某示例應(yīng)用系統(tǒng)中A服務(wù)依賴B和C服務(wù),B服務(wù)又依賴于D和E服務(wù)。

      通常在服務(wù)的集成測試過程中,若需對A服務(wù)進行測試,那么必須首先構(gòu)建出A服務(wù)的整顆依賴樹,即B、C、D和E服務(wù)的實例。采用模擬服務(wù)輔助集成測試方法,在A服務(wù)需要進行集成測試時,只需如圖中構(gòu)建模擬B服務(wù)替代B、D、E服務(wù)實例以及用模擬C服務(wù)替代C服務(wù)實例,如此測試環(huán)境中的實例數(shù)量縮減為A服務(wù)、模擬B服務(wù)以及模擬C服務(wù)三個。模擬服務(wù)的應(yīng)用可以輔助和簡化系統(tǒng)集成測試的整個過程,具體會體現(xiàn)在如下四個方面:

      (1)簡化集成測試環(huán)境,方便被集成測試服務(wù)組件依賴服務(wù)環(huán)境的部署與搭建;

      (2)方便集成測試過程中問題的排查與定位,快速地應(yīng)對突發(fā)情況;

      (3)降低服務(wù)集成測試過程對關(guān)鍵服務(wù)的依賴程度,避免如第三方接口、在線集成組件等對測試過程的影響,提高測試的效率;

      (4)縮短軟件系統(tǒng)開發(fā)的生命周期[5]。

      3 面向服務(wù)的輔助集成測試系統(tǒng)設(shè)計

      3.1 輔助集成測試系統(tǒng)模型

      輔助集成測試系統(tǒng),用于生成、發(fā)布以及管理用于集成測試的模擬服務(wù),本著自動化構(gòu)建模擬服務(wù)的設(shè)計原則,為用戶提供簡易的操作方法,以應(yīng)對系統(tǒng)集成測試過程中的頻發(fā)狀況。輔助集成測試系統(tǒng)獨立于被集成測試服務(wù),其存在的目的是為被集成測試服務(wù)提供依賴的服務(wù)環(huán)境,如圖2所示,為輔助集成測試系統(tǒng)的模型設(shè)計圖。

      輔助集成測試系統(tǒng)負(fù)責(zé)管理模擬服務(wù)的整個生命周期,模型中主要闡述了測試數(shù)據(jù)準(zhǔn)備、模擬服務(wù)生成以及模擬服務(wù)運行三個階段的設(shè)計工作,測試數(shù)據(jù)準(zhǔn)備階段明確了集成測試前應(yīng)準(zhǔn)備的模擬服務(wù)接口用例樣本和樣本任務(wù)編排數(shù)據(jù),模擬服務(wù)生成階段指明了測試過程中模擬服務(wù)的構(gòu)建流程,模擬服務(wù)運行階段設(shè)計了模擬服務(wù)提供服務(wù)的關(guān)鍵過程。

      3.2 測試數(shù)據(jù)準(zhǔn)備

      系統(tǒng)集成測試前,通常存在一定的準(zhǔn)備時間,用于進行測試環(huán)境的準(zhǔn)備工作。模型中的測試數(shù)據(jù)準(zhǔn)備階段設(shè)定在系統(tǒng)集成測試前,為集成測試過程準(zhǔn)備必要的輔助集成測試數(shù)據(jù),這些準(zhǔn)備數(shù)據(jù)的目的是使得集成測試過程快速而有效,保障集成測試過程的可靠性,做到有條不紊地應(yīng)對突發(fā)狀況。

      輔助集成測試系統(tǒng)主要包含兩個方面數(shù)據(jù)的準(zhǔn)備工作,一方面是準(zhǔn)備被模擬服務(wù)的測試用例數(shù)據(jù)(圖2中的服務(wù)接口用例樣本),另一方面是準(zhǔn)備模擬服務(wù)接口用例的任務(wù)編排數(shù)據(jù)。通常情況下,服務(wù)接口在執(zhí)行請求操作時會按照參數(shù)處理、執(zhí)行業(yè)務(wù)和返回響應(yīng)數(shù)據(jù)三個步驟進行,如圖3所示,在輔助集成測試系統(tǒng)中需對應(yīng)準(zhǔn)備請求樣本數(shù)據(jù)、任務(wù)數(shù)據(jù)和響應(yīng)樣本數(shù)據(jù)。請求樣本數(shù)據(jù)和響應(yīng)樣本數(shù)據(jù)為接口的測試用例數(shù)據(jù),并以成對的方式出現(xiàn),數(shù)據(jù)的來源可以是測試用例文檔的提取數(shù)據(jù)、用戶人員的錄入數(shù)據(jù)以及自動生成工具的生成數(shù)據(jù)[6]。任務(wù)編排數(shù)據(jù)用于描述模擬服務(wù)接口在特定的請求樣本數(shù)據(jù)下需要執(zhí)行的一系列任務(wù)信息,如第三方服務(wù)調(diào)用、計時返回等,任務(wù)編排數(shù)據(jù)可以模擬目標(biāo)服務(wù)的功能特性,這一過程需要通過特定的任務(wù)編排工具進行操作。

      3.3 模擬服務(wù)生成

      在模擬服務(wù)的生成階段中,輔助集成測試系統(tǒng)需要為測試人員提供能夠簡單而快速地構(gòu)建模擬服務(wù)的服務(wù)生成工具,負(fù)責(zé)根據(jù)測試數(shù)據(jù)準(zhǔn)備階段的準(zhǔn)備數(shù)據(jù)創(chuàng)構(gòu)建模擬服務(wù)。

      服務(wù)生成工具從被模擬服務(wù)接口的用例樣本出發(fā),篩選出測試結(jié)果表現(xiàn)正常(能夠反應(yīng)被模擬服務(wù)正常情況下應(yīng)具有的請求、響應(yīng)數(shù)據(jù)特性)的用例數(shù)據(jù)作為模擬對象,并且從這些對象中提取模擬服務(wù)接口的元信息用于服務(wù)的構(gòu)建依據(jù)。通常,由于一個服務(wù)接口往往存在多個用例樣本,所以提取出的接口元信息需要通過歸并操作來簡化模擬服務(wù)接口的數(shù)量,這一過程會提高模擬服務(wù)的質(zhì)量及執(zhí)行效率。

      輔助集成測試系統(tǒng)提供服務(wù)構(gòu)建器用于根據(jù)提取出的接口元信息生成模擬服務(wù)的接口定義,再將接口的用例樣本匹配邏輯以及任務(wù)執(zhí)行邏輯注入至服務(wù)接口的實現(xiàn)中,即可完成對模擬服務(wù)接口的實現(xiàn)。最后,生成的模擬服務(wù)接口及其實現(xiàn)將經(jīng)過編譯與裝載過程,等待模擬服務(wù)進入發(fā)布階段。

      3.4 模擬服務(wù)運行

      模擬服務(wù)經(jīng)過生成階段被裝載至內(nèi)存中,而在模擬服務(wù)發(fā)布階段,測試人員只需指定服務(wù)的發(fā)布地址以及綁定端口等部署信息,即可準(zhǔn)備進行模擬服務(wù)的發(fā)布。由于輔助集成測試系統(tǒng)模型中設(shè)計集成了用于發(fā)布模擬服務(wù)的嵌入式服務(wù)容器,所以模擬服務(wù)可以快速地被部署和發(fā)布,嵌入式的服務(wù)容器也更加方便了對模擬服務(wù)的管理工作。

      已發(fā)布的模擬服務(wù)由于沒有真實的業(yè)務(wù)實現(xiàn),當(dāng)存在服務(wù)調(diào)用時,模擬服務(wù)執(zhí)行注入的樣本匹配邏輯完成響應(yīng)數(shù)據(jù)的查詢工作,同時在匹配目的用例樣本后,根據(jù)植入的任務(wù)執(zhí)行邏輯完成與用例樣本關(guān)聯(lián)的編排任務(wù),最后將匹配的結(jié)果反饋至服務(wù)調(diào)用處。模擬服務(wù)的運行時序圖如圖4所示。

      4 模型應(yīng)用與原型系統(tǒng)實現(xiàn)

      面向服務(wù)的體系結(jié)構(gòu)下,基于HTTP協(xié)議的Web服務(wù)作為面向服務(wù)的一種實現(xiàn)方式,已廣泛應(yīng)用于企業(yè)的系統(tǒng)開發(fā)過程,而Web服務(wù)中當(dāng)以SOAP(簡單對象訪問協(xié)議)服務(wù)技術(shù)歷史最為悠久[7]。如圖5所示,為輔助集成測試系統(tǒng)模型的原型系統(tǒng)部署圖,下面將闡述系統(tǒng)中基于HTTP協(xié)議的SOAP模擬服務(wù)的自動構(gòu)建和發(fā)布過程,介紹原型系統(tǒng)的實現(xiàn)細(xì)節(jié)。

      4.1 模擬服務(wù)接口提取

      SOAP服務(wù)以XML的形式封裝服務(wù)請求消息[8],如圖6展示了用于用戶添加請求的SOAP消息信封,通過協(xié)議綁定技術(shù)該消息將被映射為調(diào)用服務(wù)實現(xiàn)POJO(簡單Java對象)的addUser接口。

      輔助集成測試系統(tǒng)采用圖中加黑片段XML數(shù)據(jù)作為服務(wù)接口的一個請求樣本數(shù)據(jù),構(gòu)建名為addUser的POJO方法,其輸入?yún)?shù)為User對象,對象包含name、age和married三個屬性。理想狀態(tài)下,User對象三個屬性的類型分別為String、int和boolean,但是輔助集成測試系統(tǒng)識別三個屬性均為String類型,得到一個擁有三個String類型屬性的User對象,因為基于Document/literal實現(xiàn)的SOAP服務(wù)消息中并不攜帶數(shù)據(jù)的類型信息[9],所以它不影響對象的數(shù)據(jù)綁定,如此簡化了模擬服務(wù)的構(gòu)建過程。同樣,采用上述方法可以從響應(yīng)樣本數(shù)據(jù)中提取方法返回值類型,完成模擬服務(wù)接口元信息的提取過程。

      4.2 模擬服務(wù)構(gòu)建

      模擬服務(wù)在接收到請求消息后,通過數(shù)據(jù)綁定技術(shù)將請求消息綁定至服務(wù)實現(xiàn)POJO的方法參數(shù)上,完成目標(biāo)接口的匹配,這一過程采用CXF框架(Apache CXF服務(wù)框架)自動完成[10]。

      模擬服務(wù)通過調(diào)用樣本匹配引擎和任務(wù)查詢引擎進行關(guān)聯(lián)數(shù)據(jù)查詢,二者采用獨立運行的Web服務(wù)方式供模擬服務(wù)調(diào)用,下面為模擬服務(wù)的添加用戶接口實現(xiàn)代碼:

      其中,F(xiàn)inder類封裝了樣本匹配引擎和任務(wù)查詢引擎的查詢接口,并提供了簡單的調(diào)用接口findSample和findTasks,方便在創(chuàng)建模擬服務(wù)時植入統(tǒng)一的調(diào)用代碼。在運行過程中,根據(jù)Java的反射機制finder實例可以明確當(dāng)前服務(wù)的位置,再由接口的參數(shù)匹配確定具體的樣本用例,用例樣本匹配過程涉及Java基本類型和自定義對象類型的深度匹配,可以借助于規(guī)則引擎[11],本文采用的是將參數(shù)對象順序進行序列化后比較的方法[12]。最后,模擬服務(wù)順序遍歷查詢出的樣本編排任務(wù)信息,并依次執(zhí)行任務(wù),完成后將查詢出的響應(yīng)消息返回。

      4.3 服務(wù)發(fā)布與管理

      通過動態(tài)生成和編譯后的模擬服務(wù)實體被載入至內(nèi)存,測試人員在設(shè)定模擬服務(wù)的部署位置、發(fā)布端口等信息后,模擬服務(wù)交由CXF以反射的方式進行發(fā)布,即可為外部請求者提供服務(wù)。模擬服務(wù)運行時依賴的樣本匹配引擎與任務(wù)查詢引擎通過獨立的Web服務(wù)方式運行,為集成測試過程中的模擬服務(wù)提供查詢服務(wù)。最后,模擬服務(wù)的管理包含兩個方面,一方面是模擬服務(wù)啟停狀態(tài)的控制,通過調(diào)用CXF的服務(wù)控制接口可以很好的完成這方面工作;另一方面是樣本數(shù)據(jù)和任務(wù)數(shù)據(jù)的管理,由于兩個查詢引擎采用獨立的服務(wù)方式運行,所以提供簡易的數(shù)據(jù)管理工具即可。

      4.4 實際應(yīng)用效果

      經(jīng)實踐證明,模擬服務(wù)在系統(tǒng)集成測試階段能夠有效地應(yīng)對關(guān)鍵服務(wù)模塊出現(xiàn)問題的情況,使得集成測試過程持續(xù)且快速。模擬服務(wù)屏蔽了應(yīng)用系統(tǒng)下復(fù)雜的測試環(huán)境,同樣為無法進行在線集成的線上接口提供了便利的解決方案。如圖7所示,為輔助集成測試系統(tǒng)的主界面圖。

      5 結(jié)束語

      本文從構(gòu)建模擬服務(wù)的獨特角度出發(fā),提出了面向服務(wù)的輔助集成測試系統(tǒng)模型,通過模擬服務(wù)從容地應(yīng)對了集成測試環(huán)境中服務(wù)數(shù)量多、服務(wù)環(huán)境復(fù)雜而帶來的一系列問題,使得服務(wù)集成過程快速而可靠,有效地緩解了集成測試階段的壓力。文中總結(jié)了模擬服務(wù)創(chuàng)建及發(fā)布的整個生命周期,明確了模型中各模塊的對于構(gòu)建模擬服務(wù)至關(guān)重要的作用,然而尚未提及如接口歸并、樣本匹配等關(guān)鍵模塊的高效實現(xiàn)方法,當(dāng)樣本數(shù)據(jù)量異常龐大時,這些模塊將嚴(yán)重影響模擬服務(wù)的性能,為了能夠提供高效并且可靠的模擬服務(wù),這一方面仍需加以關(guān)注。

      參考文獻:

      [1]凌曉東.綜述[J].計算機應(yīng)用與軟件,2007(10):122-124.

      [2]楊利利,李必信.Web服務(wù)測試問題綜述[J].計算機科學(xué),2008(09):258-265.

      [3]馮細(xì)光,劉建勛.Web服務(wù)測試技術(shù)綜述[J].微計算機應(yīng)用,2010(01):111-126.

      [4]蘭景英.軟件集成測試技術(shù)研究[J].信息技術(shù),2006(08):102-105.

      [5]Bobby Woolf.Streamline SOA Development using Service Mocks[J].IBM developerWorks,2005.

      [6]馬春燕,朱怡安,陸偉.Web服務(wù)自動化測試技術(shù)[J].計算機科學(xué),2012(01):162-169.

      [7]沙為超.基于Web服務(wù)的SOA應(yīng)用研究[J].安徽大學(xué),2007.

      [8]張仙偉,張璟.Web服務(wù)的核心技術(shù)之一——SOAP協(xié)議[J].電子科技,2010(03):93-96.

      [9]李海峰,楊小虎.基于風(fēng)格與風(fēng)格消息的服務(wù)性能比較[J].計算機應(yīng)用與軟件,2007(01):80-117.

      [10]彭邦倫.利用JAX—WS開發(fā)Web Service[J].電腦編程技巧與維護,2008(12):21-23.

      [11]劉偉.Java規(guī)則引擎——Drools的介紹及應(yīng)用[J].微計算機應(yīng)用,2005(06):79-83.

      [12]晏立,沈銳.Java序列化技術(shù)的探討[J].紅河學(xué)院學(xué)報,2011(04):37-39.

      [13]張羽豐.面向服務(wù)的Web服務(wù)測試框架研究與實現(xiàn)[J].國防科學(xué)技術(shù)大學(xué),2008.

      [14]羅作民,朱燕,程明.Web服務(wù)測試工具SOAPUI及其分析[J].計算機應(yīng)用與軟件,2010(05):155-157.

      [15]秦鋒,李喬,鄭嘯.Web服務(wù)測試的一種實現(xiàn)[J].計算機技術(shù)與發(fā)展,2007(08):239-242.

      [16]嚴(yán)思靜,常紅春,劉鋼,唐奮飛,馮國軍.Web服務(wù)測試工具的設(shè)計[J].硅谷,2010(08):60-64.

      作者簡介:徐亮亮,男,研究生在讀,研究方向:軍用軟件集成;宋劍鋒,男,博士;田飛,男,研究生,研究方向:軍用軟件集成。

      作者單位:華北計算技術(shù)研究所 軍用中間件研發(fā)中心,北京 100083;中國電子設(shè)備系統(tǒng)工程公司研究所,北京 100141

      猜你喜歡
      測試用例
      基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
      淺析基于因果圖法軟件測試用例的設(shè)計
      基于MBD模型自動生成測試用例的軟件測試方法
      基于混合遺傳算法的回歸測試用例集最小化研究
      基于需求模型的航天軟件測試用例生成方法
      基于依賴結(jié)構(gòu)的測試用例優(yōu)先級技術(shù)
      電動汽車整車控制軟件測試用例設(shè)計方法及應(yīng)用
      軟件測試用例執(zhí)行優(yōu)化研究
      淺析軟件測試用例管理
      軟件回歸測試用例選取方法研究
      龙川县| 延寿县| 从江县| 玛曲县| 贵阳市| 长寿区| 泰宁县| 武汉市| 佳木斯市| 浦城县| 津南区| 抚宁县| 景泰县| 安岳县| 阿勒泰市| 香河县| 林芝县| 淮安市| 西乌珠穆沁旗| 西林县| 鞍山市| 邵阳县| 绥宁县| 长治县| 读书| 高尔夫| 新营市| 万盛区| 石河子市| 内江市| 吴旗县| 临朐县| 琼结县| 通山县| 满洲里市| 察隅县| 鱼台县| 平和县| 英吉沙县| 常德市| 洛扎县|