王 瑾 馬 凱 楊紅麗
(北京工業(yè)大學計算機學院 北京 100124)
Web服務(wù)編排場景的XML Schema消息類型精化
王 瑾 馬 凱 楊紅麗
(北京工業(yè)大學計算機學院 北京 100124)
Web服務(wù)(Web Services)編排描述了Web服務(wù)組合的交互行為,在實際開發(fā)中,Web服務(wù)組合的實現(xiàn)可能存在交互的數(shù)據(jù)類型、交互序列與編排規(guī)范不相符的情況,為了測試Web服務(wù)(組合)與編排的相符性,需要從編排規(guī)范生成測試用例。由于編排場景描述了編排中各個參與方的交互序列及其交互消息的XML Schema類型,從而可以根據(jù)場景中的XML Schema類型生成測試數(shù)據(jù)。由于XML Schema類型中指示器的作用導致類型的不確定性,需要解決XML Schema類型精化問題,為此提出了基于組合測試的XML Schema類型精化方法。通過定義XML Schema類型樹,給出了基于組合測試工具Cascade的類型精化算法,并通過實例表明該方法的有效性。
Web服務(wù)編排 XML Schema 指示器 類型精化 組合測試
Web服務(wù)是針對因特網(wǎng)上分布計算提出的一種基于開放標準、松散耦合及跨平臺的新型軟件構(gòu)件。但是單個Web服務(wù)已經(jīng)越來越難以滿足人們?nèi)找鎻碗s的業(yè)務(wù)需求,Web服務(wù)組合應(yīng)運而生。服務(wù)編排是從全局的角度描述Web服務(wù)組合之間的交互,從而確保服務(wù)組合各個參與方能夠協(xié)調(diào)完成一項業(yè)務(wù)邏輯。
編排結(jié)構(gòu)多樣,數(shù)據(jù)類型復雜。國外的很多研究組都對編排進行了研究,文獻[1-4]提出了基于模型檢查的方法驗證服務(wù)編排;大部分工作著眼于編排的建模與模型檢查,驗證的方法可以確保編排規(guī)范和角色需求的正確性,而測試可以保證在源碼不可知只能獲得實現(xiàn)端的接口時,編排實現(xiàn)的正確性,而基于編排的相符性的測試研究工作還很不成熟。本課題組提出了基于編排場景的Web服務(wù)組合的相符性測試框架[1],編排場景可以理解為多個角色之間的確定的交互序列(不含選擇、循環(huán))[6]。根據(jù)編排中的控制流活動抽取一組編排場景,每個編排場景的交互序列一定,從而在編排場景上進行測試。
編排場景不僅描述了多個參與方的交互序列,還定義了交互的數(shù)據(jù)類型,這些類型被定義在XML Schema中。而相符性測試的測試數(shù)據(jù)由場景中的XML Schema產(chǎn)生。由于XML Schema中存在choice、minOccurs和maxOccurs這樣的指示器,造成變量類型的多樣化,因此在生成測試數(shù)據(jù)之前要先對XML Schema中的指示器進行劃分。多個指示器存在時,需要對劃分的子類型進行組合,如果采用全排列的組合方式容易造成組合爆炸,產(chǎn)生昂貴的測試代價[7-9]。本文采用了組合測試的思想對子類型的劃分進行組合,并將組合后的數(shù)據(jù)轉(zhuǎn)換為一組類型確定的類型樹,為測試數(shù)據(jù)的生成奠定基礎(chǔ)。首先,將XML Schema解析成類型樹,方便與組合測試工具進行模型轉(zhuǎn)換,然后通過遍歷類型樹邊的指示器信息,對不同指示器進行不同的處理,得到相應(yīng)組合測試工具輸入模型,通過組合測試工具的組合,得到的一組輸出模型,再將輸出值轉(zhuǎn)化為一組對應(yīng)的精化后的類型樹。
1.1 編排場景
定義1 編排場景S是一個四元組:
S=
其中,R是角色聲明的有限集,分為被測服務(wù)和測試樁;I是交互類型的有限集,被定義在外部的XML Schema中;V是變量聲明的有限集,每一個變量都對應(yīng)I中的一個變量;A是交互序列的有限集,分為請求型Request{R1.x op R2.y Guard}和響應(yīng)型Response{R1.x op R2.x Guard}。Request{R1.x op R2.y Guard}是指在滿足Guard前置條件的基礎(chǔ)上,將R1上的x變量通過操作op傳給R2的y變量;Response{R1.x op R2.x Guard}是指在滿足Guard前置條件的基礎(chǔ)上,將R2的變量y通過op操作傳給R1的x變量。
圖1 成功購買場景
圖1的UML時序圖描述了購買成功的場景。場景中包含客戶、網(wǎng)上商城、庫存和銀行四個角色。交互流程為:客戶發(fā)送訂單請求給網(wǎng)上商城;網(wǎng)上商城向庫存發(fā)送庫存檢查信息;庫存將檢查結(jié)果發(fā)送給商城;商城發(fā)送訂單完成的信息給客戶??蛻舭l(fā)送銀行信息給商城;商城將付款信息發(fā)送給銀行;銀行向商城發(fā)送付款完成信息;商城發(fā)送訂購成功信息給客戶。
1.2 XML Schema類型劃分
XML Schema[10]是用于描述和規(guī)范XML文檔邏輯結(jié)構(gòu)的一種語言,通過指示器來控制元素的使用方式。指示器導致了變量類型的多樣性,尤其是choice、minOccurs、maxOccurs三種指示器。表1給出了這三種指示器的劃分規(guī)則。
表1 指示器類型劃分規(guī)則
1) 當出現(xiàn)choice指示器時,someElement可以選擇c1、c2、c3、…,將其分別劃分為someElement子元素為c1、c2、c3、…多個子類型。
2) 當出現(xiàn)minOccurs=″k1″ maxOccurs=″k2″指示器時,someElement最少可以出現(xiàn)k1次,最多可以出現(xiàn)k2次,將其劃分為三個子類型,分別為minOccurs=″k1″ maxOccurs =″k1″, minOccurs=″k2″ maxOccurs=″k2″,minOccurs=″k″ maxOccurs= ″k″ (k1 3) 當出現(xiàn)minOccurs=″k1″ maxOccurs=″unbound″指示器時,將其劃分為兩種子類型:minOccurs=″k1″ maxOccurs =″k1″,minOccurs=″k1+1″ maxOccurs =″k1+1″。 通過相應(yīng)的劃分規(guī)則,得到結(jié)構(gòu)確定的子類型,并且使得該子類型一定滿足XML Schema類型定義。當一個XML Schema中存在多個指示器時,對每個指示器進行劃分并且重新組合,可以得到一組類型確定并滿足初始XML Schema類型的子類型。如果采用全排列的方式對劃分后的元素進行重組,勢必會產(chǎn)生一組數(shù)量龐大的子類型,為了解決這個問題,本文引入了組合的測試方法對劃分的子類型進行組合。 1.3 組合測試方法 組合測試方法旨在應(yīng)用較少的測試用例有效地檢查軟件系統(tǒng)中各個因素以及它們之間的互相作用對系統(tǒng)產(chǎn)生的影響。 針對具體待測軟件,在滿足給定組合覆蓋要求的前提下,生成規(guī)模盡可能小的測試用例集,以便在保證錯誤檢測能力的前提下盡可能降低測試成本。 組合測試中的基本概念包括: (1) 變量,表示軟件的輸入; (2) 水平,表示變量的取值; (3) 強度,表示變量之間相互作用的強度。 Cascade[11]是一款組合測試用例生成工具,工具支持的變量類型有:string、integer、double。變量的水平由用戶輸入。用戶可以輸入蘊含表達式對用例的生成進行約束,表達式支持字符串以及數(shù)值的比較,支持邏輯和算數(shù)運算符。 Cascade蘊含式約束的引入可以人為的減少無效組合的出現(xiàn),有效提高用例集質(zhì)量。Cascade的約束表達式有兩種形式: (1) expA -> expB 表示A蘊含B,即若表達式A成立,那么B也必須成立。 (2) expA##(param_list), 表示如果表達式expA成立,那么param_list集合中的參數(shù)無意義,不參加組合。 下面給出Cascade的輸入和輸出模型定義: 定義2 Cascade的輸入模型 (1) { (Vi,Li) |i=1,2,…,n}。其中n為自然數(shù)。每個Vi都是一個變量,Li是該變量的水平。整個集合可以看作包含了多個VL對,每個VL表示一個指示器的劃分; (2) Cons,約束表達式的集合。 定義3 Cascade的輸出模型 表示為{ 1.4 類型樹 為了方便將場景交互類型XML Schema類型與組合測試工具進行轉(zhuǎn)換,需要對XML Schema類型建模。本文用樹模型表示XML Schema類型,稱為XML Schema類型樹,簡稱類型樹,在類型精化的過程中只需關(guān)注類型樹邊上的指示器約束信息。下面給出類型樹及精化后類型樹的定義。 定義4 XML Schema類型樹定義為一個四元組: T= 其中,N是元素節(jié)點和控制節(jié)點的有窮集合,控制節(jié)點分為 sequence和choice兩種。 r是樹的根節(jié)點。 C是節(jié)點之間的指示器約束集合,本文涉及minOccurs、maxOccurs和choice三種指示器。其中指示器約束可以取以下約束中的一種或多種: (1) True; (2) (3) (4) E是邊的有窮集合。邊可以表示為e(m,c,n),其中c∈C,m∈N∪r,n∈N。 圖2是圖1中第一個交互中訂單請求的XML Schema所對應(yīng)的類型樹。purchaseOrder是該類型樹的根節(jié)點。purchaseOrder_sequence、coupon_choice和goods_sequence是控制節(jié)點,其他節(jié)點均為元素節(jié)點。每一條邊上都有一種或多種指示器約束。例如邊e1對應(yīng)的約束c1 圖2 訂單類型樹 2.1 XML Schema類型精化過程 如圖3所示,是XML Schema類型精化的過程,包括四部分內(nèi)容。 圖3 XML Schema類型精化過程 (1) 從場景中抽取XML Schema及衛(wèi)士信息(Guard), 通過分析文件中的XML Schema,提取指示器信息,生成相應(yīng)的類型樹模型。 (2) 對解析生成的XML Schema類型樹調(diào)用treeToCascade算法遍歷類型樹邊上的約束信息,生成Cascade組合測試工具的輸入模型。 (3) 通過Cascade的組合,得到一組輸出數(shù)據(jù),每一組數(shù)據(jù)代表類型樹約束信息的確定取值,即Cascade的輸出模型。 (4) 對輸出的每組數(shù)據(jù)調(diào)用toTrees算法生成一個精化的類型樹,得到一組精化的類型樹集合。精化后的類型樹中每個指示器信息都為確定值。 2.2 treeToCascade算法 treeToCascade算法是以類型樹模型為輸入,通過遍歷邊上的指示器信息,將其自動轉(zhuǎn)化為Cascade的輸入數(shù)據(jù)VL對和相應(yīng)的約束Cons。 1) 算法思路 遍歷邊的過程中: (1) 當遇到 (2) 當遇到 (3) 當choice節(jié)點的入度邊有 對于choice節(jié)點可出現(xiàn)多次的情況,為choice節(jié)點增加額外的信息記錄其子節(jié)點出現(xiàn)的次序。同時引入新的組合變量即VL對,來表示choice節(jié)點每一次的子節(jié)點選擇。設(shè)choice節(jié)點的minOccurs為k1,maxOccurs為k2,且擁有的子節(jié)點為C1、C2、C3、C4。則引入的VL對如表2所示。 表2 choice出現(xiàn)多次的VL對 第一列表示的是choice節(jié)點的出現(xiàn)次數(shù),剩下分別表示第i次choice子節(jié)點的選擇。為了減少無效組合數(shù),同時為蘊含式集和Cons添加新的約束集: {choice=k ##(choicep) | k1<=k, k 若組合中choice節(jié)點出現(xiàn)次數(shù)取p,那么討論第p+1次choice節(jié)點的子節(jié)點顯然是沒有意義的。其中##(choicep)表示變量choicep不參與組合,是為了在實際組合用例的生成過程中去除無效VL對的影響,減少無效組合數(shù)量。 (4) 當一個節(jié)點的入度邊有 {choice1!=C &&…&& choicek2!=C → C=0|C∈L(choice)} 如果每一次choice子節(jié)點的選擇都沒有出現(xiàn)C,那么C節(jié)點置為0。 2) 輔助函數(shù) treeToCascade算法中用到的輔助函數(shù)有: (1) addVL(V,k1,k2)的輸入為變量V、指示器minOccurs的值k1和maxOccurs的值k2。如果k1==k2,則L={k1};如果k2==unbounded,則L={k1,k1+1};否則L={k1,k2,mid(k1,k2)},將該VL對加入到Cinput的{(V,L)}集合中。 (2) addVLs(m,j,L)的輸入為該邊的父節(jié)點、父節(jié)點入度邊maxOccurs指示器的值j和水平V。該函數(shù)的功能是將(m1,L) 、…、(mj,L)組(V,L)對加入到Cinput的{(V,L)}集合中。如果變量V已經(jīng)存在,將L的值并到V的水平中。 (3) addCon(con)的輸入為一條約束信息con,功能是將con約束加入Cinput中的{Cons}集合中。 (4) getL(V)的功能是返回Cinput中變量V的水平,setL(V,L)是將Cinput中變量V設(shè)置為L。 3) 算法偽碼 treeToCascade算法 輸入:類型樹T,場景中的衛(wèi)式信息(Guard) 輸出:Cinput={(Vi,Li)|i=1,2,3,...,n} ∪{Cons} 1 Cinput= ? 2 foreach e(m,c,n) ∈ T.E && c≠True do 3 if c== 4 addVL(n, k1, k2) 5 if n is the node with choice then 6 addCon({n=k ##(np)| k1<=k, k 7 if c== 8 if m.fatherEdge.c== 9 addVLs(m,k2,b) 10 else 11 addVL(m,b) 12 if c== 13 addVL(n, k1, k2) 14 if m.fatherEdge.c== 15 addVLs(m,k2’ , b) 16 addCon({m1!=C &&...&& mk2’!=C → C=0 |C∈L(cho)}) 17 else 18 addVL(m,b) 19 if n.guard != null then 20 e’=e 21 foreach m’ != root do 22 if c’== 23 setL(n’,getL(n)>0) 24 if c’== 25 setL(m’, b) 26 if c’== 27 setL(n’,getL(n)>0) 28 setL(m’, b) 29 m’=m’.father 30 return Cinput 算法中,第3-6行處理了類型樹邊上的約束c為 第7-11行處理了c為 第12-18行處理了c為 第19-29行處理Guard約束標記的節(jié)點。衛(wèi)式信息(Guard)來自編排規(guī)范,在場景抽取的過程中,每一個交互都帶有一個衛(wèi)式作為前置約束條件,對本次交互變量數(shù)據(jù)的全部或部分片段取值進行約束。當n節(jié)點含有衛(wèi)式標記時,生成測試數(shù)據(jù)時,要保證該節(jié)點一定存在。表現(xiàn)為: (1) 當root節(jié)點到該節(jié)點的路徑中,遇到choice指示器時choice=此邊的節(jié)點; (2) 當root節(jié)點到該節(jié)點的路徑中,遇到occurrence指示器時,此邊的孩子節(jié)點occurrence>0。 4) 算法時間復雜度 依據(jù)算法的設(shè)計,算法的時間復雜度主要體現(xiàn)在遍歷類型樹的邊以及當節(jié)點含有衛(wèi)式信息時要回溯到根節(jié)點處理相應(yīng)的指示器上。當類型樹邊的數(shù)量為n, 則遍歷類型樹邊的時間復雜度為O(n),設(shè)有m個節(jié)點含有衛(wèi)式信息,含衛(wèi)式信息的節(jié)點到根節(jié)點的平均距離為p,這里的距離是指節(jié)點到根節(jié)點之間的邊樹,則treeToCascade算法的時間復雜度為O(n)+mO(p)。 2.3 toTrees算法 通過輸入Cascade的變量、水平及約束,工具可以輸出變量的組合(稱為組合覆蓋數(shù)組),表示為Coutput:{ toTrees(T,a)算法中,a是Coutput中的一種組合,T是原來的類型樹模型集合。算法的輸出為精化后的類型樹集合。反復調(diào)用toTrees(T,a)算法處理Coutput中的每一條記錄,將得到每一種組合情況對應(yīng)的子類型。 算法用到的輔助函數(shù)有: 1) getVar(T,l)的輸入為類型樹T和水平中的某個值l,返回一個變量,這個變量的水平包含l且對應(yīng)的節(jié)點在類型樹T中。 2) add(V,T)的輸入為變量V和類型樹T,功能是添加變量V在T中對應(yīng)的節(jié)點及所有的子孫。 3) delete(V, T)的輸入為變量V和類型樹T,功能是刪除變量V在T中對應(yīng)的節(jié)點及其所有的子孫。 4) changeConstraint(y, c, V, T)的功能是改變特定邊上的約束為c,這條邊的父節(jié)點是y,子節(jié)點是變量V在類型樹T上對應(yīng)的節(jié)點。 toTrees算法 輸入:類型樹T, a= 輸出:精化類型樹集合T’s 1 T’s= ? 2 T’=T 3 foreach li in a do 4 Vi=getVar(T’,li) 5 if Vi is a choice node && !isNode(li) then 6 for i=1to li 7 Vi.father.add(Vi, T’) 8 name=getName(Vi) 9 changeName(Vi,name+”i”) 10 delete(Vi,T’) 11 else if isNode(li) then 12 foreach n in Vi.childrenlist do 13 if n!=li then delete(n, T’) 14 else if li==0 then delete(Vi, T’) 15 else if li==”#” continue 16 else 17 y=Vi.father 18 c= 19 changeConstraint(y, c, Vi, T’) 20 T’s=T’s∪{T’} 21 return T’s 算法中第5-10行是處理choice節(jié)點可出現(xiàn)多次的情況,首先獲取choice子節(jié)點數(shù)量n,根據(jù)子節(jié)點的數(shù)量,對該choice節(jié)點進行n次拷貝,這里的拷貝是指遞歸的對子節(jié)點及其孩子信息進行深度的拷貝。 第11-13行處理li對應(yīng)一個節(jié)點的值的情況,說明該li對應(yīng)的變量為一個choice節(jié)點,刪除該choice節(jié)點除li對應(yīng)的子節(jié)點外的其他孩子節(jié)點。 第14-15行是指當li==0時,代表li對應(yīng)的節(jié)點出現(xiàn)次數(shù)為0,刪除該節(jié)點。當li==”#”,代表該li無效,不做任何處理。 第19-21行表示將li所對應(yīng)節(jié)點的入度邊的約束改為 3.1 訂單類型樹的Cascade輸入模型 圖2所示的訂單類型樹,調(diào)用treeToCascade算法后,可以得到表3所示的變量及水平。 表3中,共有6個參數(shù)及水平,2個約束表達式,其中coupon_choice == ″1″ ##(coupon_choice2) 表示當參數(shù)coupon_choice取值為1時,參數(shù)coupon_choice2則不參與組合,coupon_choice1!= ″cashback″ && coupon_choice2!= ″cashback″ -> cashback == ″0″表示當coupon_choice1和coupon_choice2都不為cashback,則將cashback 的值置為0。強度設(shè)置為2,可以手動添加。 表3 訂單類型的Cascade的輸入 3.2 Cascade的輸出模型 通過Cascade的組合,表3中Cascade輸入模型會轉(zhuǎn)化為表4中的Cascade的輸出。每一行代表一組Cascade輸入變量的值的組合。表3中6個變量產(chǎn)生了9組值的組合。 例如第1行表示,coupon取值為0,coupon_choice取值為2,coupon_choice1取值為discount,coupon_choice2取值為discount,cashback取值為0,goods取值為2。 3.3 精化后的類型樹 對每一條Cascade的輸出調(diào)用toTrees算法后,會產(chǎn)生一組相應(yīng)的精化后的類型樹。如圖4所示,表示表6中第4條輸出調(diào)用toTrees算法后得到精化的類型樹。coupon節(jié)點的入度邊上的指示器信息為minOccurs=1&&maxOccurs=1,代表coupon節(jié)點只出現(xiàn)一次;coupon_choice為1代表coupon_choice指示器只出現(xiàn)一次,由conpon_choice1表示;coupon_choice1值為discount;goods入度邊上的指示器信息為minOccurs=2&&maxOccurs=2,代表goods出現(xiàn)的次數(shù)確定為2。 通過實例分析可得,每一顆精化后的類型樹的指示器信息都是確定的。在沒有借助Cascade組合測試工具時,訂單請求的XML Schema類型通過劃分和全排列的組合,會產(chǎn)生96組子類型,并且會產(chǎn)生一些無效的組合,例如當coupon_choice選擇1時,討論coupon_choice2變量的組合沒有意義。在Cascade組合測試工具的幫助下,得到了9組子類型并覆蓋了所有需要被組合的變量的取值。 圖4 精化后的類型樹 利用組合測試的思想實現(xiàn)XML Schema的類型精化,不僅可以減少精化后的類型樹的數(shù)量,從而極大地減少測試數(shù)據(jù)的數(shù)量,降低了測試代價;同時提高了測試數(shù)據(jù)生成的可控性。為測試數(shù)據(jù)的生成及相符性測試奠定了重要的基礎(chǔ)。 國內(nèi)外關(guān)于Web服務(wù)組合測試的工作有很多。Zhou等[12]采用動態(tài)符號執(zhí)行的方法產(chǎn)生測試的輸入和斷言從而進行WS-CDL的測試。Tsai等[13]從服務(wù)請求者和UDDI服務(wù)中介兩個角度考慮Web服務(wù)的測試,提出了一種使用多層次場景描述的方法來描述系統(tǒng)行為。張大勇等[14]著眼于Web服務(wù)的的交互以及交互之間對Web服務(wù)行為的影響對Web服務(wù)進行測試。Bravetti等[15]提出了一個有效的方法驗證包含了給定合約的服務(wù)是否可以在編排中正確地扮演自己的角色,這個過程是通過編排的組合與合約的精化實現(xiàn)的。 基于編排的測試工作主要包括:Besson等[16]開發(fā)了一個測試框架來支持測試驅(qū)動的編排開發(fā)。Nguyen等[17]提出了基于編排的消極的相符性測試框架。本研究組采用積極測試,并從編排中對控制流進行抽取生成編排場景進行相符性測試。 諸多關(guān)于測試數(shù)據(jù)生成的工作涉及到XML Schema以及XML Schema指示器的劃分。Li等[18]擴展了適用于XML Schema常規(guī)改變的方法并提出了分析改變后XML Schema的語義正確性的技術(shù)。Bai等[19]將WSDL解析成結(jié)構(gòu)化的DOM樹,通過分析標準XML Schema語法來生成測試數(shù)據(jù)。Xu等[20]考慮了Web服務(wù)交互中的XML Schema信息,提出基于擾動算子對XML Schema進行修改和實例化,進而測試基于XML的通信應(yīng)用。Bulbul等[21]基于給定的數(shù)據(jù)定義實現(xiàn)了測試數(shù)據(jù)自動生成系統(tǒng)。Bertolino等[22]去掉XML Schema中不影響結(jié)構(gòu)的屬性,根據(jù)XML-Schema的指示器進行等價劃分,本文的思路與其類似,但是利用了組合測試用例的生成技術(shù),控制了測試用例的數(shù)量,降低了測試代價,并且在指示器的復合問題上考慮得更為詳細。Cohen等解釋了數(shù)學組合理論以及多個因素下,幾個因素值域覆蓋的理論[23]。王子元等說明了組合測試用例生成技術(shù),并解釋了組合測試的覆蓋標準[24]。 測試數(shù)據(jù)的生成為編排與web服務(wù)組合的相符性測試提供了基礎(chǔ)。XML Schema類型精化是測試數(shù)據(jù)生成過程中必不可少的部分。本文主要研究編排場景消息交互的XML Schema類型精化: (1) 在測試數(shù)據(jù)生成過程中,XML Schema指示器的存在為測試數(shù)據(jù)的生成增加了難度,本文提出了類型精化的概念。即通過指示器的劃分和組合,產(chǎn)生一組類型確定的精化后的類型樹。 (2) 在指示器的組合過程中,為了避免組合數(shù)量爆炸,造成測試代價過高。本文采用的組合的測試思想,在保證覆蓋率的情況下,極大的減少組合數(shù)量。 (3) 由于組合的過程中需要用到組合測試工具Cascade,本文提出了treeToCascade算法和toTrees算法完成類型樹到Cascade工具輸入模型和Cascade輸出模型到精化后的類型樹之間的轉(zhuǎn)換。并在轉(zhuǎn)換過程中,考慮到指示器的各種情況,旨在可以處理任何指示器的復合情況,覆蓋更多的子類型,并通過蘊含式減少無用的組合數(shù)據(jù)。 本文的進一步工作主要圍繞通過精化后的類型樹產(chǎn)生測試數(shù)據(jù)集。通過相應(yīng)的數(shù)據(jù)集生成規(guī)則為精化后的類型樹的葉子結(jié)點產(chǎn)生測試數(shù)據(jù),并在測試數(shù)據(jù)生成過程中提取場景中的衛(wèi)式信息對葉子結(jié)點進行標記,以滿足交互序列執(zhí)行的條件。在得到一組測試數(shù)據(jù)集后,基于編排場景對Web服務(wù)組合進行相符性測試。 [1] Salauün G, Bultan T, Roohi N. Realizability of choreographies using process algebra encodings[J].IEEE Transactions on Services Computing, 2012, 5(3):290-304. [2] Pi4SOA[OL]. http://www.pi4soa.org. [3] Salauün G, Roohi N. On realizability and dynamic reconfiguration of choreographies[C]//Proceedings of WASELF’09, 2009. [4] Bozkurt M, Harman M, Hassoun Y. Testing web services: a survey: TR-10-01[R]. Technical Report of King’s College London, 2010. [5] 周亮. 基于編排規(guī)范的Web服務(wù)相符性測試[D]. 北京:北京工業(yè)大學, 2011. [6] 鄧晨. Web服務(wù)編排的場景研究[D]. 北京:北京工業(yè)大學, 2012. [7] Yang H, Ma K, Deng C, et al. Towards conformance testing of choreography based on scenario[C]//Proceedings of the 2013 International Symposium on Theoretical Aspects of Software Engineering. IEEE Computer Society, 2013:59-62. [8] Ma K, Wang J, Yang H, et al. Choreography scenario-based test data generation[C]//2014 Theoretical Aspects of Software Engineering Conference (TASE). IEEE Computer Society, 2014:70-73. [9] 馬凱. 基于編排場景的Web服務(wù)相符性測試[D]. 北京:北京工業(yè)大學, 2014. [10] XML Schema教程[OL]. http://www.w3school.com.cn/schema/index.asp. [11] Cascade: CAS Covering Array DEsigner[OL]. http://lcs.ios.ac.cn/zhangzq/cTtoolkit.html. [12] Zhou L, Ping J, Xiao H, et al. Automatically testing web services choreography with assertions[C]//Proceedings of the 12th International Conference on Formal Engineering Methods and Software Engineering. Springer, 2010:138-154. [13] Tsai W T, Paul R, Yu L, et al. Scenario-based web services testing with distributed agents[J]. IEICE Transactions on Information and Systems, 2003, 86(10):2130-2144. [14] 張大勇, 黃寧, 余瑩, 等. Web服務(wù)交互測試中SOAP消息的控制和分析[J]. 計算機與數(shù)字工程, 2005, 33(9):10-14. [15] Bravetti M, Zavattaro G. Towards a unifying theory for choreography conformance and contract compliance[C]//Proceedings of the 6th International Conference on Software Composition. Springer, 2007:34-50. [16] Besson F M, Leal P M B, Kon F, et al. Towards automated testing of web service choreographies[C]//Proceedings of the 6th International Workshop on Automation of Software Test, 2011:109-110. [17] Nguyen H N, Poizat P, Za?di F. Passive conformance testing of service choreographies[C]//Proceedings of the 27th Annual ACM Symposium on Applied Computing, 2012:1528-1535. [18] Li J B, Miller J. Testing the semantics of W3C XML schema[C]//29th Annual International Conference on Computer Software and Applications. IEEE, 2005:443-448. [19] Bai X, Dong W, Tsai W T, et al. WSDL-based automatic test case generation for web services testing[C]//2005 IEEE International Workshop on Service-Oriented System Engineering. IEEE, 2005:207-212. [20] Xu W, Offutt J, Luo J. Testing web services by XML perturbation[C]//Proceedings of the 16th IEEE International Symposium on Software Reliability Engineering. Washington, DC, USA: IEEE Computer Society, 2005:257-266. [21] Bulbul H I, Bakir T. XML-based automatic test data generation[J]. Computing & Informatics, 2008, 27:681-698. [22] Bertolino A, Gao J, Marchetti E, et al. Automatic test data generation for XML schema-based partition testing[C]//Second International Workshop on Automation and Software Test. IEEE Computer Society, 2007:4. [23] Cohen D M, Dalal S R, Fredman M L, et al. The AETG system: an approach to testing based on combinatorial design[J]. IEEE Transactions on Software Engineering, 1997, 23(7):437-444. [24] 王子元, 徐寶文, 聶長海. 組合測試用例生成技術(shù)[J]. 計算機科學與探索, 2008, 2(6):571-588. THE REFINEMENT OF XML SCHEMA TYPE OF WEB SERVICES ARRANGEMENT SCENE Wang Jin Ma Kai Yang Hongli (CollegeofComputerScience,BeijingUniversityofTechnology,Beijing100124,China) Web Services arrangement specifies the interaction among multiple Web services. In the actual development, interactive data type and interactive sequence may not be consistent with arrangement standard. It needs to generate the test data to check the conformance of the implementation with reference to the arrangement standard. Since arrangement scene describes the interactions sequence of each participant and the XML Schema type of its interaction information, the test data can be generated by the XML Schema. The indicators in XML Schema type lead to the uncertainty of the data type, so the method of the XML Schema type refinement is proposed to solve the problem based on combined test. By defining the XML Schema type tree and presenting the type tree refinement algorithm based on the combinatorial tool Cascade, the effectiveness is proved by examples. Web Services arrangement XML Schema Indicator Type refinement Combined test 2015-12-24。王瑾,碩士,主研領(lǐng)域:Web服務(wù)編排。馬凱,碩士。楊紅麗,副教授。 TP3 A 10.3969/j.issn.1000-386x.2017.02.0052 XML Schema類型精化算法
3 XML Schema類型精化實例
4 相關(guān)工作
5 結(jié) 語