999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于接口契約的有狀態Web服務用例集生成

2017-04-07 07:01:12
計算機研究與發展 2017年3期
關鍵詞:服務模型

李 吟

(江蘇自動化研究所 江蘇連云港 222061) (leein121999@126.com)

基于接口契約的有狀態Web服務用例集生成

李 吟

(江蘇自動化研究所 江蘇連云港 222061) (leein121999@126.com)

Web服務具有對外只提供接口文檔、技術規范復雜和運行時態瞬時多變等特性,如何有效地自動化生成測試數據仍舊是個難題.目前,針對有狀態Web服務操作序列的測試研究較少,現有的方法對服務的行為信息和操作之間的數據依賴關系考慮不足,且缺乏有效的測試自動化手段,進而導致測試代價較高以及生成的測試數據缺乏針對性.對此,提出一種結合有限狀態機(EFSM)模型和操作接口契約的測試數據生成方法,該方法根據標準WSDL文檔建立操作模型,形式化描述操作之間的交互關系,并對其進行語義標注,基于EFSM模型生成操作序列測試路徑,隨后采用操作接口契約關系獲取測試路徑中的測試數據.通過案例表明,這種有狀態Web服務的用例生成方法能夠高效地生成合理的測試數據,并在錯誤檢測能力以及用例有效性方面優于現有的方法.

有狀態Web服務;操作序列;操作接口契約;擴展有限狀態機;語義標注

Web服務作為實現面向服務架構(service oriented architecture, SOA)系統的主要技術,根據標準的協議來描述、發布、編制、運行,并保證不同平臺應用服務的互操作性.為保障Web服務的質量、提高Web服務的可信度,需要對Web服務進行系統、全面的測試.由于Web服務技術規范的復雜性、應用部署的網絡分布性以及運行狀態的多變性,傳統的軟件測試技術已難以適應Web服務的技術發展.尤其在服務測試方面,Web服務自身提供的信息較少,不具備可視化圖形界面,它的測試主要是基于接口進行設計和實現,與傳統的人工干預產生測試數據的方法有著較大的區別,為了對其進行詳盡的測試,需采用自動化的測試方法.

對于單個Web服務,測試人員可以通過標準XML規范文檔中的數據描述信息執行黑盒測試.目前存在一些通過WSDL(Web Services Description Language)文檔中服務操作參數及類型的描述生成測試數據的研究,可是缺少對單個服務中存在的各類操作序列的深入研究,對WSDL文檔進行分析的工作局限于數據類型,生成的測試用例無法覆蓋服務中的測試路徑,用例設計不完善,而有狀態服務中的各個操作之間也可能包含較強的耦合聯系.一個服務操作修改的全局性狀態可能影響到另一個操作的執行.因此,一些開發過程中未充分考慮的特殊操作序列可能引發服務的質量缺陷,為服務的可靠運行帶來風險.

本文提出了一種基于擴展的有限狀態機(extended finite state machine, EFSM)以及接口契約模型的測試用例自動生成方法,用于生成有狀態Web服務中存在的操作序列路徑的測試用例集.將測試數據生成分為2部分:1)基于WSDL文檔建立操作樹模型,采用語義標注的方法擴展WSDL文檔;2)根據狀態劃分構建操作調用序列的EFSM模型,并依據操作接口契約模型進行操作序列測試數據的選擇和生成,以最優用例覆蓋有狀態Web服務存在的操作序列路徑.

1 研究背景和相關工作

隨著SOA這種技術的廣泛應用,對Web服務的質量和正確性的要求越來越高,如何保障Web服務軟件的質量和可靠性變成了當前軟件工程領域迫切需要解決的難題.當前,Web服務測試主要依靠測試人員手工設計測試數據,這種方法不僅效率不高,并且生成的數據帶有一定的盲目性和傾向性,因此提高測試數據生成和執行的自動化程度成為亟需解決的問題[1-4].

Web服務被分為無狀態和有狀態的Web服務2類[5-7].依據Web服務不同層次考慮的側重點將Web服務測試劃分為3個層次[8]:無狀態Web服務中單個操作的測試、有狀態Web服務中服務操作序列的測試以及基于業務流程編排的Web服務組合測試.有狀態的Web服務含有多個操作,不同的操作序列組合往往導致Web服務進入不同的數據狀態,因此,對于有狀態的服務,測試操作序列比檢驗服務的狀態更重要.

在無狀態Web服務單個操作測試的研究方面,由于用戶能夠獲取Web服務接口信息的WSDL描述文檔,它包含了一些服務名稱及參數類型等信息,從而可以采用基于規約的方法進行黑盒測試[9].Tsai等人[10]提出從4個方面(輸入輸出依賴關系、調用序列、分層功能描述、并發序列說明)對WSDL文檔進行擴展、增強其描述能力來提高Web服務的易測試性.Xu[11]和Hanna等人[12]通過解析WSDL文檔將其轉換成文件對象模型(document object model, DOM)樹,進而建立形式化樹的抽象模型,利用邊界值分析和等價類劃分等方法,隨機為Web服務中的簡單和復雜類型生成測試數據.隨后,馬春燕等人[13]在此基礎上增加了復雜數據類型結構的描述,提出了一種更具可視化和可理解性的抽象模型, 進一步細化數據之間的約束關系,更好地形式化描述測試用例的產生過程[13].同時,Sibilini和Mansour等人在文獻[14]探討了通過變異測試技術實現單個Web服務的測試,并通過服務的響應來分析測試結果.在國內,北京大學姜瑛等人[15]基于合約式變異的方法應用于Web服務測試數據的選擇及生成.

目前,對于有狀態Web服務操作序列測試方面的研究主要通過描述被測系統的預期行為模型來生成測試數據.為了克服WSDL文件沒有提供操作序列生成需要的Web服務行為信息(考慮輸入輸出前置后置條件)的限制,國內外研究者都開展了相應的研究,并取得了一定的進展.白曉穎等人[16]對Web服務的WSDL進行語義上的簡單分析,采用DOM文檔對象模型樹,提出從測試數據生成、獨立測試操作生成、操作流生成以及測試說明的工作流程生成測試用例的方法.在此基礎上,Li等人[17]引入schema特殊樹模型,通過分析操作之間交換的數據消息進行操作序列的生成.而這種基于操作依賴的方法只能處理簡單的數據類型,且缺乏具體的數據生成方法和擴展應用,具有一定的局限性.Bertolino等人[18]則提出服務提供者應上載操作序列的協議狀態機,在此基礎上,Heckel等人[19]也提出服務提供者應同時上載GT規則(graph transformation rules)來描述Web服務行為信息.但這類方法缺乏相應的規范,以及增加了服務開發難度及工作量,很難得到實際的應用.此外,一些研究者基于加入了行為信息的語義Web服務標準,分別提出了將語義WSDL文檔轉換為事件序列圖模型、IOPE圖模型、EFSM有限狀態機模型、SXM模型等產生測試數據[20-25].但是這些模型大多數是針對帶語義信息的Web服務說明,并且由于無法自動化生成數據,因此不能作為常規的測試手段.

Fig. 1 Operation tree model圖1 操作樹模型

從上述研究現狀來看,文獻[11-12]雖然提出了數據類型的抽象模型,但是在刻面約束較多的情況下無法有效地表示復雜數據類型的結構特點.文獻[13-15]在此基礎上為服務的輸入數據定義形式化模型,并依此提取的數據模型生成測試數據,該方法針對Web服務中單個操作生成測試用例的方法研究相對比較完善,如果服務中包含操作之間的序列調用關系,則無法使用此方法生成合理的測試數據.Li等人在文獻[17]中僅從Web服務中操作的輸入輸出關系方面生成操作序列,對于其他操作之間的關聯關系考慮不足,無法達到測試的充分有效.文獻[18-19]提出的擴展方法不僅增加了服務開發的難度,并且生成的測試數據過度依賴服務注冊時上傳的GT規則,降低了軟件的可測試性,容易導致測試用例生成的不充分.針對有狀態的Web服務,Keum等人[7]采用有限狀態機的方法更好地描述了服務中存在的操作行為信息,可是模型構建及序列生成依賴于測試人員的經驗,且自動化程度不高,降低了測試的效率.文獻[20-25]描述了基于語義的測試路徑的構建方法,但是考慮到標準的WSDL不提供相應的語義信息,此類方法很難得到廣泛的應用支持.同時,上述方法均沒有考慮到操作序列中測試數據之間的接口契約關系,以保證測試路徑中的數據傳遞及測試路徑中驅動數據的合理有效,且現有的操作序列的構建和測試數據的生成主要還是依賴于人工完成,過程比較繁瑣耗時,存在明顯的不足[26-27].

本文在此基礎上,將建立基于WSDL文件的操作樹模型,并對其進行語義的標注擴展,針對擴展后的WSDL語義文件進行自動化的有限狀態機建模,從新的角度,采用基于接口契約的模型研究操作之間的數據關系并采用數據分區的方法,最終實現了有狀態Web服務測試路徑中的測試用例集的生成,提高了測試的自動化程度和保障了測試用例的合理有效.

2 模型及定義

2.1 基于WSDL描述的操作樹模型

Web服務采用WSDL文檔對外進行服務描述[28-29],它是一個滿足W3C系統規范的XML文檔.針對有狀態的Web服務,本文基于文獻[17,30]提出的模型將單個Web服務的WSDL描述文檔中操作部分形式化為一個邏輯上的樹狀結構,如圖1所示.圖1中根節點代表對應的WSDL文檔;第2層的節點代表該Web服務包含的操作,分為操作的輸入和操作的輸出;第3層節點代表操作調用的輸入輸出數據;第4層節點代表輸入輸出參數之間的關聯性.

定義1. Web服務操作樹模型.一個WSDL文檔中的操作元素O=(Input(O),Output(O)),其中:

Input(O)={M|M是操作O的一個輸入消息};

Output(O)={M|M是操作O的一個輸出消息};

M={P|P是WSDL中M用來描述O的一部分};

P={G|G是和P相關的XML Schema定義}.

根據定義1,操作樹模型的構建算法如下:

算法1. 操作樹模型O生成算法.

輸入:WSDL文檔;

輸出:WSDL文檔中操作元素形成的操作樹模型O.

CurLevelNode,NextLevelNode;

intLevel=0;*初始化層次數據,第1層為0*

Root=build_node(Schema,Tree,0);*獲取根節點*

for每個節點Root.childNode()

CurLevelNode=NextLevelNode;

Level++;*當前層次遍歷結束,層次加1*

Transform_node(Node,Tree.Root);

Transform_node(Node,Root){

if(Node.classtype=Element‖Node.classtype=TYPE‖Node.classtype= VALUE){

Bulid(Node,Root);}*以此為根節點進行構建*

else{

New_Root=Root;}*創建新的根節點數據*

for每個節點Node.children

Transform_node(Node,New_Root);

end for }

end if

Build_node(Node,Root,Level)

{Child=new treeNode;Child.set_attributes(Node,level);Root.children+=child; Retunchild;}

2.2 語義標注

目前廣泛使用的WSDL文檔沒有提供Web服務的行為信息(操作的前置條件和結果),測試人員僅根據標準WSDL很難完成操作序列的測試.為了增強WSDL語言的語義描述能力,本文基于文獻[31-32]的方法,在現有的Web服務標準(即WSDL和UDDI)基礎上使用WSDL-S為標準WSDL文檔添加語義信息,并采用SWRL(semantic Web rule language)[33]領域本體規則對WSDL文檔進行語義標注.

使用WSDL-S為操作符添加語義標簽包含2個要素:

1) “行為”標簽描述操作符執行的行為.使用行為標簽可以指出本體中對應的類執行之后得出的結果,在WSDL-S文檔中采用effect標簽描述;

2) “約束”標簽用于描述狀態,可以描述該操作的進入條件,以確保操作的執行,在WSDL-S文檔中采用precondition標簽描述.

2.3 擴展有限狀態機(EFSM)模型

有狀態Web服務的測試類似于傳統的面向對象軟件的行為測試,行為狀態包含控制狀態(操作序列)以及數據狀態(數據變量取值),可以依據文獻[7,24]提出的EFSM模型中的狀態轉換來描述操作序列間的交互行為,以輔助測試路徑生成.EFSM的Web服務測試模型定義如下:

定義2. EFSM的Web服務形式化模型.它是一個六元組(Q,Σ,j,q0,F,QC),其中:

1)Q是一個有窮集合,叫作狀態集,每一個狀態表示交互序列中的歷史記錄或條件判斷記錄;

2)Σ是一個有窮集合,叫作字母表,它是O×I的笛卡兒積集合;

3)I是操作輸入變量的集合,O是操作輸出變量的集合;

5)q0∈Q是起始狀態;

6)F?Q是接收狀態集,即用戶與Web服務結束交互的狀態集;

7)QC是狀態的條件集,其中條件是由狀態和命題邏輯公式通過聯接詞組成的表達式.

根據2.2節的方法擴展后的WSDL文檔包含了Web服務語義關系,因此采用語義規則語言SWRL來表示狀態的條件集.

2.4 操作接口契約模型

Fig. 2 Testing process of operation sequence圖2 操作序列測試流程

本文根據侯可佳[34]、Li等人[17]提出的模型進行改進,將單個操作的信息形式化為一個五元組的操作接口契約模型,用于捕獲操作之間的依賴關系,定義如下:

定義3. 操作接口契約模型.Operation(Spec,Inputs,Outputs,Control_Dependence,Data_Depen-dence),其中:

1)Spec:(ID,Name,Description)為操作基本信息的定義(操作編號、操作名稱及操作功能描述);

2)Inputs{datai}為輸入參數集合;

3)Outputs{datai}為輸出參數集合;

4)Control_Dependence{ID,Dependencei}為操作之間的控制依賴關系,包括順序約束以及時間約束,定義執行順序的各種約束條件;

5)Data_Dependence{ID,Dependencei}定義操作之間的數據依賴關系.

定義4. 數據依賴.?d1,d2,O1,O2,且d1∈O1.Inputs∪O2.Outputs,d2∈O2.Inputs∪O2.Outputs.如果存在函數F,使得d2=F(d1),則操作O1和O2存在數據依賴關系.

1) 如果d1∈O1.Inputs并且d2∈O2.Inputs,則操作O1和O2存在輸入依賴關系,記為IND(O1,O2);

2) 如果d1∈O1.Outputs并且d2∈O2.Outputs,則操作O1和O2存在輸出依賴關系,記為OUTD(O1,O2);

3) 如果d1∈O1.Outputs并且d2∈O2.Outputs,則操作O1和O2存在輸入輸出依賴關系,記為INOUTD(O1,O2).

3 操作序列測試路徑生成

3.1 操作序列測試流程

有狀態Web服務含有多個操作,操作之間通過消息交互數據,因此僅僅對單個操作進行測試是不充分的,現有的針對操作序列測試的模型構建依賴于人員的經驗,導致測試數據存在偏差,并且測試效率高.為此,本文提出一種結合EFSM和接口契約模型的測試路徑的生成方法,如圖2所示.

測試路徑的生成流程如下:

Step1. 首先通過Web服務提供的標準WSDL獲取操作輸入輸出參數等描述信息,建立操作樹模型;

Step2. 根據2.2節的方法為Web服務中的操作添加語義標注(前置條件和結果);

Step3. 根據Step1建立的操作樹模型,獲取操作之間的依賴關系,構建操作接口契約模型,見第3.2節;

Step4. 基于擴展的語義WSDL文件為Web服務構建EFSM模型,見3.3節;

Step5. 采用接口契約模型中的控制依賴關系建立狀態的條件集QC;

Step6. 遍歷Step5生成的EFSM模型,生成操作路徑.

3.2 構建操作依賴關系

根據文獻[17]定義的3個規則進行操作的依賴匹配,生成操作依賴關系的算法如下:

算法2. 操作依賴生成算法.

輸入:WSDL文檔;

輸出:操作之間的控制、數據依賴關系集合Control_Dependence,Data_Dependence;

初始化:UncovOperation=?;*未被遍歷的操作集合*

① 根據圖1,獲取WSDL文檔中操作的集合Operation,取一個未標記的操作oi∈Operation作為當前操作,UncovOperation=Opeartion-oi;

② 比較操作o1的輸出消息和未被標記的一個操作oj∈Operation的輸入消息,判斷是否存在輸入輸出數據依賴關系INOUTD(oi,oj),若存在,加入集合Control_Dependence,Data_Dependence;

③ While(UncovOperation=?),重復執行步驟②,直到所有的未被標記的操作都被比較過;

④ 賦值UncovOperation=Opeartion-oi,比較操作oi的輸出消息和未被標記的一個操作oj∈Operation的輸出消息,判斷是否存在輸入輸出數據依賴關系INOUTD(oj,oi),若存在,加入集合Control_Dependence,Data_Dependence;

⑤ While(UncovOperation=?),重復執行步驟④,直到所有的未被標記的操作都被比較過;

⑥ 標記當前操作mark(oi);

⑦ 重復步驟①~⑥,直到所有的操作都被標記.

3.3 EFSM的系統化構建算法

基于2.3節提出的有限狀態機模型以及前序流程獲取的語義WSDL和接口契約模型,本節根據文獻[17,24]提出EFSM模型的系統化構建方法,具體如下:

1) 基于WSDL文檔構建Web服務的行為信息表

定義5. 行為信息表.構建表T?O×A×{‘I’,‘S’,‘’},O和A分別代表有狀態Web服務中操作以及內部變量的集合,?o∈O,?a∈A,(o,a,‘’)∈T或(o,a,‘I’)∈T或(o,a,‘S’)∈T,對于?o∈O,其中,‘ ’代表該操作無法獲取或者無法更改的變量,‘S’表示被該操作初始化的數據變量,‘I’代表操作修改的數據變量,I(o)={a∈A|(o,a,‘I’)∈T}表示被操作o初始化的數據變量,S(o)={a∈A|(o,a,‘S’)∈T}表示被操作o更改的數據變量.

2) 基于行為信息表構建Web服務的操作方式及其取值域

定義6. 操作模式.操作模式是一個由一系列數據變量集合{ak1,ak2,…,aks}組成的抽象變量ek.行為信息表含有m行和n列,操作分別為o1,o2,…,om,數據變量為a1,a2,…,an.一個操作方式ek=[ak1,ak2,…,aks]由一個變量s的數據集{ak1,ak2,…,aks}組成,其中1≤s≤n,1≤k1≤k2…≤ks≤n,對于操作?o∈O,它必須滿足2個條件:

1) ?i(1≤i≤s),(o,aki,‘’)?T;

2) ?aj?{ak1,ak2,…,aks},當1≤j≤n時,(o,aj,‘’)∈T.

對于操作模式ek,滿足條件1)2)的操作集合行為ek的操作等價類OE={oe1,oe2,…,oes}

同時,操作行為的值域表示為一個操作行為的取值,它通過綜合每一個操作行為在操作等價類中操作的變化的數據來獲取,每一個行為ek的值域為Vk,通過語義信息SWRL來描述操作改變數據的結果.

3) 獲取模式值的屬性

當操作模式ek=[ak1,ak2,…,aks]和ek的取值為Vk,模式值屬性的定義如下.

定義7. 模式值.

v:Ou是指當前模式值不能滿足它相應操作的前置條件;

v:On是指能夠滿足前置條件的操作,O=v:Ou∪v:On;

v:Oc表示能夠對當前的值v進行改變為其他在ek的值域的操作集合;

模式值轉換函數η:如果操作oi改變模式ek的值v到w,若oi∈v:Oc,模式值轉換函數為η(oi,v,precondition)=w,其中w∈Vk并且precondition是操作oi的前置條件.

4) 獲取EFSM的狀態值

定義8. 沖突模式值對.

取任意的操作模式ek和ei,它們的值域分別為Vk和Vi.對于?v∈Vk和?v′∈Vi,如果滿足v:On∩v′:Ou≠?或v:Ou∩v′:On≠?,(v,v′),則稱為沖突模式對.

算法3. 獲取模型EFSM中的Web服務狀態.

輸入:Web服務的操作模式E={e1,e2,…,en},相應的值域集V={V1,V2,…,Vn},操作集O={o1,o2,…,om};

輸出:EFSM的狀態集Q和初始狀態q0.

① 獲取所有模式值可根據屬性的條件構建沖突模式對的情況,得到所有沖突模式值對(v,v′)的集合C;

③ 對于?q∈Q,通過模式值形成的集合qv構建q,若v∈qv,v′∈qv,并且(v,v′)∈C,則Q=Q-{q};

④ 增加初始狀態q0;

⑤ 返回狀態集Q和初始狀態q0.

5) 獲取EFSM模型輸入輸出集合

設輸入輸出合集為Σ,將所有操作的輸入看作是EFSM模型的輸入集合I,所有操作的輸出看作是EFSM模型的輸出集合O,每一個輸入輸出表示為一類數據類型.

算法4. 狀態轉移函數獲取算法.

輸入:操作集合O,模式集合E={e1,e2,…,en},模式值e1,e2,…,en,狀態集合Q;

輸出:狀態轉移函數φ.

①F=?.*初始化函數集*

② 對于初始狀態q0,若狀態q=(v1,v2,…,v|E|)∈Q,對于每一個模式值vi,滿足條件vi={I,I,…,I}或vi={X,X,…,X},當I或X在vi的取值之間,那么φ(q0,o)=q存在,o是起始執行操作,它包含了數據變量的初始化.

③ 對于每一個狀態q=(v1,v2,…,v|E|)∈Q-{q0},執行下面步驟獲取它的初始轉換:

Ⅰ 無轉換

Ⅱ 轉換到其他狀態

?o∈q:Oc,則φ(q0,o)=w,設w=(w1,w2,…,w|E|):

如果o∈vi:Oc(1≤i≤n),則wi=η(o,vi,precondition)或wi=η(o,vi,ε);

如果o?vi:Oc(1≤i≤n),則wi=vi.

Ⅲ 環狀態轉換

令q:Ol=O-q:Oc-q:Ou,?o∈q:Ol,φ(q0,o)=q.

④ 返回狀態轉換函數φ.

7) 遍歷構建模型生成操作序列的測試路徑

生成的EFSM模型如圖3所示.以上流程除了步驟1)2),其余步驟均可自動化執行,相比于手工構建Web服務測試模型,該方法節省了測試成本,并且避免了人為操作帶來的錯誤.

Fig. 3 Diagram of state transition for EFSM model圖3 EFSM狀態轉移圖

4 基于操作接口契約模型的測試數據生成

4.1 基于接口契約及數據分區的測試數據生成

根據3.3節的算法能夠自動化獲取有狀態Web服務的操作序列測試路徑,可以根據常規的方法逐個為路徑中的操作生成測試數據驗證測試序列的正確性.可是這樣的生成方法含有2點缺陷:

1) 測試路徑中測試數據生成方法沒有考慮各操作之間的輸入輸出依賴關系,例如在某個測試路徑中,上一個操作oi的輸出可能是下一個操作oj的輸入(其中i和j表示操作在測試路徑中出現的索引,j>i),那么操作oj的測試數據就可以從oi的輸出獲取,若采用常規方法提取,則會增加了生成數據的工作量.

2) 測試路徑中某操作獲取測試數據時,要考慮到保證該測試路徑中后續操作都存在合適的輸入數據,以保證該測試路徑的執行.

針對上述缺陷,本文首先采用數據分區的方法,對測試數據進行設計,根據輸入數據和全局變量等參數將數據劃分為多個子區域[35-36].之后對操作的輸入輸出數據進行數據分區合法性校驗,以保證測試路徑的正常執行,提高測試數據設計的合理性.其次,我們根據操作接口契約模型中的數據依賴關系,對測試序列輸入輸出數據進行匹配,減少不必要的測試數據生成.

4.2 用例集生成及優化算法

算法5. 用例集生成算法.

輸入:EFSM生成的測試路徑集合O={P1(o1,o2,o5),P2(…),…,Pn(…)}及接口契約模型Operation;

輸出:初始測試數據集Testdata0.

for集合O中的每一個集合Pi

O={P1(o1,o2,o5),P2(…),…,Pn(…)}

for集合Pn中的每一個參數oi*遍歷測試路徑中每一個操作*

I=?;*置空輸入參數集合I*

if(oi.pre=Null){

Generate(oi.input);*采用等價類、邊界值劃分方法為路徑中初始操作oi生成數據*

Execute(oi.input,oi.output);}*執行操作,并存儲操作oi輸出數據*

else if(oi.input≠Null)*若Oi的輸入不為空*{

Dependency(oi.input,oi-1.output);*將操作oi的全部輸入參數數據放入集合I,并在操作oi中標記,根據操作的接口依賴關系將匹配上的前序操作oi-1的輸出數據匹配為oi的輸入數據*

Generate(I-oj-1.output);}*采用等價類、邊界值方法為路徑中操作oi生成未匹配的輸入數據數據*

Execute(oi.input,oi.output);}*執行存儲操作oi輸出數據*

else{Execute(oi.input,oi.output);}*執行存儲操作oi輸出數據*

endif

end for

end for

算法6. 用例集優化算法.

輸入:測試數據集Testdata0;

輸出:優化用例集Testdata.

While(oi.next∈Pn){*判斷是否遍歷到結尾*

GenerateDataFor(Pn);*調用算法5為測試路徑Pn生成初始測試數據*

for集合Pn中的每一個參數oi:

endif

endfor}

輸出優化后的能夠執行路徑的測試數據,能夠保證測試路徑的執行.

5 實例分析

本文選擇某型號面向服務的艦船指控系統軟件作為待測對象,選取任務執行模塊的軟件子功能作為測試對象,服務包含操作(StartRecordTask,QuitRecordTask,SuspendReplayTask等).這類操作對于同樣的輸入參數得到不同的執行結果,服務是有狀態的,因而需要進行操作序列的測試.在實驗過程中,我們依據3.1節描述的流程,首先,基于服務描述文件WSDL構建操作樹模型并進行語義標注,之后通過行為信息構建EFSM模型,進而遍歷得到操作序列測試路徑,最終根據接口契約模型中的依賴關系生成初始測試數據,并采用數據分區的方法優化測試用例數據.

實驗中使用SOAP消息對測試用例進行封裝,并通過HTTP進行數據傳輸,將SOAP請求發送到該服務所在的服務器,處理流程包括測試用例的生成選擇、測試執行和測試結果分析.

5.1 覆蓋率分析

本節進行了對比實驗,實驗中隨機生成600個測試用例,用工具SoapUI運行后發現,部分用例由于隨機生成的數據元素存在盲目性,導致實驗中生成的操作序列路徑無效,無法返回結果.之后,在生成的測試數據中分別選取50,100,150,200,250,300,350,400,450,500個數據組成10個不同大小的測試集合,分別使用軟件測試工具McCabeIQ(V8.0)對測試模塊進行插樁,將插樁生成的源程序一條編譯連接,執行功能用例執行,監視和獲取服務的代碼覆蓋情況,通過與隨機測試用例的覆蓋率情況相比較,本文提出的方法均獲得了更好的代碼和語句覆蓋率,具體如圖4、圖5所示:

Fig. 4 Code coverage of each test suite圖4 代碼覆蓋率對比情況

Fig. 5 Branch coverage of each test suite圖5 分支覆蓋率對比情況

根據服務需求設計文檔構建業務流程剖面,獲取指控執行模塊服務中存在的可執行操作序列的路徑為18條,而每條操作序列則需要根據EFSM的狀態遷移建立多個用例測試路徑.本文對不同數量的測試用例集進行服務操作序列的覆蓋充分性分析和計算,并與隨機生成的測試用例進行比較,覆蓋情況如表1所示:

Table 1 Operation Sequence Coverage Adequacy

5.2 用例錯誤檢測能力分析

為了證明本文方法在錯誤檢測能力以及用例規模上的優勢,通過現有的方法對實驗中的待測服務中存在的操作序列進行測試數據的生成,并根據執行結果進行比較,結果如圖6所示.此外,表2給出了各方法執行過程中多個操作的相關結果.

Fig. 6 Number of test cases and number of faults圖6 測試用例數量及發現錯誤數

如我們預期,本文的方法用較少的用例發現了更多的錯誤,表明了生成的測試用例擁有較強的針對性.文獻[13,36]的方法致力于生成單個操作的測試用例,對于有狀態的Web服務很少有錯誤是能夠通過單個操作的邊界值測試方法檢測出的,因而僅僅依賴于單個操作生成測試數據的方法是不充分的.雖然文獻[17,19]也提出了運用數據流的方法加強測試序列的測試,但由于該方法只考慮了少量偶然的操作之間的關系,導致生成用例的數量不夠,降低了用例的錯誤檢測能力.文獻[7]提出使用模型的方法,可是由于模型的生成依賴于測試人員的經驗,生成的數據具有嚴重的不平衡性,降低了測試效率,且沒有考慮到數據之間的依賴關系,簡單地的為每一個操作生成測試數據,會導致用例規模過于龐大,無法滿足測試需求.因此,本文提出的方法由于考慮了復雜操作序列的交互過程,在測試用例集規模和錯誤檢測能力上均占有一定的優勢.

Table 2 Test Cases and Results

此外,據表2所述,實驗中有些用例無法得到執行結果,這反映了在生成測試路徑測試數據時,沒有考慮到測試路徑的可行性,有些數據可能在路徑之中就由于不合法,導致路徑無法執行,無法返回預期結果.而這些沒有返回正確結果的用例,輸入參數往往符合數據類型的需求,但提交給服務時,輸出卻是無法返回結果,這將難以判斷是由于用例設計有誤所導致的后果還是Web服務本身就存在問題.本文提出的方法根據數據分區的方法增強了測試數據的有效性,以保證測試路徑的執行,達到設計的用例可行有效,較少無返回結果.

6 測試用例自動生成原型系統

結合研究團隊之前的Web服務測試用例集生成的相關工作,本文研制了Web服務測試用例自動生成原型系統SOATest.本工具支持Web服務的功能測試和性能測試.具體功能包括測試用例的生成和管理、測試的執行,以及測試結果的收集和報表生成.工具支持以WSDL為接口描述文件的標準服務實體的單個操作以及操作序列的測試用例生成,測試系統的體系結構如圖7所示:

Fig. 7 Test generation prototype system architecture圖7 測試用例自動生成原型系統體系結構

運用工具SOATest的服務單體測試模塊可以為Web服務單個操作生成用例,運用工具服務序列測試模塊可以為有狀態Web服務的操作序列自動生成測試用例.本系統首先識別服務中的所有操作,然后通過路徑算法生成服務操作的全排列并可對生成的測試用例進行管理.基于接口契約的方式根據狀態遷移過濾無效序列,構建操作序列流程圖,并依此生成有效測試數據,執行、獲取測試結果,系統執行界面如圖8~11所示,分別從Web服務的操作序列的生成、測試用例的生成、測試用例的管理及執行及用例執行結果圖等多個方面對原型系統進行展示.

Fig. 8 Interface of test cases management圖8 測試用例管理界面

Fig. 9 Interface of operation process圖9 操作序列流程界面

表3給出了運用工具為某型號面向服務的艦船指控系統軟件中的5個案例有狀態服務生成測試路徑的相關信息,包含了案例對應的狀態數,生成的路徑數、生成的路徑的長度及路徑計算耗時.實驗表明:本原型系統能夠正確有效地生成有狀態服務的操作序列測試用例集,且計算耗時與各EFSM的狀態數相關.

Fig. 10 Interface of test execution圖10 測試用例執行界面

Fig. 11 Interface of results of test cases圖11 測試用例執行結果界面

ServiceCaseStatesTotalPathsTheLongestLengthofPathExecuteTime∕msShowInformationService5224420BusinessProcessService742590TaskManageService1611691485UserManageService8606210InformationProcessingService63011135

7 結束語

Web服務的動態查找、調用等機制也給測試帶來了很多難題,如何確保Web服務軟件的質量和可靠性成為了當前軟件測試領域的研究熱點之一.目前雖然存在一些Web服務測試技術方面的研究,但是由于標準的WSDL文件缺少一些語義、動態以及行為信息的描述,使得測試通常僅僅采用Web服務的句法信息,這也導致現有的研究更多地關注于測試單個操作而非操作序列的測試.此外,現有的Web服務測試方法更依賴于工程師的經驗,降低了測試的均衡性以及自動化程度.

在現有工作基礎上,本文提出了一種有狀態Web服務的測試數據生成方法:1)基于標準的WSDL進行操作樹模型構建以及語義標注;2)根據增強的行為信息,通過有限狀態機模型(EFSM)描述服務的動態行為;3)根據接口契約模型生成單個Web服務操作序列的測試數據,并通過實例驗證了該方法在測試用例集和錯誤檢測能力方面的優越性,解決了之前研究無法有效地自動生成操作序列數據等問題,增強了測試路徑生成的自動化程度和測試數據的有效性,從而提高了Web服務測試數據自動生成的質量和效率.

在后期的工作中,我們將針對模型通用性以及算法效率進行詳盡的研究,并完善相應的原型工具更好地推廣提出的技術框架,同時計劃將該方法擴展應用到服務組合測試中,進一步推進Web服務的自動化測試.

[1]Mei Hong, Zhang Lu. A framework for testing Web services and its supporting tool[C]Proc of IEEE SOSE’05. Los Alamitos, CA: IEEE Computer Society, 2005: 199-206

[2]Bartolini C, Bertolino A, Marchetti E, et al. WS-TAXI: A WSDL-based testing tool for Web services[C]Proc of IEEE ICST’09. Los Alamitos, CA: IEEE Computer Society, 2009: 326-335

[3]Xu Lei, Li Yanhui, Chen Lin, et al. A testing method for Web services focusing on user requirements [J]. Chinese Journal of Computers, 2014, 37(3): 512-521 (in Chinese)(許蕾, 李言輝, 陳林, 等. 一種面向用戶需求的Web服務測試方法[J]. 計算機學報, 2014, 37(3): 512-521)

[4]Elia I A, Laranjeiro N, Vieira M. A practical approach towards automatic testing of Web services interoperability [J]. International Journal of Web Services Research, 2015, 12(3): 103-129

[5]Brenner D, Atkinson C, Hummel O, et al. Strategies for the run-time testing of third party Web services[C]Proc of IEEE SOCA’07. Piscataway, NJ: IEEE, 2007: 114-121

[6]Sinha A, Paradkar A. Model based functional conformance testing of Web services operating on persistent data[C]Proc of 2006 Workshop on Testing, Analysis, and Verification of Web Services and Application. New York: ACM, 2006: 17-22

[7]Keum C S, Kang S, Ko I Y, et al. Generating test cases for Web services using extended finite state machine[G]LNCS 3964: Proc of the 18th IFIP TC 6WG 6.1 Int Conf (TestCom 2006). Berlin: Springer, 2006: 103-117

[8]Ma Chunyan, Zhou Yian, Lu Wei. Automatic test for Web services [J]. Computer Science, 2012, 39(2): 162-169 (in Chinese)(馬春燕, 朱怡安, 陸偉. Web服務自動化測試技術[J]. 計算機科學, 2012, 39(2): 162-169)

[9]Zhong Li, Sun Jie, Jiang Wei, et al. BPEL4WS unit testing: Framework and implementation[C]Proc of the 2005 Int Conf on Web Services(ICWS’05). Los Alamitos, CA: IEEE Computer Society, 2005: 103-110

[10]Tsai W T, Paul R, Wang Y, et al. Extending WSDL to facilitate Web services testing[C]Proc of the 7th IEEE Int Symp on High Assurance Systems Engineering. Los Alamitos, CA: IEEE Computer Society, 2002: 171-172

[11]Xu Wuzhi, Offutt J, Luo Juan. Testing Web services by XML perturbation[C]Proc of the 16th IEEE Int Symp on Software Reliability Engineering. Los Alamitos, CA: IEEE Computer Society, 2005: 256-266

[12]Hanna S, Munro M. An approach for specification-based test case generation for Web services[C]Proc of 2007 IEEE ACS Int Conf on Computer Systems and Application. Los Alamitos, CA: IEEE Computer Society, 2007: 16-23

[13]Ma Chunyan, Du Chenglie, Zhang Tao, et al. WSDL-Based automated test case generation for Web service[C]Proc of the Computer Science and Software Engineering. Los Alamitos, CA: IEEE Computer Society, 2008: 731-737

[14]Siblini R, Mansour N. Testing Web services[C]Proc of IEEE ISSRE’05. Los Alamitos, CA: IEEE Computer Society, 2005: 763-770

[15]Jiang Ying, Xin Guomao, Shan Jinhui, et al. A method of automated test data generation for Web service [J]. Chinese Journal of Computers, 2005, 28(4): 568-577 (in Chinese)(姜瑛, 辛國茂, 單錦輝, 等. 一種Web服務的測試數據自動生成方法[J]. 計算機學報, 2005, 28(4): 568-577)

[16]Bai Xiaoying, Dong Wenli, Tsai W-T, et al. WSDL-Based automatic test case generation for Web services testing[C]Proc of the 2005 IEEE Int Workshop on Service-Oriented System Engineering. Los Alamitos, CA: IEEE Computer Society, 2005: 207-212

[17]Li Li, Wu Chou. Automatic message flow analyses for Web services based on WSDL[C]Proc of 2007 IEEE Int Conf on Web Services. Los Alamitos, CA: IEEE Computer Society, 2007: 25-28

[18]Bertolino A, Polini A. The audition framework for testing Web services interoperability[C]Proc of the 31st EUROMICRO Conf on Software Engineering and Advanced Application. Los Alamitos, CA: IEEE Computer Society, 2005: 134-142

[19]Heckel R, Mariani L. Automatic conformance testing of Web services [G]LNCS 3442: Proc of the 8th Int Conf FASE 2005. Berlin: Springer, 2005: 34-48

[20]Belli F, Linschulte M. Event-driven modeling and testing of Web services[C]Proc of IEEE COMPSAC’08. Los Alamitos, CA: IEEE Computer Society, 2008: 1163-1173

[21]Paradkar A, Sinha A, Williams C, et a1.Automated functional conformance test generation for semantic Web services[C]Proc of IEEE ICWS’07. Los Alamitos, CA: IEEE Computer Society, 2007: 110-117

[22]Sinha A, Paradkar A. model-based functional conformance testing of Web services operating on persistent data[C]Proc of the 2006 Workshop on Testing Analysis and Verification of Web Services and Applications. Los Alamitos, CA: IEEE Computer Society, 2006: 17-22

[23]Paradkar A M. Automated functional conformance test generation for semantic Web services[C]Proc of 2007 IEEE Int Conf on Web Services. Los Alamitos, CA: IEEE Computer Society, 2007: 110-117

[24]Ma Chunyan, Wu Junsheng, Zhang Tao. Web services sequence testing based on stream X-machine[C]Proc of the 10th Int Conf on Quality Software. Los Alamitos, CA: IEEE Computer Society, 2010: 232-239

[25]Bai Xiaoying, Lu Hao, Zhang Yao, et al. Interface-based automated testing for open software architecture[C]Proc of IEEE COMPSACW’11. Los Alamitos, CA: IEEE Computer Society, 2011: 149-154

[26]Petrova A, Dessislava I, Denitsa M, et al. TASSA: Testing framework for Web service orchestrations[C]Proc of the 10th Int Workshop on Automation of Software Test in Conjunction with the 37th Int Conf on Software Engineering. Los Alamitos, CA: IEEE Computer Society, 2015: 8-12

[27]Vanderveen P, Janzen M, Tappenden A F. A Web service test generator[C]Proc of 2014 IEEE Int Conf on Software Maintenance and Evolution. Los Alamitos, CA: IEEE Computer Society, 2014: 516-520

[28]W3C. Web service description language (WSDL) version 2.0 part1: Core language [EBOL]. (2007-06-26) [2016-05-23]. http:www.w3.orgTRwsdl20

[29]Belhajjame K, Embury S M, Paton N W. Verification of semantic Web service annotations using ontology-based partitioning [J]. IEEE Trans on Services Computing, 2014, 7(3): 515-528

[30]He Lingjuan, Liu Lianchen, Wu Cheng. A modified operation similarity measure method based on WSDL description [J]. Chinese Journal of Computers, 2008, 31(8): 1331-1339 (in Chinese)(何玲娟, 劉連臣, 吳澄. 一種改進的基于WSDL描述的操作相似性度量方法[J]. 計算機學報, 2008, 31(8): 1331-1339)

[31]Kunal M. WSDL-S: Adding Semantics to WSDL- WhitePaper [EBOL]. (2007-06-26)[2016-05-23]. http:www.w3.orgTR2003, 2003-04-01John

[32]Miller J, Verma K, Rajasekaran P, et al. WSDL-S: Adding semantics to WSDL-White paper [EBOL]. (2004-01) [2016-05-23]. http:lsdis.cs.uga.edulibrarydownloadwsdl-s.pdf

[33]Horrocks I. SWRL: A semantic Web rule language combining owland ruleML[EBOL]. (2004-05) [2016-05-23]. http:www.w3.orgsubmission2004SUBM-SWRL-20040521

[34]Hou Kejia, Bai Xiaoying, Lu Hao, et al. Web service test data generation using interface semantic contract[J]. Journal of Software, 2013, 24(9): 2020-2041 (in Chinese)(候可佳, 白曉穎, 陸皓, 等. 基于接口語義契約的Web服務測試數據生成[J]. 軟件學報, 2013, 24(9): 2020-2041)

[35]Ostrand T J, Baiter M J. The category-partition method for specifying and generating functional tests[J]. Communications of the ACM, 1988, 31(6): 676-686

[36]Chen T Y, Poon P, Tse T H. A choice relation framework for supporting category-partition test ease generation [J]. IEEE Trans on Software Engineering, 2003, 29(7): 577-593

[37]Xu Wuzhi, Offutt J, Luo Juan. Testing Web services by XML perturbation [C]Proc of the 16th IEEE Int Symp on Software Reliability Engineering. Los Alamitos, CA: IEEE Computer Society, 2005: 257-266

Li Yin, born in 1988. Master. His main research interests include data mining and software testing.

Test Suite Generating for Stateful Web Services Using Interface Contract

Li Yin

(JiangsuAutomationResearchInstitute,Lianyungang,Jiangsu222061)

As Web services have the characteristics of only providing interface documents, complex technical specifications and run-time transient change, it is still a difficult problem to automatically generate test data effectively. At present, there is less current research on testing operation sequence for stateful Web services. Moreover, the existing approaches take insufficient account of service behavior information and the dependency between operations, and are lack of effective means of test automation, which may lead to high cost and short of specific for the test data. In this paper, a test case generation approach is proposed based on EFSM model operation interface contract. This approach constructs the operation model according to the standard WSDL document to describe the interaction relationship between operations and then add semantic annotation for them. Based on EFSM model, the paper proposes an automated operation sequences generation method and finally obtain the test suite using operation interface contract. The experiment shows that the proposed approach can generate reasonable test suite for stateful Web service efficiently, which can enhance the fault detection ability and improve the efficiency of test cases compared with the existed approaches.

stateful Web services; operation sequence; operation interface contract; extended finite state machine (EFSM); semantic annotation

2015-12-09;

2016-06-14

TP311.5

猜你喜歡
服務模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
服務在身邊 健康每一天
今日農業(2019年14期)2019-09-18 01:21:54
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年15期)2019-01-03 12:11:33
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
招行30年:從“滿意服務”到“感動服務”
商周刊(2017年9期)2017-08-22 02:57:56
3D打印中的模型分割與打包
主站蜘蛛池模板: 91综合色区亚洲熟妇p| 国产成年女人特黄特色大片免费| 国产永久在线视频| 久久精品国产电影| 欧美亚洲日韩中文| 久草网视频在线| 亚洲第一成年网| 欧美曰批视频免费播放免费| 成人亚洲天堂| 色综合成人| 国产美女丝袜高潮| 无码内射在线| 色悠久久久久久久综合网伊人| 999精品在线视频| 国产草草影院18成年视频| 九色视频在线免费观看| 精品一区二区三区自慰喷水| 国产网站在线看| 91娇喘视频| 日韩精品毛片| 欧美激情福利| 亚洲三级影院| 亚洲 成人国产| 久久久久中文字幕精品视频| 国产一区亚洲一区| 国产精品3p视频| 国产欧美日韩免费| 人人爱天天做夜夜爽| 久久精品人人做人人综合试看| 波多野结衣一区二区三区AV| 久久人体视频| 国产精品视频导航| 青草视频网站在线观看| 亚洲免费成人网| 看看一级毛片| 亚洲天堂网视频| 尤物午夜福利视频| 成人久久18免费网站| 亚洲欧洲日韩久久狠狠爱 | 亚洲浓毛av| 无码aaa视频| 在线毛片免费| 亚洲精品日产精品乱码不卡| 国产永久在线视频| 国产在线观看91精品亚瑟| 亚洲精品不卡午夜精品| 久久亚洲精少妇毛片午夜无码| 91区国产福利在线观看午夜 | 欧美啪啪视频免码| 女人18毛片一级毛片在线 | 国产欧美日韩综合在线第一| 日本国产精品| 成人日韩精品| 亚洲中文无码h在线观看 | 亚洲最大福利视频网| 91福利片| 亚洲天堂2014| 伊人丁香五月天久久综合| 看国产毛片| 亚洲永久精品ww47国产| 国产三区二区| 国产一级二级三级毛片| 亚洲永久色| 免费高清a毛片| 国产精品部在线观看| 综合久久五月天| 日韩麻豆小视频| 国产日产欧美精品| 日韩东京热无码人妻| 国产精品浪潮Av| 伊人久久精品亚洲午夜| 亚洲国产精品不卡在线| 久久久久人妻一区精品| a在线亚洲男人的天堂试看| 亚洲色婷婷一区二区| 9cao视频精品| 57pao国产成视频免费播放| 国产精品理论片| 国产又粗又猛又爽视频| 欧美亚洲一区二区三区导航| 五月天在线网站| 99久久亚洲综合精品TS|