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

面向需求覆蓋的Web服務自動化測試框架*

2017-11-16 06:23:37方建勇
計算機與生活 2017年11期
關鍵詞:服務模型

李 吟,方建勇,江 夢

1.江蘇自動化研究所,江蘇 連云港 222061

2.連云港職業技術學院,江蘇 連云港 222061

面向需求覆蓋的Web服務自動化測試框架*

李 吟1+,方建勇1,江 夢2

1.江蘇自動化研究所,江蘇 連云港 222061

2.連云港職業技術學院,江蘇 連云港 222061

Web服務作為W3C認證的面向服務架構(service-oriented architecture,SOA)的實現方式,對外提供可用于黑盒測試的接口文檔,如何有效地自動化生成測試用例成為Web服務自動化測試的首要問題。現有的測試工具對WSDL(Web services description language)的文檔結構和數據之間的依賴關系考慮不足,且缺乏有效的測試數據生成方法,進而導致測試效率不高以及生成的測試用例無法覆蓋全部的測試需求。為此,提出了Web服務自動化測試的技術框架,并實現了支持此框架的原型工具。該框架基于WSDL文檔解析獲取覆蓋結構特征的SOAP(simple object access protocol)骨架集合,并采用可變力度組合測試模型生成滿足元素組合的SOAP封裝消息,之后通過有限狀態機/接口契約模型獲取操作序列測試路徑,保證了操作序列測試數據的有效性。案例結果表明了所提框架生成的測試數據能夠更好地滿足測試需求,達到理想的測試覆蓋率,并能夠檢測出更多的錯誤,且在用例規模上優于現有的方法。

Web服務;面向服務架構;自動化測試技術框架;可變力度組合測試;有限狀態機;接口契約模型

1 引言

Web服務技術的興起為面向服務架構(serviceoriented architecture,SOA)的應用提供了新的計算模型,實現了分布式應用的互用性和適應性,能夠滿足信息的高度共享和靈活重組[1-3],是網絡中心站以及“十二五”、“十三五”信息化建設的核心支撐,是取得“制信息權”的重要保障。當前,空軍、海軍新一代在建/在研的指揮中心信息系統正全面轉向面向服務技術架構。隨著這種技術的廣泛應用,如何嚴格地保證Web服務的可靠性和安全性成為一項迫切且艱巨的任務[4-5]。與傳統軟件測試相比,Web服務的數量龐大且存在大量的組合需求,很難逐一進行手動測試,且容易產生人為錯誤[6]。同時,Web服務技術規范復雜,服務的源代碼不可得,不具備可視化圖形界面等特殊性增加了人工測試的難度,亟需提供測試的自動化[7-8]。

在單個Web服務中聚合了一組函數,其調用語法定義在相關聯的依據XML(extensible markup language)標準規范描述的WSDL(Web services description language)文檔中[9-10],描述了服務操作信息和相應的輸入/輸出參數,用戶能夠根據需求進行服務調用,同時可以作為引用文檔,展開基于服務接口的黑盒測試[11-12]。目前,存在一些基于WSDL描述文檔的Web服務測試工具,例如SoapUI[13]、SOATest[14]、Push-ToTest[15]和TAXI[16]等,可是測試用例的設計、產生和撰寫仍需要測試人員的大量人工參與,并且缺少對服務中存在的數據組合、約束關系及操作序列的深入研究,產生的用例冗余度較高,錯誤檢測能力較差,導致測試效率及測試質量并沒有得到有效提高。

本文以Web服務軟件測試用例的自動生成技術為背景,基于WSDL,對用戶的不同需求場景進行覆蓋,結合傳統軟件測試技術和方法進行分析研究和擴展,提出了基于可變力度組合測試模型以及接口契約模型的測試用例生成器系統化框架,運用需求驅動的輸入生成策略,生成Web服務最優測試用例集,達到覆蓋測試需求,并開發相應的自動化測試工具,建立用例生成及管理、用例運行、結果分析的支撐環境,為Web服務自動化測試提供了有力手段,具有十分重要的理論意義和實用價值。

2 研究目的

本章通過兩個實例展示現有的軟件存在的問題以及本文提出的測試用例生成器框架的優勢,對提高測試的自動化程度和基于組合模型及接口契約關系的測試用例集優化進行說明。

圖1是一個簡單的虛擬測試示例服務的WSDL規范,描述了兩個指定的操作,分別為operation1和operation2。其中,operation1的輸入參數分為如下三部分:

(1)firstInput∶屬于 XSD(XML schemas definition)定義的復雜數據類型,包含5個子元素,它與子元素之間存在Choice(選擇順序)的完整性約束關系,且子元素中包含一個約束關系為All(任意順序)的嵌套復雜數據類型子元素AllElem,如圖1所示。

Fig.1 Element analysis for WSDL document圖1WSDL案例元素解析

(2)secondInput∶屬于XSD定義的一種簡單數據類型(string)。

(3)headerPart∶另一個屬于XSD定義的一種簡單數據類型(string),用于SOAP(simple object access protocol)消息的頭部。

另一個操作operation2的輸入參數為一個復雜數據類型元素,它與子元素之間存在Sequence(特定順序)的完整性約束關系。同時,圖1的WSDL規范還分別定義了這兩個操作的響應消息op1Response和op2Response。

當使用現有的Web服務測試工具(以SoapUI為例)執行上述WSDL文檔時,將會為每個操作生成獨立的SOAP封裝消息,其中包含了測試的框架及輸入數據格式信息,如圖2所示。在該用例框架中,自動生成了SOAP消息的格式標簽和輸入數據部分的提示注釋信息(如10、14、17行),并以“?”標簽的形式預留了輸入數據空間(如5、11~13、15、18~19行)。雖然生成的框架信息能夠指導測試人員操作這些數據元素,手動構建需要的測試用例,但沒有對復雜數據類型的Sequence、Choice、All元素進行處理,以及無法自動生成需要的等價類及邊界值測試數據,仍需要測試人員承擔大量復雜的人工干預。

Fig.2 Test cases skeleton based on SoapUI圖2 SoapUI生成測試框架

第二個實例同樣以圖1所示的WSDL規范為例,隨機生成相應的數據進行實例推導。在上述SOAP消息框架中填補隨機的數字類型和字符串類型數據,使得測試用例能夠有效使用。考慮到輸入數據的組合空間問題,創建輸入消息依賴于各部分實例的笛卡爾積之和,但是以此產生的數據組合會發生爆炸,存在大量重復的實例數據。同時,Web服務通常含有多個操作的情形,存在操作之間的信息交互,僅僅對單個操作進行測試是不充分的,而現有的操作序列生成方法并沒有考慮各操作之間的輸入/輸出依賴關系以及測試路徑中操作的輸出數據需要保證序列中后續操作的輸入合理性。

針對上述問題,本文提出的測試框架中重點研究現有工具的后續數據生成部分工作,通過將WSDL規范的XSD結構自動實例化,并以傳統軟件測試方法中的等價類劃分及邊界值等策略,自動化生成Web服務的測試用例,提出處理圖1的例子的解決方案,主要貢獻如下:

(1)復雜數據類型。系統選擇可能的子元素代替輸入參數中存在的復雜類型數據結構,如All、Choice、Sequence,自動選取Choice中的每個子元素,隨機順序ALL中子元素及特定順序Sequence保持生成的數據結構的充分性。

(2)數據屬性元素。對于occurElem元素,當指示符指定元素最大/最小出現次數分別為3和1時,系統選取3類結果,取最大值,取最小值和中間值(在非受限情況下,在實例生成前設置為最大值)。

(3)字符串數據。通過生成標準輸入數據處理字符串類型,填補SoapUI測試骨架相應標簽。

(4)數據約束。建立簡單、復雜數據的約束模型,準確表達數據之間的約束關系。

(5)單個操作數據。基于可變力度組合測試的方法,采用等價類劃分、邊界值分析方法合理生成元素之間的正常、邊界、異常值的組合數據,覆蓋子元素之間的組合關系。

(6)操作序列數據。基于有限狀態機模型生成操作之間存在的合理路徑,并依據操作之間的接口契約模型生成滿足操作數據依賴關系的操作序列測試數據。

上述優化措施覆蓋了數據類型的解析及測試數據的生成,具體流程如圖3所示。

Fig.3 Workflow for test cases generator圖3 測試用例生成器流程

本文工具能夠為Web服務生成滿足數據結構多樣性及數據元素有效組合的測試數據,通過SOAP消息結構封裝相應的測試用例實例,發送請求、接受響應、分析結果以完成測試流程。最終,基于圖1,生成7個結構不同的SOAP消息,部分如圖4所示,之后填充不同的輸入值,產生滿足組合的測試用例集。

Fig.4 Test cases generated by the proposed tool圖4 測試用例生成器流程

3 測試用例自動生成框架

依據案例研究獲取的Web服務測試需求以及現有測試工具存在的不足,本文提出了Web服務自動化測試框架,如圖5所示,測試流程依次包括WSDL文檔元素解析、單個操作測試數據生成、操作序列測試路徑生成和測試用例執行。以WSDL為輸入文件,輸出符合XSD規范的消息用例集,以SOAP消息執行測試用例并收集服務響應結果。

Fig.5 Web service automation test framework圖5 Web服務自動化測試框架

3.1 WSDL文檔元素解析

依據上述技術框架,測試流程從輸入的WSDL文檔模式分析開始,WSDL文檔是一個滿足W3C系統規范的XML文檔,對外進行服務描述。Tsai等人擴展了標準的WSDL文檔,加入了約束信息和語義信息用來增強其描述能力,輔助測試用例生成[17-18]。擴展后的WSDL文檔包括內置數據類型、簡單數據類型和復雜數據類型。簡單數據類型由元素<xs:simpleType>定義,它與內置數據類型之間存在表達性約束關系(representation constrains),復雜數據由元素<xs:complexType>定義,復雜數據與子元素之間存在完整性約束關系(integrity constrains),同時多個子元素之間存在3種指示符關系,包括Sequence(特定順序)、Choice(選擇順序)、All(任意順序)3種指示符。基于WSDL文檔解析,可以得到對應的SOAP封裝消息,目前已有的Web服務用例生成器均以此填充數據產生測試用例集合。然而,依據第2章案例所示,該類生成器只能為每個操作生成唯一的SOAP信息架構,而不能覆蓋操作中的復雜數據類型及數據屬性模式,無法滿足測試用例設計的充分性需求。

為了完整地描述單個操作中的各類數據元素及元素之間的約束關系,本文基于文獻[19],構建如圖6所示的形式化樹模型(定義1),通過約束模型[20]完整地描述單個操作中各類數據元素及元素之間的約束關系(定義2);并在文獻[21-22]基礎上,構建如圖7所示的操作樹模型(定義3),將操作之間部分關系形式化為一個邏輯上的樹狀結構,以展示Web服務中操作之間的輸入/輸出依賴關系。

定義1(形式化樹模型)一個操作的數據元素可以表示成一個形式化樹模型的集合T(N,S,B,nr,IC,RC,EE,ED)。其中,N為復雜數據類型中所有子元素名的集合;S為簡單數據類型元素名的集合;B為內置數據類型元素名的集合;nr為復雜數據根節點的集合;IC為復雜數據根節點和復雜數據以及復雜數據其子元素之間的刻面約束,即WSDL中定義的完整性約束(基數約束);RC為簡單數據和內置數據之間的刻面約束,即WSDL中定義的表達性約束(值域約束);EE為邊的集合,?e∈EE,表示為e(p,x,c),p∈N?nr,c∈N,x∈IC?{?};ED為邊的集合,?e∈ED,表示為e(p,x,c),p∈N?S,c∈B,x∈RC?{?}。

定義2(數據約束模型)

其中,Cardinality和ValueRange定義了數據自身屬性的約束關系,Cardinality基數約束,是指被約束對象的取值數量的限制,包括最大、最小和固定的基數約束,對應WSDL文件中的minOccurs和maxOccurs屬性;ValueRange值域約束,是指被約束對象的取值范圍的限制,對應WSDL中的Restriction約束的定義;Rule規則約束,是指被約束對象的屬性之間的比較復雜的約束關系,用于定義多個數據之間或屬性之間的約束。該約束關系根據范圍又可以細化為兩種:同一數據不同屬性之間的約束關系innerRules規則,不同數據的屬性之間的約束關系Rules規則。上述約束關系通過規則語言SWRL(semantic Web rule lan-guage)表示[23]。

Fig.6 Formal tree model圖6 形式化樹模型

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

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

為了采集單個操作中的所有結構特征,算法1遍歷形式化樹模型中的DOM節點,如果該節點為復雜數據節點,則根據其子元素間的指示符關系,分批生成覆蓋結構特點的SOAP骨架信息集合。對于存在基數約束的節點,先獲取該節點的約束關系(minOccurs和maxOccurs屬性),然后根據設定值進行枚舉。算法1在達到操作覆蓋、消息覆蓋、模式覆蓋后停止執行。

算法1 SOAP骨架信息集生成算法

3.2 單個操作測試數據生成

基于圖5提出的Web服務測試架構,為了生成SOAP骨架中的預留數據,需要考慮簡單數據類型值域約束、復雜數據類型子元素組合關系和數據規則約束3種情況,生成單個操作數據的流程如下。

步驟1讀取約束模型Constrains中的值域約束,這些約束規定了字符串候選的枚舉值、字符串模式、數值類型的上下邊界等信息。

步驟2根據單個操作的輸入數據和步驟1中獲得的數據值域約束,將輸入域進行等價類劃分,采用邊界值和隨機策略生成滿足條件的有效數據和無效數據。

步驟3根據復雜數據類型的子元素存在的inner-Rules規則和可變力度組合測試模型,生成覆蓋數據子元素正常、空值、邊界、異常組合力度的復雜數據組合測試數據,并考慮復雜數據類型的嵌套關系。

步驟4根據不同數據的屬性之間的約束關系Rules規則,分別生成滿足約束和不滿足約束的有效數據和無效數據。

步驟5按照上述步驟分別為SOAP骨架集中的每個SOAP消息填入覆蓋各類需求的數據,生成單個操作的測試用例集。

3.2.1 基于值域約束的簡單數據類型測試數據生成

為保證生成測試數據的合理性,本節讀取WSDL描述信息,從中提取各個類型數據的值域約束信息(XSD restriction)。之后通過隨機/邊界策略在值域范圍內生成測試數據。系統支持的基本數據類型包括整數、布爾值、浮點值、字符串、時間日期、字符串、URL、16進制和base64編碼二進制數據等。

3.2.2 基于可變力度組合測試模型的測試數據生成

依據簡單數據類型的數據生成方法盡管能夠生成不同的多維輸入數據,但這些數據并不能保證對復雜類型的子元素的取值組合的充分覆蓋。為此,本節依據文獻[24-25]提出的組合測試的模型定義,通過One-test-at-a-time策略實現了一個基于可變力度組合模型的復雜數據類型組合測試數據生成算法,以覆蓋子元素的組合關系,見算法2。

算法2 One-test-at-a-time策略基本框架

3.2.3 基于數據規則約束的測試數據生成

在服務應用領域,很多數據之間存在一定的數據規則約束以表達業務相關的數據特征,如數值約束、時序約束、結構約束等。基于定義2中Rules規則,本文采用線性不等式和布爾公式組合的方式描述此類約束關系。在原子約束的基礎上,通過AND、OR、NOT算子組合成更復雜、更龐大的約束組。一個服務實體的整個約束可以用一棵析取和合取樹來表達。該樹子節點是一組基本的原子約束,中間節點是AND、OR或NOT關系。

每個原子約束是一個線性不等式或布爾表達式。表達式由約束變量、常量和運算符構成。約束變量的定義如下。

定義4(約束變量)

其中,value是變量名,表示一個服務操作參數的取值;svc是服務地址標識;operation是操作標識;message_xpath是到基本類型數據的xpath路徑表達,用以表征一個服務操作的輸入中不同的子參數。一個約束變量可以用來表達服務參數的取值,而這些取值又可以表達數據、狀態等信息。在約束變量的基礎上,可以定義如下的原子約束公式:

該約束公式可以表達操作參數之間的數據約束關系。

3.3 操作序列測試數據生成

與面向對象程序設計中的類成員方法類似,有狀態Web服務中的各個操作之間也可能包含較強的聯系,存在耦合關系,一個服務操作修改的全局性狀態可能被另一個服務操作讀取,服務操作之間可能相互影響,因此僅僅對單個操作進行測試是不充分的。基于圖5提出的Web服務測試架構,為了生成滿足操作序列路徑的測試用例集,本節提出了一種有狀態Web服務的測試數據生成方法。首先基于3.1節的操作樹模型獲取操作之間的依賴關系,構建操作接口契約模型(定義5);之后采用語義標注加入操作的行為信息,通過參考文獻[26]提出的有限狀態機模型(enhanced finite state machine,EFSM)(定義6)描述服務的動態行為,遍歷生成服務的操作路徑;最終根據接口契約模型生成服務操作序列的測試數據。

定義5(操作接口契約模型)

其中,Spec∶<ID,Name,Description> 為操作基本信息的定義(操作編號、操作名稱及操作功能描述);Inputs∶={datai}為輸入參數集合;Outputs∶={datai}為輸出參數集合;Control-Dependence∶={<ID,Dependencei>}為操作之間的控制依賴關系,包括順序約束以及時間約束,定義執行順序的各種約束條件;Data-Dependence∶={<ID,Dependencei>}定義操作之間的數據依賴關系。

定義6(EFSM的Web服務形式化模型)它是一個六元組(Q,Σ,Φ,q0,F,QC)。其中,Q是一個有窮集合,叫作狀態集,每一個狀態表示交互序列中的歷史記錄或條件判斷記錄;Σ是一個有窮集合,叫作字母表,它是O×I的笛卡爾積集合,I是操作輸入變量的集合,O是操作輸出變量的集合;Φ∶Q×Σ×QC→Q是轉移函數,Φ表示下一個狀態,即給定一個狀態,根據輸入輸出參數條件,EFSM可以轉移到另一個或幾個狀態;q0∈Q是起始狀態;F?Q是接收狀態集,即用戶與Web服務結束交互的狀態集;QC是狀態的條件集,其中條件是由狀態和命題邏輯公式通過聯接詞組成的表達式。

根據定義6的EFSM模型,采用文獻[27]的方法進行遍歷能夠自動化獲取操作序列的測試路徑。然而根據常規的方法逐個為路徑中的操作生成測試數據由于未考慮操作輸入/輸出依賴關系以及路徑執行數據的合法性,會導致數據設計存在缺陷。

為了解決上述問題,本節采用數據分區的方法,對操作的輸入輸出數據進行合法性校驗,以保證測試路徑的正常執行,提高測試數據設計的合理性。其次,根據定義5的操作契約模型中的數據依賴關系,對測試序列數據進行匹配,減少不必要的測試數據生成。

算法3用例集生成及優化算法

4 工具設計與實現

本文研制了Web服務自動化測試工具,包含6個功能模塊,即WSDL解析模塊、SOAP封裝導出、單個操作測試數據生成、操作序列測試數據生成、用例執行和結果分析、測試用例管理。

WSDL解析:解析WSDL規范,自動提取有用的信息,如操作、消息和數據結構(XSD),并存入形式化模型樹。

SOAP封裝導出:為每個操作自動提取一個獨立SOAP封裝,封裝中不含ready-to-send消息,而只有骨架。之后為骨架中每個數據結構生成不同的消息實例,形成實例集,以滿足測試的覆蓋標準。

單個操作測試數據生成:通過等價類劃分、邊界值等方法生成滿足模型(組合測試、約束模型)要求的數據,代替封裝SOAP骨架中的虛擬數據。

操作序列測試數據生成:根據有限狀態機模型生成Web服務中存在的操作序列路徑,并依據接口契約模型中的數據依賴關系選取單個操作的測試數據作為操作序列測試的初始數據。

用例執行和結果分析:將包含測試數據的SOAP消息封裝上傳至服務地址,根據服務響應完成接口測試。針對服務返回的報文進行解析,收集用例執行結果,并設定測試用例預期結果與其進行比對,完成功能測試。

測試用例管理:測試集模型樹支持XML文件的存儲方式,測試集與測試用例通過數據庫進行關聯,測試用例管理支持測試用例的增刪查改,依照具體的服務和操作為排序標準顯示測試用例來源。

為保證工具系統的靈活性,測試系統采用了如圖8所示的物理結構,由如下基本模塊構成:測試用例設計器SOATest、測試任務執行器ServiceExecutor、服務部署容器SvcHost、黃頁服務器UDDIServer以及代理轉發網關RedirectProxy。

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

測試用例設計器SOATest:負責測試用例的設計、測試結果的收集等任務,并提供用戶界面,用于編輯和查閱測試用例及其執行信息。

測試任務執行器ServiceExecutor:從測試用例設計器接收測試任務,根據指定的測試任務生成SOAP封裝消息報文,將這些報文上發至目標服務,執行測試用例。同時提供部署真實和虛擬服務的服務容器。

服務部署容器SvcHost:用于發布待測服務和安裝控制虛擬服務。工具支持多個服務容器同時分布式部署。

黃頁服務器UDDIServer:用于發布服務信息,所有發布的服務注冊、登記在黃頁中,便于檢索和使用。

代理轉發網關RedirectProxy:用于監控不同服務之間的消息流,支持基于HTTP代理連接和SOCKS代理連接的服務消息轉發。

工具的執行界面如圖9~圖12所示,分別從Web服務測試用例設計、測試數據生成、操作序列測試數據生成及用例測試結果等多方面對原型系統進行展示。

Fig.9 Test cases design interface圖9 測試用例設計界面

5 實驗評估

為了覆蓋上述研究內容,驗證工具的有效性,本文選擇某型號面向服務的艦船指控系統軟件作為待測對象,并進行了一系列實驗。實驗主要關注兩個問題:

問題1工具生成測試用例的覆蓋率情況。

問題2工具生成用例集的錯誤檢測能力與已有方法的比較。

5.1 實驗案例

本文選取系統軟件中的情報處理服務作為驗證案例,并覆蓋了無狀態和有狀態兩種操作類別,支持的參數數據類型和復雜數據結構。表1列出了實驗中用到的Web服務中的7個操作。其中信息顯示操作、態勢顯示操作為無狀態服務,不具有操作序列,只需根據其各個操作的輸入輸出參數類型生成相應的測試用例集。情報處理服務同時包含部分有狀態操作,這類操作對于同樣的輸入參數得到不同的執行結果,服務是有狀態的,因而需要進行操作序列的測試。

Fig.10 Test cases generation interface圖10 測試數據生成界面

Fig.11 Operation test suite generation interface圖11 操作序列用例集界面

5.2 實驗方法

Fig.12 Test case execute results interface圖12 測試用例執行結果界面

Table 1 Statistics information for testing paths set in case表1 案例程序的測試路徑集的信息統計

在實驗過程中,應用Web服務自動化測試框架,首先解析待測服務描述文件WSDL,構建形式化樹模型和操作樹模型。針對服務中的單個操作測試數據,依據輸入參數的數據約束模型,生成符合約束規則和組合力度的測試用例數據。之后,對于服務中的操作序列測試數據,依據操作的行為信息,基于構建EFSM模型遍歷獲取操作序列測試數據,生成服務接口契約模型的依賴關系的測試用例數據。實驗中使用SOAP消息對測試用例進行封裝,并通過HTTP進行數據傳輸,將SOAP請求發送到該服務所在的服務器,處理流程包括測試用例的生成選擇、測試執行和測試結果分析。

針對問題1,利用現有工具的隨機策略為被測服務生成500組測試數據,在生成的測試數據中分別為每個服務選取50,100,150,200,250,300,350,400,450,500組數據組成不同大小的測試用例集合。將每個測試用例集合的測試數據以SOAP消息的形式封裝,利用工具SoapUI進行用例執行,并使用商用測評工具LDRATestBed(V 9.5.3)對服務的源代碼進行插樁編譯。之后自動化執行上述測試用例集,分別獲取代碼的語句和分支覆蓋率情況,并與本文的工具結果進行比較。

針對問題2,為了證明本文方法在用例錯誤檢測能力以及用例規模上的優勢,首先在被測服務中植入42個變異體,注入的變異規則類型分為如下5種。

語句刪除:將不影響服務代碼編譯成功的聲明進行注釋,共產生10個變異體。

布爾值:強制更改語句中的布爾變量值true或false,使得程序判定出錯,共產生12個變異體。

邏輯操作:將程序中邏輯判斷<、<=、>和>=這4種標識符更替為其余的3種類型或==標識符,共產生8個變異體。

布爾操作:將程序中的布爾判斷==或者!=進行更換,共產生8個變異體。

賦值錯誤:更改軟件中的部分變量賦值,共產生4個變異體。

鑒于現有的部分Web服務測試工具不具備自動生成測試數據的功能,在基準方法比較部分除了與現有工具比較外,還加入了與現有Web服務用例生成方法的比較,根據各方法殺死的變異體個數來衡量用例的錯誤檢測能力。

5.3 實驗結果

針對問題1,由于單次生成500組隨機測試數據存在偶然性,本實驗中重復該策略5次,以減少測試結果的誤差。通過與隨機測試用例的覆蓋率情況相比較,本文方法均獲得了更好的語句和分支覆蓋率,具體如圖13、圖14所示。從實驗結果可以看出,通過隨機策略生成的測試數據存在盲目性,既無法很好地考慮數據的結構特征及約束關系,也無法保證操作序列路徑的有效性,導致程序中存在未能走到的代碼及分支。

Fig.13 Statement coverage of each test suite圖13 語句覆蓋率對比情況

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

Table 2 Test cases and results表2 測試用例及結果

表2顯示了現有Web服務測評工具及方法生成的測試用例殺死服務中變異體的情況。根據實驗結果可知,如預期,本文方法用較少的用例殺死了更多的變異體,表明生成的測試用例擁有較強的針對性。文獻[28]提出的方法雖能完成基于模型的測試用例生成,可是對復雜數據結構考慮不足,生成的用例檢錯能力較差。文獻[29]中馬春燕等人提出的方法雖然檢錯能力較好,可是獲取的用例最多,當系統過大時,容易產生組合爆炸,并且用例執行耗時較長。文獻[30]中李盛鋼提出的方法獲取最少測試用例,達到用例約簡的功能,可是用例的錯誤檢測充分性無法保證。文獻[31]提出的方法雖然考慮了元素約束關系,但是缺少用戶需求組合方面的測試用例設計,無法滿足測試需求。在測評工具方面,現有的Web服務商用測評工具更依賴于測試人員手工錄入數據,文獻[32-33]提出的工具雖然能夠自動生成約簡的測試用例集,可是對數據之間的約束關系和數據組合考慮不足,生成的測試用例檢錯能力不強。

此外,據表2所述,實驗中有些用例無法得到執行結果,其中有部分是由于無效測試用例生成的,而另一部分是由于生成測試路徑測試數據時沒有考慮到測試路徑的可行性,有些數據可能在路徑之中就由于不合法,導致操作序列用例無法執行,無法返回預期結果,因此僅僅依賴于單個操作生成測試數據的方法是不充分的。針對操作序列測試的驗證,本文根據服務需求設計文檔構建業務流程剖面,獲取情報執行模塊服務中存在的可執行操作序列的路徑為18條,之后采用現有的方法生成操作序列測試數據,并對操作序列執行的覆蓋充分性進行分析和計算。各類方法的覆蓋情況見表3。

Table 3 Operation sequence coverage adequacy表3 操作序列覆蓋充分性

文獻[28-29]對于單個操作生成的測試數據普遍路徑覆蓋率較低。雖然文獻[7]也提出了運用數據流的方法加強測試序列的測試,但由于該方法只考慮了少量偶然的操作之間的關系,導致生成用例的數量不夠。降低了用例的錯誤檢測能力。文獻[26,33]提出使用模型的方法,可是由于模型的生成依賴于測試人員的經驗,生成的數據具有嚴重的不平衡性,降低了測試效率,且沒有考慮到數據之間的依賴關系,簡單地為每一個操作生成測試數據,會導致用例規模過于龐大,無法滿足測試需求。因此,本文方法由于考慮了復雜操作序列的交互過程,避免了服務實體中仍存在無法測試的路徑。

6 相關工作

在當前Web服務測試的研究中,Web服務被分為無狀態和有狀態的Web服務兩類[4-5]。對于無狀態服務,Tsai等人在文獻[17]中提出了基于規約的測試方法,通過擴展WSDL文件來添加數據依賴關系,增強其描述能力。已有文獻[35-38]在此基礎上,在多方面展開了基于WSDL的Web服務測試用例生成研究,包括通過WSDL文件抽象構建數據類型的抽象模型,復雜數據的約束關系細化,基于變異測試技術的測試數據生成。其中,基于樹模型生成數據過程沒有考慮用例的約簡,導致通過笛卡爾積方法生成的測試用例容易形成組合爆炸,不利于大規模開展測試。變異測試需要大量的計算機資源,并且生成的測試用例取決于變異算子的優劣,因此不能作為常規的測試手段。在有狀態服務方面,文獻[7,21,26-27]報道了一些操作序列測試路徑生成的研究,其中操作序列的構建和測試數據的生成仍然需要依賴手工完成,過程比較繁瑣耗時,且缺少具體的擴展應用,具有一定的局限性。文獻[39-41]基于含有行為信息的語義Web服務標準,提出了將WSDL-S、OWL-S語義文檔轉換成為IOPE圖、EFSM等模型進行測試路徑的自動生成,但是這類方法過度依賴語義信息文件,并且沒有考慮如何生成滿足測試路徑的合理路徑,很難得到實際的應用。

現今,存在多類專業面向Web Services的測試商用工具和高效原型工具,大部分與本文工作類似,通過標準WSDL對于服務操作和它們輸入、輸出參數的定義可以被服務接口黑盒測試。但是,現有的Web服務測試商用工具,如 SoapUI[13]、SOATest[14],需要用戶手工設計、產生和撰寫測試用例。高效的原型工具,如 WSDLTest[33]、WS-TAXI[32],雖然研究了一些測試數據的自動化生成方法,可是開發的工具不能支持完整的測評過程,且生成數據方案并不能很好地滿足測試的數據需求,無法進行操作序列的測試研究。

從上述研究現狀來看,Web服務自動化測試方面仍存在很多未解決的難題,盡管存在大量的學術研究,可是能夠轉化到工業界的應用成果很少,缺少相應的工具支撐。本文提出的基于Web服務自動化測試框架實現Web服務的自動化測試工具,重點研究WSDL的文檔解析、單個操作的測試數據生成以及操作序列路徑生成,相比于已存在的測試工具擁有更完善的測試策略和更系統的測試方法。

7 結束語

由于Web服務包含大量運行狀態行為和無圖形化界面等特性,自動化生成測試數據已經成為Web服務測試迫切需要解決的突出問題。本文研究了一種基于WSDL文檔解析的數據實例自動生成框架和工具,收集了所有DOM樹節點的結構特征和數據元素屬性,保證了生成的測試數據能夠覆蓋Web服務各類操作的測試需求,提高了用例設計的充分性。

為提高用例的錯誤檢測能力,本文工具采用了組合測試和數據約束模型相結合的技術進行測試數據的填充及約簡,形成覆蓋需求的測試用例集。同時,采用操作樹模型增強操作的行為信息,通過有限狀態機模型(EFSM)描述操作的動態行為,根據接口契約模型對Web服務輸入輸出數據進行合法性校驗,以保障操作路徑的正確執行,從而提高測試數據設計的合理性。今后工作中將進一步完善該工具,考慮更多的Web服務測試需求,增加基于BPEL(business process execution language)的服務組合測試模塊,并在服務的壓力測試和性能測試方面進行擴展,以更全面地支持Web服務的自動化測試工作。

[1]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):78-103.

[2]Petrova-Antonova D,Ilieva S,Manova D.TASSA:testing framework for Web service orchestrations[C]//Proceedings of the 10th International Workshop on Automation of Software Test,Florence,Italy,May 16-24,2015.Piscataway,USA:IEEE,2015:8-12.

[3]Geng Weibo,Zhang Yonghong.Application of SOA to military information grid[J].Fire Control&Command Control,2011,36(3):186-189.

[4]Brenner D,Atkinson C,Hummel O,et al.Strategies for the run-time testing of third party Web services[C]//Proceedings of the 2007 International Conference on Service-Oriented Computing andApplications,Newport Beach,USA,Jun 19-20,2007.Washington:IEEE Computer Society,2007:114-121.

[5]Sinha A,Paradkar A M.Model based functional conformance testing of Web services operating on persistent data[C]//Proceedings of the 2006 Workshop on Testing,Analysis,and Verification of Web Services andApplications,Held in Conjunction with the ACM SIGSOFT International Symposium on Software Testing and Analysis,Portland,USA,Jul 17,2006.New York:ACM,2006:17-22.

[6]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.

[7]Heckel R,Mariani L.Automatic conformance testing of Web services[C]//LNCS 3442:Proceedings of the 8th International Conference Fundamental Approaches to Software Engineering Held as Part of the Joint European Conferences on Theory and Practice of Software,Edinburgh,UK,Apr 4-8,2005.Berlin,Heidelberg:Springer,2005:34-48.

[8]Mei Hong,Zhang Lu.A framework for testing Web services and its supporting tool[C]//Proceedings of the 2005 IEEE International Workshop on Service-Oriented System Engineering,Beijing,Oct 20-21,2005.Washington:IEEE Computer Society,2005:199-206.

[9]WWW Consortium.WSDL version 2.0[EB/OL].(2007-06-26)[2016-12-02].http://www.w3/org/TR/wsdl20.

[10]W3C.Web service description language(WSDL)version 2.0 part1:core language[EB/OL].(2007-06-26)[2016-12-02].https://www.w3.org/TR/wsdl20/.

[11]Li Zhongjie,Sun Wei,Jiang Zhongbo,et al.BPEL4WS unit testing:framework and implementation[C]//Proceedings of the 2005 International Conference on Web Services,Orlando,USA,Jul 11-15,2005.Washington:IEEE Computer Society,2005:103-110.

[12]Ma Chunyan,Zhu Yi'an,Lu Wei.Automatic test for Web services[J].Computer Science,2012,39(2):162-169.

[13]SoapUI.The Web services testing tool[EB/OL].(2016-10-19)[2016-12-02].http://www.soapui.org/.

[14]ParasoftSOATest[EB/OL].(2015-12-01)[2016-12-02].http://www.parasoft.com/jsp/products/home.jsp?product=SOAP.

[15]PushToTest.PushToTest TestMaker[EB/OL].(2016-03-20)[2016-12-02].http://www.pushtotest.com/products.html.

[16]Bertolino A,Gao Jinghua,Marchetti E,et al.Automatic test data generation for XML schema-based partition testing[C]//Proceedings of the 2nd International Workshop on Automa-tion of Software Test,Minneapolis,USA,May 20-26,2007.Washington:IEEE Computer Society,2007:10-16.

[17]Tsai W T,Paul R A,Wang Yamin,et al.Extending WSDL to facilitate Web services testing[C]//Proceedings of the 7th IEEE International Symposium on High-Assurance Systems Engineering,Tokyo,Oct 23-25,2002.Washington:IEEE Computer Society,2002:171-172.

[18]Bai Xiaoying,Dong Wenli,Tsai W T,et al.WSDL-based automatic test case generation for Web services testing[C]//Proceedings of the International Workshop on Service-Oriented System Engineering,Beijing,Oct 20-21,2005.Washington:IEEE Computer Society,2005:207-212.

[19]Pu Jie,Li Yin,Teng Shibo.Generating test suite for Web services by variable strength combinatorial testing[J].Command Control&Simulation,2015,37(4):123-130.

[20]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.

[21]Li Li,Wu Chou.Automatic message flow analyses for Web services based on WSDL[C]//Proceedings of the 2007 International Conference on Web Services,Salt Lake City,USA,Jul 9-13,2007.Washington:IEEE Computer Society,2007:880-887.

[22]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.

[23]Horrocks I.SWRL:a semantic Web rule language combining OWLl and RuleML[EB/OL].(2004-05-21)[2016-12-02].http://www.w3.org/submission/2004/SUBM-SWRL-20040521/.

[24]Wang Ziyuan,Xu Baowen,Nie Changhai.Survey of combinatorial test generation[J].Journal of Frontiers of Computer Science and Technology,2008,2(6):571-588.

[25]Wang Ziyuan,Qian Ju,Chen Lin,et al.Generating variable strength combinatorial test suite with one-test-at-a-time strategy[J].Chinese Journal of Computers,2012,35(12):2541-2552.

[26]Keum C S,Kang S,Ko I Y,et al.Generating test cases for Web services using extended finite state machine[C]//LNCS 3964:Proceedings of the 18th IFIP TC6/WG6.1 International Conference on Testing of Communicating Systems,New York,May 16-18,2006.Berlin,Heidelberg:Springer,2006:103-117.

[27]Ma Chunyan,Wu Junsheng,Zhang Tao,et al.Web services testing based on stream X-machine[C]//Proceedings of the 10th International Conference on Quality Software,Los Alamitos,USA,Jul 14-15,2010.Washington:IEEE Computer Society,2010:232-239.

[28]Li Ying,Li Minglu,Yu Jiadi.Web services testing,the methodology,and the implementation of the automation-testing tool[C]//LNCS 3032:Proceedings of the 2nd International Workshop on Grid and Cooperative Computing,Shanghai,Dec 7-10,2003.Berlin,Heidelberg:Springer,2004:940-947.

[29]Ma Chunyan,Du Chenglie,Zhang Tao,et al.WSDL-based automated test data generation for Web service[C]//Proceeding of the 2008 International Conference on Computer Science and Software Engineering,Wuhan,China,Dec 12-14,2008.Washington:IEEE Computer Society,2008:731-737.

[30]Li Shenggang.A method of automatic test data generation based on extended WSDL[D].Chongqing:Southwest University,2010.

[31]Vanderveen P,Janzen M,Tappenden A F.A Web service test generator[C]//Proceedings of the 30th International Conference on Software Maintenance and Evolution,Victoria,Canada,Sep 29-Oct 3,2014.Washington:IEEE Computer Society,2014:516-520.

[32]Bartolini C,Bertolino A,Marchetti E,et al.WS-TAXI:a WSDL-based testing tool for Web services[C]//Proceedings of the 2nd International Conference on Software Testing Verification and Validation,Denver,USA,Apr 1-4,2009.Washington:IEEE Computer Society,2009:326-335.

[33]Sneed H M,Huang Shihong.The design and use of WSDLTest:a tool for testing Web services[J].Journal of Software Maintenance and Evolution:Research and Practice,2007,19(5):297-314.

[34]Shenoy S,Bakar N AA,Swamy R.An adaptive framework for Web services testing automation using JMeter[C]//Proceedings of the 7th International Conference on Service-Oriented Computing and Applications,Matsue,Japan,Nov 17-19,2014.Washington:IEEE Computer Society,2014:314-318.

[35]Xu Wuzhi,Offutt J,Luo Juan.Testing Web services by XML perturbation[C]//Proceedings of the 16th IEEE International Symposium on Software Reliability Engineering,Chicago,USA,Nov 8-11,2005.Washington:IEEE Computer Society,2005:257-266.

[36]Hanna S,Munro M.An approach for specification-based test case generation for Web services[C]//Proceedings of the 2007 International Conference on Computer Systems and Applications,Amman,Jordan,May 13-16,2007.Washington:IEEE Computer Society,2007:16-23.

[37]Siblini R,Mansour N.Testing Web services[C]//Proceedings of the 2005 International Conference on Computer Systems and Applications,Cairo,Egypt,Jan 3-6,2005.Washington:IEEE Computer Society,2005:135.

[38]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.

[39]Bertolino A,Polini A.The audition framework for testing Web services interoperability[C]//Proceedings of the 31st EUROMICRO Conference on Software Engineering and Advanced Applications,Porto,Portugal,Aug 30-Sep 3,2005.Washington:IEEE Computer Society,2005:134-142.

[40]Belli F,Linschulte M.Event-driven modeling and testing of Web services[C]//Proceedings of the 32nd Annual IEEE International Computer Software and Applications Conference,Turku,Finland,Jul 28-Aug 1,2008.Washington:IEEE Computer Society,2008:1163-1173.

[41]Paradkar A M,Sinha A,Williams C,et al.Automated functional conformance test generation for semantic Web services[C]//Proceedings of the 2007 International Conference on Web Services,Salt Lake City,USA,Jul 9-13,2007.Washington:IEEE Computer Society,2007:110-117.

附中文參考文獻:

[6]許蕾,李言輝,陳林,等.一種面向用戶需求的Web服務測試方法[J].計算機學報,2014,37(3):512-521.

[12]馬春燕,朱怡安,陸偉.Web服務自動化測試技術[J].計算機科學,2012,39(2):162-169.

[19]普杰,李吟,滕士波.可變力度組合測試的Web服務用例集生成方法[J].指揮控制與仿真,2015,37(4):123-130.

[20]侯可佳,白曉穎,陸皓,等.基于接口語義契約的Web服務測試數據生成[J].軟件學報,2013,24(9):2020-2041.

[22]何玲娟,劉連臣,吳澄.一種改進的基于WSDL描述的操作相似性度量方法[J].計算機學報,2008,31(8):1331-1339.

[24]王子元,徐寶文,聶長海.組合測試用例生成技術[J].計算機科學與探索,2008,2(6):571-588.

[25]王子元,錢巨,陳林,等.基于One-test-at-a-time策略的可變力度組合測試用例生成方法[J].計算機學報,2012,35(12):2541-2552.

[30]李盛鋼.一種基于擴展WSDL的測試數據自動生成方法[D].重慶:西南大學,2010.

[38]姜瑛,辛國茂,單錦輝,等.一種Web服務的測試數據自動生成方法[J].計算機學報,2005,28(4):568-577.

2016-09,Accepted 2016-12.

Requirement Coverage OrientedAutomatic Testing Framework for Web Services*

LI Yin1+,FANG Jianyong1,JIANG Meng2
1.JiangsuAutomation Research Institute,Lianyungang,Jiangsu 222061,China
2.Lianyungang Technical College,Lianyungang,Jiangsu 222061,China
+Corresponding author:E-mail:leein121999@126.com

Web services are the W3C-endorsed realization of service-oriented architecture(SOA).Since Web services are tested in black-box via their interfaces,how to automatically generate effective test suites has become a key problem in Web services automatic testing.However,the existing tools take insufficient account of WSDL(Web services description language)schema structure and the dependency between data elements,and lack of effective means of test automation,which may lead to high cost and test data can't cover the test requirements.This paper proposes a test case generate framework and implements a tool which supports the above framework.At first,this framework acquires SOAP(simple object access protocol)skeletons which cover structural characteristics based on WSDL,then generates SOAP envelopes based on variable strength combinatorial testing model,finally generates operation sequence test path through the finite state machine/interface contract model.The experimental results show that the proposed framework can enable the test to achieve the desired coverage,while enhancing the fault detection ability and optimality on the size of existing approach.

Web services;service-oriented architecture;automation test framework;variable strength combinatorial test;finite state machine;interface contract model

10.3778/j.issn.1673-9418.1609024

*The Foundation of the 12th Five-Year-Plan of China Ministries and Commissions(國家部委“十二五”課題).

CNKI網絡優先出版:2016-12-07,http://www.cnki.net/kcms/detail/11.5602.TP.20161207.0922.010.html

LI Yin,FANG Jianyong,JIANG Meng.Requirement coverage oriented automatic testing framework for Web services.Journal of Frontiers of Computer Science and Technology,2017,11(11):1747-1763.

A

TP311

LI Yin was born in 1988.He received the M.S.degree from Soochow University in 2014.Now he is an engineer at JiangsuAutomation Research Institute.His research interests include software reliability and software testing,etc.

李吟(1988—),男,江蘇連云港人,2014年于蘇州大學獲得碩士學位,現為江蘇自動化研究所工程師,主要研究領域為軟件可靠性,軟件測試等。

FANG Jianyong was born in 1982.He received the M.S.degree from Beihang University in 2013.Now he is a senior engineer at Jiangsu Automation Research Institute.His research interests include software reliability and software testing,etc.

方建勇(1982—),男,安徽滁州人,2013年于北京航空航天大學獲得碩士學位,現為江蘇自動化研究所高級工程師,主要研究領域為軟件可靠性,軟件測試等。

JIANG Meng was born in 1988.She received the M.S.degree from Nanjing Normal University in 2014.Now she is a teacher at Lianyungang Technical College.Her research interest is statistical analysis.

江夢(1988—),女,江蘇連云港人,2014年于南京師范大學獲得碩士學位,現為連云港職業技術學院教師,主要研究領域為統計分析。

猜你喜歡
服務模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權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| 高清免费毛片| 国内精品伊人久久久久7777人| 国产凹凸一区在线观看视频| 波多野结衣视频网站| 久久6免费视频| 免费人成网站在线观看欧美| 国产黄色片在线看| 精品国产三级在线观看| 污视频日本| 亚洲香蕉久久| 久久久91人妻无码精品蜜桃HD| 久草网视频在线| 91国语视频| 欧美国产在线看| swag国产精品| 天天激情综合| 久久午夜影院| 99ri精品视频在线观看播放| 欧美激情伊人| 精品久久久久久成人AV| 91福利在线观看视频| 日韩无码黄色| 国产黄在线免费观看| 人妻无码一区二区视频| 亚洲欧美不卡视频| 亚洲欧美人成电影在线观看 | 日韩av电影一区二区三区四区| 国产丝袜无码一区二区视频| 国产十八禁在线观看免费| 免费看美女毛片| 亚洲三级a| 国产日韩欧美精品区性色| 污网站在线观看视频| 这里只有精品在线播放| 四虎影院国产| 九月婷婷亚洲综合在线| 呦女精品网站| 精品伊人久久久久7777人| 午夜精品久久久久久久无码软件 | 国产三级毛片| 91久久精品日日躁夜夜躁欧美| 国内精品一区二区在线观看| 2021天堂在线亚洲精品专区| 中文字幕第4页| 亚洲精品第一页不卡| 中文字幕1区2区| 日韩精品一区二区三区免费在线观看| 青青操视频在线| 亚亚洲乱码一二三四区| 91丝袜在线观看| 欧美a√在线| 夜夜高潮夜夜爽国产伦精品| 日韩欧美国产三级| 自拍欧美亚洲| 青青草原国产免费av观看| 日韩中文无码av超清| 97在线视频免费观看| 中文字幕日韩视频欧美一区| 99视频在线免费| 2022国产91精品久久久久久| 热热久久狠狠偷偷色男同 | 亚洲精品国偷自产在线91正片| 国产精品免费入口视频| 国产JIZzJIzz视频全部免费| 亚洲视频在线网| 欧美性精品| 中国特黄美女一级视频| 免费一级毛片在线播放傲雪网| 女人爽到高潮免费视频大全| 91色国产在线| 精品国产成人国产在线| 欧美色亚洲| 91久久精品国产| 尤物午夜福利视频| 国产精品手机视频| 国产69精品久久久久妇女| 六月婷婷精品视频在线观看| 国产视频一二三区|