摘要:文章以更好地實現(xiàn)服務(wù)組合測試為目標(biāo),提出基于BPEL的Web服務(wù)組合測試路徑生成方法。首先將應(yīng)用于描述BPEL流程的模型WFDAG,通過DAG對Web服務(wù)工作流進行建模,有效保證數(shù)據(jù)流測試路徑的生成。然后以此為基礎(chǔ)應(yīng)用擴展后的分析方法,并采取覆蓋原則ALL-USES進行數(shù)據(jù)流測試。最后以變量信息為指標(biāo)分析所構(gòu)建的WFDAG模型,從而獲取符合所有既定數(shù)據(jù)流標(biāo)準(zhǔn)的測試路徑。
關(guān)鍵詞:BPEL;Web服務(wù)組合;測試路徑生成;WFDAG
中圖法分類號:TP393 文獻(xiàn)標(biāo)識碼:A
1 引言
BPEL 能夠使當(dāng)前基礎(chǔ)的Web 服務(wù)根據(jù)特定的應(yīng)用邏輯構(gòu)成特性更加復(fù)雜的業(yè)務(wù)集合,實現(xiàn)服務(wù)的重復(fù)應(yīng)用與價值提升[1] 。但其復(fù)雜性會對服務(wù)組合測試造成較大的影響。實現(xiàn)服務(wù)組合測試需與測試用例相結(jié)合,通過測試路徑生成測試用例[2] 。基于數(shù)據(jù)流覆蓋的測試原則保證服務(wù)組合的正確性是當(dāng)前最直接、有效的方式,其主要是對某設(shè)定的輸入獲取對應(yīng)期望輸出[3] ,同時利用某些變量的定義完成輸入、輸出間的關(guān)聯(lián),該方法具有較為直觀的呈現(xiàn)結(jié)果。當(dāng)前,國內(nèi)外針對數(shù)據(jù)流相關(guān)測試標(biāo)準(zhǔn)方面開展的試驗工作尚少[4] 。所以,為解決基于BPEL 的服務(wù)組合測試路徑生成中存在的問題,需要先提出生成測試路徑的方法,以獲取符合所有既定數(shù)據(jù)流標(biāo)準(zhǔn)的測試路徑。
2 BPEL 與Web 服務(wù)組合
2.1 BPEL
BPEL(Business Process Execution Language)是結(jié)合業(yè)務(wù)流程與Web 服務(wù)組合的一種業(yè)務(wù)流程執(zhí)行語言,其是以XML 的流程描述語言為基礎(chǔ)的一種強有力工具,可為Web 服務(wù)技術(shù)提供支持。BPEL 可實現(xiàn)業(yè)務(wù)流程結(jié)構(gòu)的規(guī)范化處理以及Web 服務(wù)的開發(fā),依賴于WSDL 規(guī)范且全部需要的外部資源均被稱為WSDL 服務(wù),能夠?qū)α鞒虄?nèi)的數(shù)據(jù)進行管理,以提高其傳輸有效性,同時還能夠?qū)崿F(xiàn)生命周期管理的優(yōu)化,提升管理效率。
2.2 Web 服務(wù)組合
Web 服務(wù)組合是通過輕量級服務(wù)構(gòu)建復(fù)雜性服務(wù),實現(xiàn)服務(wù)體系的整體規(guī)范化、系統(tǒng)化、綜合化,其具有實踐性,為企業(yè)服務(wù)自動化奠定了基礎(chǔ)。其中,輕量級服務(wù)表示規(guī)模小、簡單易操作的任務(wù)功能,復(fù)雜性服務(wù)表示構(gòu)建功能較全或針對用戶需求制定的服務(wù),可最大程度地滿足用戶需要。在輕量級服務(wù)過渡至復(fù)雜性服務(wù)時,需要對所有Web 服務(wù)進行連接,以構(gòu)建一個統(tǒng)一的整體,從而提升企業(yè)管理效率。
3 Web 服務(wù)工作流建模
WFDAG ( Work Flow DAG) 基于有向無環(huán)圖(Directed Acyclic Graph, DAG)增加了對BPEL 并發(fā)控制與同步依賴關(guān)系的處理并統(tǒng)計了相關(guān)數(shù)據(jù),以便開展數(shù)據(jù)流分析,從而獲得測試路徑。DAG 為一個無環(huán)的有向圖,被廣泛應(yīng)用于描述業(yè)務(wù)邏輯,其具有簡單、直觀等優(yōu)勢,因此,通過DAG 對Web 服務(wù)工作流進行建模,WFDAG 構(gòu)成如下。
3.1 開始節(jié)點和結(jié)束節(jié)點
整體工作流的入、出口點分別通過開始、結(jié)束節(jié)點表示。二者分別負(fù)責(zé)統(tǒng)計整體工作流的輸入?yún)?shù)列表和返回值。在WFDAG 中將開始和結(jié)束節(jié)點表示為2 個特殊的節(jié)點,開始、結(jié)束節(jié)點分別通過S,E描述,具體見圖1。
3.2 活動和連接
如圖1 所示,小寫字母為WFDAG 內(nèi)除開始、結(jié)束節(jié)點外的節(jié)點,表示一個活動,指的是某一Web 服務(wù)的一項具體操作;一條有向弧段表示一個連接,負(fù)責(zé)連接2 個相鄰的活動,描述了活動間的運行順序,且儲存2 個相鄰Web 服務(wù)輸入與輸出的匹配關(guān)系。
3.3 有效性
為實現(xiàn)有效、正確的解析,要求WFDAG 設(shè)計必須遵循以下要求: (1) WFDAG 內(nèi)不存在環(huán); (2)WFDAG 之外無孤立活動;(3)所有連接表示參數(shù)匹配,兩端的參數(shù)類型一致。
3.4 WFDAG 的遍歷及BPEL 文檔的生成
該模型的核心算法主要包括有效性檢驗、WFDAG 的遍歷2 部分。在有效性檢驗方面,主要對WFDAG 是否存在環(huán)進行判斷,而通過DAG 構(gòu)建Web服務(wù)工作流模型的重點為WFDAG 的遍歷算法,其過程如下。由于WFDAG 表示的是Web 服務(wù)工作流的業(yè)務(wù)流程,對其所有節(jié)點的訪問次序表示為工作流的業(yè)務(wù)邏輯,即遍歷路徑不隨機且須從開始節(jié)點展開開始遍歷,因此工作流中的服務(wù)之間存在一種依賴關(guān)系。例如,隨機相鄰的2 個Web 服務(wù)a 與b 的連接方向若為a 指向b,則b 依賴于a,主要原因是b 可以有效執(zhí)行的基礎(chǔ)是a 已經(jīng)完成執(zhí)行且將a 的返回結(jié)果指配給b?;谶@種依賴關(guān)系,采取的遍歷算法稱為基于依賴的遍歷方式,需要通過Visitor 設(shè)計模式對WFDAG 進行設(shè)計,并對節(jié)點進行具體的訪問操作,即將生成BPEL 的元素封裝至Visitor 接口的實現(xiàn)類中,
通過實現(xiàn)Visitor 的具體類來生成BPEL 文檔的各個部分。
4 測試路徑生成
4.1 擴展傳統(tǒng)的數(shù)據(jù)流分析方法
本文采用基于有向無環(huán)圖的可抵達(dá)定義分析法,并應(yīng)用ALL?USES 的覆蓋準(zhǔn)則(即測試路徑覆蓋所有定義?使用對)。已知傳統(tǒng)的可抵達(dá)定義計算公式如下:
5 結(jié)束語
針對基于BPEL 的Web 服務(wù)組合的測試路徑生成問題,先對BPEL 流程建模,獲取相關(guān)變量信息并構(gòu)建可擴展的有向無環(huán)圖WFDAG 模型,并以此為基礎(chǔ)按照ALL?USES 準(zhǔn)則進行測試,得出服務(wù)組合符合ALL?USES 的測試路徑。未來還可以通過在建模方法的核心結(jié)構(gòu)中加入復(fù)雜語法、驗證BPEL 流程中數(shù)據(jù)流的屬性等方式對本文方法展開進一步的研究。
參考文獻(xiàn):
[1] 徐克圣,王蘭.基于BPEL 的WEB 服務(wù)組合測試路徑生成[J].大連交通大學(xué)學(xué)報,2020,41(2):94?99.
[2] 鐵威,黃志球,王進.基于BPEL 的RESTFUL WEB 服務(wù)異步交互及組合研究[J].計算機工程與科學(xué),2013,35(4):29?36.
[3] 周子健,劉冬梅.基于PETRI 網(wǎng)自動化構(gòu)建BPEL 流程的SMV 模型[J].計算機與數(shù)字工程,2021,49(10):2062?2068+2132.
[4] 張亞.服務(wù)組合BPEL 測試序列生成研究[J].計算機科學(xué),2017,44(1):203?207+225.
作者簡介:董天驕(1981—),本科,工程師,研究方向:計算機科學(xué)與技術(shù)。