李 吟,方建勇,江 夢
1.江蘇自動化研究所,江蘇 連云港 222061
2.連云港職業(yè)技術(shù)學(xué)院,江蘇 連云港 222061
面向需求覆蓋的Web服務(wù)自動化測試框架*
李 吟1+,方建勇1,江 夢2
1.江蘇自動化研究所,江蘇 連云港 222061
2.連云港職業(yè)技術(shù)學(xué)院,江蘇 連云港 222061
Web服務(wù)作為W3C認(rèn)證的面向服務(wù)架構(gòu)(service-oriented architecture,SOA)的實現(xiàn)方式,對外提供可用于黑盒測試的接口文檔,如何有效地自動化生成測試用例成為Web服務(wù)自動化測試的首要問題?,F(xiàn)有的測試工具對WSDL(Web services description language)的文檔結(jié)構(gòu)和數(shù)據(jù)之間的依賴關(guān)系考慮不足,且缺乏有效的測試數(shù)據(jù)生成方法,進(jìn)而導(dǎo)致測試效率不高以及生成的測試用例無法覆蓋全部的測試需求。為此,提出了Web服務(wù)自動化測試的技術(shù)框架,并實現(xiàn)了支持此框架的原型工具。該框架基于WSDL文檔解析獲取覆蓋結(jié)構(gòu)特征的SOAP(simple object access protocol)骨架集合,并采用可變力度組合測試模型生成滿足元素組合的SOAP封裝消息,之后通過有限狀態(tài)機(jī)/接口契約模型獲取操作序列測試路徑,保證了操作序列測試數(shù)據(jù)的有效性。案例結(jié)果表明了所提框架生成的測試數(shù)據(jù)能夠更好地滿足測試需求,達(dá)到理想的測試覆蓋率,并能夠檢測出更多的錯誤,且在用例規(guī)模上優(yōu)于現(xiàn)有的方法。
Web服務(wù);面向服務(wù)架構(gòu);自動化測試技術(shù)框架;可變力度組合測試;有限狀態(tài)機(jī);接口契約模型
Web服務(wù)技術(shù)的興起為面向服務(wù)架構(gòu)(serviceoriented architecture,SOA)的應(yīng)用提供了新的計算模型,實現(xiàn)了分布式應(yīng)用的互用性和適應(yīng)性,能夠滿足信息的高度共享和靈活重組[1-3],是網(wǎng)絡(luò)中心站以及“十二五”、“十三五”信息化建設(shè)的核心支撐,是取得“制信息權(quán)”的重要保障。當(dāng)前,空軍、海軍新一代在建/在研的指揮中心信息系統(tǒng)正全面轉(zhuǎn)向面向服務(wù)技術(shù)架構(gòu)。隨著這種技術(shù)的廣泛應(yīng)用,如何嚴(yán)格地保證Web服務(wù)的可靠性和安全性成為一項迫切且艱巨的任務(wù)[4-5]。與傳統(tǒng)軟件測試相比,Web服務(wù)的數(shù)量龐大且存在大量的組合需求,很難逐一進(jìn)行手動測試,且容易產(chǎn)生人為錯誤[6]。同時,Web服務(wù)技術(shù)規(guī)范復(fù)雜,服務(wù)的源代碼不可得,不具備可視化圖形界面等特殊性增加了人工測試的難度,亟需提供測試的自動化[7-8]。
在單個Web服務(wù)中聚合了一組函數(shù),其調(diào)用語法定義在相關(guān)聯(lián)的依據(jù)XML(extensible markup language)標(biāo)準(zhǔn)規(guī)范描述的WSDL(Web services description language)文檔中[9-10],描述了服務(wù)操作信息和相應(yīng)的輸入/輸出參數(shù),用戶能夠根據(jù)需求進(jìn)行服務(wù)調(diào)用,同時可以作為引用文檔,展開基于服務(wù)接口的黑盒測試[11-12]。目前,存在一些基于WSDL描述文檔的Web服務(wù)測試工具,例如SoapUI[13]、SOATest[14]、Push-ToTest[15]和TAXI[16]等,可是測試用例的設(shè)計、產(chǎn)生和撰寫仍需要測試人員的大量人工參與,并且缺少對服務(wù)中存在的數(shù)據(jù)組合、約束關(guān)系及操作序列的深入研究,產(chǎn)生的用例冗余度較高,錯誤檢測能力較差,導(dǎo)致測試效率及測試質(zhì)量并沒有得到有效提高。
本文以Web服務(wù)軟件測試用例的自動生成技術(shù)為背景,基于WSDL,對用戶的不同需求場景進(jìn)行覆蓋,結(jié)合傳統(tǒng)軟件測試技術(shù)和方法進(jìn)行分析研究和擴(kuò)展,提出了基于可變力度組合測試模型以及接口契約模型的測試用例生成器系統(tǒng)化框架,運(yùn)用需求驅(qū)動的輸入生成策略,生成Web服務(wù)最優(yōu)測試用例集,達(dá)到覆蓋測試需求,并開發(fā)相應(yīng)的自動化測試工具,建立用例生成及管理、用例運(yùn)行、結(jié)果分析的支撐環(huán)境,為Web服務(wù)自動化測試提供了有力手段,具有十分重要的理論意義和實用價值。
本章通過兩個實例展示現(xiàn)有的軟件存在的問題以及本文提出的測試用例生成器框架的優(yōu)勢,對提高測試的自動化程度和基于組合模型及接口契約關(guān)系的測試用例集優(yōu)化進(jìn)行說明。
圖1是一個簡單的虛擬測試示例服務(wù)的WSDL規(guī)范,描述了兩個指定的操作,分別為operation1和operation2。其中,operation1的輸入?yún)?shù)分為如下三部分:
(1)firstInput∶屬于 XSD(XML schemas definition)定義的復(fù)雜數(shù)據(jù)類型,包含5個子元素,它與子元素之間存在Choice(選擇順序)的完整性約束關(guān)系,且子元素中包含一個約束關(guān)系為All(任意順序)的嵌套復(fù)雜數(shù)據(jù)類型子元素AllElem,如圖1所示。
Fig.1 Element analysis for WSDL document圖1WSDL案例元素解析
(2)secondInput∶屬于XSD定義的一種簡單數(shù)據(jù)類型(string)。
(3)headerPart∶另一個屬于XSD定義的一種簡單數(shù)據(jù)類型(string),用于SOAP(simple object access protocol)消息的頭部。
另一個操作operation2的輸入?yún)?shù)為一個復(fù)雜數(shù)據(jù)類型元素,它與子元素之間存在Sequence(特定順序)的完整性約束關(guān)系。同時,圖1的WSDL規(guī)范還分別定義了這兩個操作的響應(yīng)消息op1Response和op2Response。
當(dāng)使用現(xiàn)有的Web服務(wù)測試工具(以SoapUI為例)執(zhí)行上述WSDL文檔時,將會為每個操作生成獨立的SOAP封裝消息,其中包含了測試的框架及輸入數(shù)據(jù)格式信息,如圖2所示。在該用例框架中,自動生成了SOAP消息的格式標(biāo)簽和輸入數(shù)據(jù)部分的提示注釋信息(如10、14、17行),并以“?”標(biāo)簽的形式預(yù)留了輸入數(shù)據(jù)空間(如5、11~13、15、18~19行)。雖然生成的框架信息能夠指導(dǎo)測試人員操作這些數(shù)據(jù)元素,手動構(gòu)建需要的測試用例,但沒有對復(fù)雜數(shù)據(jù)類型的Sequence、Choice、All元素進(jìn)行處理,以及無法自動生成需要的等價類及邊界值測試數(shù)據(jù),仍需要測試人員承擔(dān)大量復(fù)雜的人工干預(yù)。
Fig.2 Test cases skeleton based on SoapUI圖2 SoapUI生成測試框架
第二個實例同樣以圖1所示的WSDL規(guī)范為例,隨機(jī)生成相應(yīng)的數(shù)據(jù)進(jìn)行實例推導(dǎo)。在上述SOAP消息框架中填補(bǔ)隨機(jī)的數(shù)字類型和字符串類型數(shù)據(jù),使得測試用例能夠有效使用。考慮到輸入數(shù)據(jù)的組合空間問題,創(chuàng)建輸入消息依賴于各部分實例的笛卡爾積之和,但是以此產(chǎn)生的數(shù)據(jù)組合會發(fā)生爆炸,存在大量重復(fù)的實例數(shù)據(jù)。同時,Web服務(wù)通常含有多個操作的情形,存在操作之間的信息交互,僅僅對單個操作進(jìn)行測試是不充分的,而現(xiàn)有的操作序列生成方法并沒有考慮各操作之間的輸入/輸出依賴關(guān)系以及測試路徑中操作的輸出數(shù)據(jù)需要保證序列中后續(xù)操作的輸入合理性。
針對上述問題,本文提出的測試框架中重點研究現(xiàn)有工具的后續(xù)數(shù)據(jù)生成部分工作,通過將WSDL規(guī)范的XSD結(jié)構(gòu)自動實例化,并以傳統(tǒng)軟件測試方法中的等價類劃分及邊界值等策略,自動化生成Web服務(wù)的測試用例,提出處理圖1的例子的解決方案,主要貢獻(xiàn)如下:
(1)復(fù)雜數(shù)據(jù)類型。系統(tǒng)選擇可能的子元素代替輸入?yún)?shù)中存在的復(fù)雜類型數(shù)據(jù)結(jié)構(gòu),如All、Choice、Sequence,自動選取Choice中的每個子元素,隨機(jī)順序ALL中子元素及特定順序Sequence保持生成的數(shù)據(jù)結(jié)構(gòu)的充分性。
(2)數(shù)據(jù)屬性元素。對于occurElem元素,當(dāng)指示符指定元素最大/最小出現(xiàn)次數(shù)分別為3和1時,系統(tǒng)選取3類結(jié)果,取最大值,取最小值和中間值(在非受限情況下,在實例生成前設(shè)置為最大值)。
(3)字符串?dāng)?shù)據(jù)。通過生成標(biāo)準(zhǔn)輸入數(shù)據(jù)處理字符串類型,填補(bǔ)SoapUI測試骨架相應(yīng)標(biāo)簽。
(4)數(shù)據(jù)約束。建立簡單、復(fù)雜數(shù)據(jù)的約束模型,準(zhǔn)確表達(dá)數(shù)據(jù)之間的約束關(guān)系。
(5)單個操作數(shù)據(jù)?;诳勺兞Χ冉M合測試的方法,采用等價類劃分、邊界值分析方法合理生成元素之間的正常、邊界、異常值的組合數(shù)據(jù),覆蓋子元素之間的組合關(guān)系。
(6)操作序列數(shù)據(jù)?;谟邢逘顟B(tài)機(jī)模型生成操作之間存在的合理路徑,并依據(jù)操作之間的接口契約模型生成滿足操作數(shù)據(jù)依賴關(guān)系的操作序列測試數(shù)據(jù)。
上述優(yōu)化措施覆蓋了數(shù)據(jù)類型的解析及測試數(shù)據(jù)的生成,具體流程如圖3所示。
Fig.3 Workflow for test cases generator圖3 測試用例生成器流程
本文工具能夠為Web服務(wù)生成滿足數(shù)據(jù)結(jié)構(gòu)多樣性及數(shù)據(jù)元素有效組合的測試數(shù)據(jù),通過SOAP消息結(jié)構(gòu)封裝相應(yīng)的測試用例實例,發(fā)送請求、接受響應(yīng)、分析結(jié)果以完成測試流程。最終,基于圖1,生成7個結(jié)構(gòu)不同的SOAP消息,部分如圖4所示,之后填充不同的輸入值,產(chǎn)生滿足組合的測試用例集。
Fig.4 Test cases generated by the proposed tool圖4 測試用例生成器流程
依據(jù)案例研究獲取的Web服務(wù)測試需求以及現(xiàn)有測試工具存在的不足,本文提出了Web服務(wù)自動化測試框架,如圖5所示,測試流程依次包括WSDL文檔元素解析、單個操作測試數(shù)據(jù)生成、操作序列測試路徑生成和測試用例執(zhí)行。以WSDL為輸入文件,輸出符合XSD規(guī)范的消息用例集,以SOAP消息執(zhí)行測試用例并收集服務(wù)響應(yīng)結(jié)果。
Fig.5 Web service automation test framework圖5 Web服務(wù)自動化測試框架
依據(jù)上述技術(shù)框架,測試流程從輸入的WSDL文檔模式分析開始,WSDL文檔是一個滿足W3C系統(tǒng)規(guī)范的XML文檔,對外進(jìn)行服務(wù)描述。Tsai等人擴(kuò)展了標(biāo)準(zhǔn)的WSDL文檔,加入了約束信息和語義信息用來增強(qiáng)其描述能力,輔助測試用例生成[17-18]。擴(kuò)展后的WSDL文檔包括內(nèi)置數(shù)據(jù)類型、簡單數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型。簡單數(shù)據(jù)類型由元素<xs:simpleType>定義,它與內(nèi)置數(shù)據(jù)類型之間存在表達(dá)性約束關(guān)系(representation constrains),復(fù)雜數(shù)據(jù)由元素<xs:complexType>定義,復(fù)雜數(shù)據(jù)與子元素之間存在完整性約束關(guān)系(integrity constrains),同時多個子元素之間存在3種指示符關(guān)系,包括Sequence(特定順序)、Choice(選擇順序)、All(任意順序)3種指示符?;赪SDL文檔解析,可以得到對應(yīng)的SOAP封裝消息,目前已有的Web服務(wù)用例生成器均以此填充數(shù)據(jù)產(chǎn)生測試用例集合。然而,依據(jù)第2章案例所示,該類生成器只能為每個操作生成唯一的SOAP信息架構(gòu),而不能覆蓋操作中的復(fù)雜數(shù)據(jù)類型及數(shù)據(jù)屬性模式,無法滿足測試用例設(shè)計的充分性需求。
為了完整地描述單個操作中的各類數(shù)據(jù)元素及元素之間的約束關(guān)系,本文基于文獻(xiàn)[19],構(gòu)建如圖6所示的形式化樹模型(定義1),通過約束模型[20]完整地描述單個操作中各類數(shù)據(jù)元素及元素之間的約束關(guān)系(定義2);并在文獻(xiàn)[21-22]基礎(chǔ)上,構(gòu)建如圖7所示的操作樹模型(定義3),將操作之間部分關(guān)系形式化為一個邏輯上的樹狀結(jié)構(gòu),以展示W(wǎng)eb服務(wù)中操作之間的輸入/輸出依賴關(guān)系。
定義1(形式化樹模型)一個操作的數(shù)據(jù)元素可以表示成一個形式化樹模型的集合T(N,S,B,nr,IC,RC,EE,ED)。其中,N為復(fù)雜數(shù)據(jù)類型中所有子元素名的集合;S為簡單數(shù)據(jù)類型元素名的集合;B為內(nèi)置數(shù)據(jù)類型元素名的集合;nr為復(fù)雜數(shù)據(jù)根節(jié)點的集合;IC為復(fù)雜數(shù)據(jù)根節(jié)點和復(fù)雜數(shù)據(jù)以及復(fù)雜數(shù)據(jù)其子元素之間的刻面約束,即WSDL中定義的完整性約束(基數(shù)約束);RC為簡單數(shù)據(jù)和內(nèi)置數(shù)據(jù)之間的刻面約束,即WSDL中定義的表達(dá)性約束(值域約束);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(數(shù)據(jù)約束模型)
其中,Cardinality和ValueRange定義了數(shù)據(jù)自身屬性的約束關(guān)系,Cardinality基數(shù)約束,是指被約束對象的取值數(shù)量的限制,包括最大、最小和固定的基數(shù)約束,對應(yīng)WSDL文件中的minOccurs和maxOccurs屬性;ValueRange值域約束,是指被約束對象的取值范圍的限制,對應(yīng)WSDL中的Restriction約束的定義;Rule規(guī)則約束,是指被約束對象的屬性之間的比較復(fù)雜的約束關(guān)系,用于定義多個數(shù)據(jù)之間或?qū)傩灾g的約束。該約束關(guān)系根據(jù)范圍又可以細(xì)化為兩種:同一數(shù)據(jù)不同屬性之間的約束關(guān)系innerRules規(guī)則,不同數(shù)據(jù)的屬性之間的約束關(guān)系Rules規(guī)則。上述約束關(guān)系通過規(guī)則語言SWRL(semantic Web rule lan-guage)表示[23]。
Fig.6 Formal tree model圖6 形式化樹模型
Fig.7 Operation tree model圖7 操作樹模型
定義3(Web服務(wù)操作樹模型)一個WSDL文檔中的操作元素O=(Input(O),Output(O))。其中,
為了采集單個操作中的所有結(jié)構(gòu)特征,算法1遍歷形式化樹模型中的DOM節(jié)點,如果該節(jié)點為復(fù)雜數(shù)據(jù)節(jié)點,則根據(jù)其子元素間的指示符關(guān)系,分批生成覆蓋結(jié)構(gòu)特點的SOAP骨架信息集合。對于存在基數(shù)約束的節(jié)點,先獲取該節(jié)點的約束關(guān)系(minOccurs和maxOccurs屬性),然后根據(jù)設(shè)定值進(jìn)行枚舉。算法1在達(dá)到操作覆蓋、消息覆蓋、模式覆蓋后停止執(zhí)行。
算法1 SOAP骨架信息集生成算法
基于圖5提出的Web服務(wù)測試架構(gòu),為了生成SOAP骨架中的預(yù)留數(shù)據(jù),需要考慮簡單數(shù)據(jù)類型值域約束、復(fù)雜數(shù)據(jù)類型子元素組合關(guān)系和數(shù)據(jù)規(guī)則約束3種情況,生成單個操作數(shù)據(jù)的流程如下。
步驟1讀取約束模型Constrains中的值域約束,這些約束規(guī)定了字符串候選的枚舉值、字符串模式、數(shù)值類型的上下邊界等信息。
步驟2根據(jù)單個操作的輸入數(shù)據(jù)和步驟1中獲得的數(shù)據(jù)值域約束,將輸入域進(jìn)行等價類劃分,采用邊界值和隨機(jī)策略生成滿足條件的有效數(shù)據(jù)和無效數(shù)據(jù)。
步驟3根據(jù)復(fù)雜數(shù)據(jù)類型的子元素存在的inner-Rules規(guī)則和可變力度組合測試模型,生成覆蓋數(shù)據(jù)子元素正常、空值、邊界、異常組合力度的復(fù)雜數(shù)據(jù)組合測試數(shù)據(jù),并考慮復(fù)雜數(shù)據(jù)類型的嵌套關(guān)系。
步驟4根據(jù)不同數(shù)據(jù)的屬性之間的約束關(guān)系Rules規(guī)則,分別生成滿足約束和不滿足約束的有效數(shù)據(jù)和無效數(shù)據(jù)。
步驟5按照上述步驟分別為SOAP骨架集中的每個SOAP消息填入覆蓋各類需求的數(shù)據(jù),生成單個操作的測試用例集。
為保證生成測試數(shù)據(jù)的合理性,本節(jié)讀取WSDL描述信息,從中提取各個類型數(shù)據(jù)的值域約束信息(XSD restriction)。之后通過隨機(jī)/邊界策略在值域范圍內(nèi)生成測試數(shù)據(jù)。系統(tǒng)支持的基本數(shù)據(jù)類型包括整數(shù)、布爾值、浮點值、字符串、時間日期、字符串、URL、16進(jìn)制和base64編碼二進(jìn)制數(shù)據(jù)等。
依據(jù)簡單數(shù)據(jù)類型的數(shù)據(jù)生成方法盡管能夠生成不同的多維輸入數(shù)據(jù),但這些數(shù)據(jù)并不能保證對復(fù)雜類型的子元素的取值組合的充分覆蓋。為此,本節(jié)依據(jù)文獻(xiàn)[24-25]提出的組合測試的模型定義,通過One-test-at-a-time策略實現(xiàn)了一個基于可變力度組合模型的復(fù)雜數(shù)據(jù)類型組合測試數(shù)據(jù)生成算法,以覆蓋子元素的組合關(guān)系,見算法2。
算法2 One-test-at-a-time策略基本框架
在服務(wù)應(yīng)用領(lǐng)域,很多數(shù)據(jù)之間存在一定的數(shù)據(jù)規(guī)則約束以表達(dá)業(yè)務(wù)相關(guān)的數(shù)據(jù)特征,如數(shù)值約束、時序約束、結(jié)構(gòu)約束等?;诙x2中Rules規(guī)則,本文采用線性不等式和布爾公式組合的方式描述此類約束關(guān)系。在原子約束的基礎(chǔ)上,通過AND、OR、NOT算子組合成更復(fù)雜、更龐大的約束組。一個服務(wù)實體的整個約束可以用一棵析取和合取樹來表達(dá)。該樹子節(jié)點是一組基本的原子約束,中間節(jié)點是AND、OR或NOT關(guān)系。
每個原子約束是一個線性不等式或布爾表達(dá)式。表達(dá)式由約束變量、常量和運(yùn)算符構(gòu)成。約束變量的定義如下。
定義4(約束變量)
其中,value是變量名,表示一個服務(wù)操作參數(shù)的取值;svc是服務(wù)地址標(biāo)識;operation是操作標(biāo)識;message_xpath是到基本類型數(shù)據(jù)的xpath路徑表達(dá),用以表征一個服務(wù)操作的輸入中不同的子參數(shù)。一個約束變量可以用來表達(dá)服務(wù)參數(shù)的取值,而這些取值又可以表達(dá)數(shù)據(jù)、狀態(tài)等信息。在約束變量的基礎(chǔ)上,可以定義如下的原子約束公式:
該約束公式可以表達(dá)操作參數(shù)之間的數(shù)據(jù)約束關(guān)系。
與面向?qū)ο蟪绦蛟O(shè)計中的類成員方法類似,有狀態(tài)Web服務(wù)中的各個操作之間也可能包含較強(qiáng)的聯(lián)系,存在耦合關(guān)系,一個服務(wù)操作修改的全局性狀態(tài)可能被另一個服務(wù)操作讀取,服務(wù)操作之間可能相互影響,因此僅僅對單個操作進(jìn)行測試是不充分的?;趫D5提出的Web服務(wù)測試架構(gòu),為了生成滿足操作序列路徑的測試用例集,本節(jié)提出了一種有狀態(tài)Web服務(wù)的測試數(shù)據(jù)生成方法。首先基于3.1節(jié)的操作樹模型獲取操作之間的依賴關(guān)系,構(gòu)建操作接口契約模型(定義5);之后采用語義標(biāo)注加入操作的行為信息,通過參考文獻(xiàn)[26]提出的有限狀態(tài)機(jī)模型(enhanced finite state machine,EFSM)(定義6)描述服務(wù)的動態(tài)行為,遍歷生成服務(wù)的操作路徑;最終根據(jù)接口契約模型生成服務(wù)操作序列的測試數(shù)據(jù)。
定義5(操作接口契約模型)
其中,Spec∶<ID,Name,Description> 為操作基本信息的定義(操作編號、操作名稱及操作功能描述);Inputs∶={datai}為輸入?yún)?shù)集合;Outputs∶={datai}為輸出參數(shù)集合;Control-Dependence∶={<ID,Dependencei>}為操作之間的控制依賴關(guān)系,包括順序約束以及時間約束,定義執(zhí)行順序的各種約束條件;Data-Dependence∶={<ID,Dependencei>}定義操作之間的數(shù)據(jù)依賴關(guān)系。
定義6(EFSM的Web服務(wù)形式化模型)它是一個六元組(Q,Σ,Φ,q0,F,QC)。其中,Q是一個有窮集合,叫作狀態(tài)集,每一個狀態(tài)表示交互序列中的歷史記錄或條件判斷記錄;Σ是一個有窮集合,叫作字母表,它是O×I的笛卡爾積集合,I是操作輸入變量的集合,O是操作輸出變量的集合;Φ∶Q×Σ×QC→Q是轉(zhuǎn)移函數(shù),Φ表示下一個狀態(tài),即給定一個狀態(tài),根據(jù)輸入輸出參數(shù)條件,EFSM可以轉(zhuǎn)移到另一個或幾個狀態(tài);q0∈Q是起始狀態(tài);F?Q是接收狀態(tài)集,即用戶與Web服務(wù)結(jié)束交互的狀態(tài)集;QC是狀態(tài)的條件集,其中條件是由狀態(tài)和命題邏輯公式通過聯(lián)接詞組成的表達(dá)式。
根據(jù)定義6的EFSM模型,采用文獻(xiàn)[27]的方法進(jìn)行遍歷能夠自動化獲取操作序列的測試路徑。然而根據(jù)常規(guī)的方法逐個為路徑中的操作生成測試數(shù)據(jù)由于未考慮操作輸入/輸出依賴關(guān)系以及路徑執(zhí)行數(shù)據(jù)的合法性,會導(dǎo)致數(shù)據(jù)設(shè)計存在缺陷。
為了解決上述問題,本節(jié)采用數(shù)據(jù)分區(qū)的方法,對操作的輸入輸出數(shù)據(jù)進(jìn)行合法性校驗,以保證測試路徑的正常執(zhí)行,提高測試數(shù)據(jù)設(shè)計的合理性。其次,根據(jù)定義5的操作契約模型中的數(shù)據(jù)依賴關(guān)系,對測試序列數(shù)據(jù)進(jìn)行匹配,減少不必要的測試數(shù)據(jù)生成。
算法3用例集生成及優(yōu)化算法
本文研制了Web服務(wù)自動化測試工具,包含6個功能模塊,即WSDL解析模塊、SOAP封裝導(dǎo)出、單個操作測試數(shù)據(jù)生成、操作序列測試數(shù)據(jù)生成、用例執(zhí)行和結(jié)果分析、測試用例管理。
WSDL解析:解析WSDL規(guī)范,自動提取有用的信息,如操作、消息和數(shù)據(jù)結(jié)構(gòu)(XSD),并存入形式化模型樹。
SOAP封裝導(dǎo)出:為每個操作自動提取一個獨立SOAP封裝,封裝中不含ready-to-send消息,而只有骨架。之后為骨架中每個數(shù)據(jù)結(jié)構(gòu)生成不同的消息實例,形成實例集,以滿足測試的覆蓋標(biāo)準(zhǔn)。
單個操作測試數(shù)據(jù)生成:通過等價類劃分、邊界值等方法生成滿足模型(組合測試、約束模型)要求的數(shù)據(jù),代替封裝SOAP骨架中的虛擬數(shù)據(jù)。
操作序列測試數(shù)據(jù)生成:根據(jù)有限狀態(tài)機(jī)模型生成Web服務(wù)中存在的操作序列路徑,并依據(jù)接口契約模型中的數(shù)據(jù)依賴關(guān)系選取單個操作的測試數(shù)據(jù)作為操作序列測試的初始數(shù)據(jù)。
用例執(zhí)行和結(jié)果分析:將包含測試數(shù)據(jù)的SOAP消息封裝上傳至服務(wù)地址,根據(jù)服務(wù)響應(yīng)完成接口測試。針對服務(wù)返回的報文進(jìn)行解析,收集用例執(zhí)行結(jié)果,并設(shè)定測試用例預(yù)期結(jié)果與其進(jìn)行比對,完成功能測試。
測試用例管理:測試集模型樹支持XML文件的存儲方式,測試集與測試用例通過數(shù)據(jù)庫進(jìn)行關(guān)聯(lián),測試用例管理支持測試用例的增刪查改,依照具體的服務(wù)和操作為排序標(biāo)準(zhǔn)顯示測試用例來源。
為保證工具系統(tǒng)的靈活性,測試系統(tǒng)采用了如圖8所示的物理結(jié)構(gòu),由如下基本模塊構(gòu)成:測試用例設(shè)計器SOATest、測試任務(wù)執(zhí)行器ServiceExecutor、服務(wù)部署容器SvcHost、黃頁服務(wù)器UDDIServer以及代理轉(zhuǎn)發(fā)網(wǎng)關(guān)RedirectProxy。
Fig.8 Test generation prototype system architecture圖8 測試用例自動生成原型系統(tǒng)體系結(jié)構(gòu)
測試用例設(shè)計器SOATest:負(fù)責(zé)測試用例的設(shè)計、測試結(jié)果的收集等任務(wù),并提供用戶界面,用于編輯和查閱測試用例及其執(zhí)行信息。
測試任務(wù)執(zhí)行器ServiceExecutor:從測試用例設(shè)計器接收測試任務(wù),根據(jù)指定的測試任務(wù)生成SOAP封裝消息報文,將這些報文上發(fā)至目標(biāo)服務(wù),執(zhí)行測試用例。同時提供部署真實和虛擬服務(wù)的服務(wù)容器。
服務(wù)部署容器SvcHost:用于發(fā)布待測服務(wù)和安裝控制虛擬服務(wù)。工具支持多個服務(wù)容器同時分布式部署。
黃頁服務(wù)器UDDIServer:用于發(fā)布服務(wù)信息,所有發(fā)布的服務(wù)注冊、登記在黃頁中,便于檢索和使用。
代理轉(zhuǎn)發(fā)網(wǎng)關(guān)RedirectProxy:用于監(jiān)控不同服務(wù)之間的消息流,支持基于HTTP代理連接和SOCKS代理連接的服務(wù)消息轉(zhuǎn)發(fā)。
工具的執(zhí)行界面如圖9~圖12所示,分別從Web服務(wù)測試用例設(shè)計、測試數(shù)據(jù)生成、操作序列測試數(shù)據(jù)生成及用例測試結(jié)果等多方面對原型系統(tǒng)進(jìn)行展示。
Fig.9 Test cases design interface圖9 測試用例設(shè)計界面
為了覆蓋上述研究內(nèi)容,驗證工具的有效性,本文選擇某型號面向服務(wù)的艦船指控系統(tǒng)軟件作為待測對象,并進(jìn)行了一系列實驗。實驗主要關(guān)注兩個問題:
問題1工具生成測試用例的覆蓋率情況。
問題2工具生成用例集的錯誤檢測能力與已有方法的比較。
本文選取系統(tǒng)軟件中的情報處理服務(wù)作為驗證案例,并覆蓋了無狀態(tài)和有狀態(tài)兩種操作類別,支持的參數(shù)數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)結(jié)構(gòu)。表1列出了實驗中用到的Web服務(wù)中的7個操作。其中信息顯示操作、態(tài)勢顯示操作為無狀態(tài)服務(wù),不具有操作序列,只需根據(jù)其各個操作的輸入輸出參數(shù)類型生成相應(yīng)的測試用例集。情報處理服務(wù)同時包含部分有狀態(tài)操作,這類操作對于同樣的輸入?yún)?shù)得到不同的執(zhí)行結(jié)果,服務(wù)是有狀態(tài)的,因而需要進(jìn)行操作序列的測試。
Fig.10 Test cases generation interface圖10 測試數(shù)據(jù)生成界面
Fig.11 Operation test suite generation interface圖11 操作序列用例集界面
Fig.12 Test case execute results interface圖12 測試用例執(zhí)行結(jié)果界面
Table 1 Statistics information for testing paths set in case表1 案例程序的測試路徑集的信息統(tǒng)計
在實驗過程中,應(yīng)用Web服務(wù)自動化測試框架,首先解析待測服務(wù)描述文件WSDL,構(gòu)建形式化樹模型和操作樹模型。針對服務(wù)中的單個操作測試數(shù)據(jù),依據(jù)輸入?yún)?shù)的數(shù)據(jù)約束模型,生成符合約束規(guī)則和組合力度的測試用例數(shù)據(jù)。之后,對于服務(wù)中的操作序列測試數(shù)據(jù),依據(jù)操作的行為信息,基于構(gòu)建EFSM模型遍歷獲取操作序列測試數(shù)據(jù),生成服務(wù)接口契約模型的依賴關(guān)系的測試用例數(shù)據(jù)。實驗中使用SOAP消息對測試用例進(jìn)行封裝,并通過HTTP進(jìn)行數(shù)據(jù)傳輸,將SOAP請求發(fā)送到該服務(wù)所在的服務(wù)器,處理流程包括測試用例的生成選擇、測試執(zhí)行和測試結(jié)果分析。
針對問題1,利用現(xiàn)有工具的隨機(jī)策略為被測服務(wù)生成500組測試數(shù)據(jù),在生成的測試數(shù)據(jù)中分別為每個服務(wù)選取50,100,150,200,250,300,350,400,450,500組數(shù)據(jù)組成不同大小的測試用例集合。將每個測試用例集合的測試數(shù)據(jù)以SOAP消息的形式封裝,利用工具SoapUI進(jìn)行用例執(zhí)行,并使用商用測評工具LDRATestBed(V 9.5.3)對服務(wù)的源代碼進(jìn)行插樁編譯。之后自動化執(zhí)行上述測試用例集,分別獲取代碼的語句和分支覆蓋率情況,并與本文的工具結(jié)果進(jìn)行比較。
針對問題2,為了證明本文方法在用例錯誤檢測能力以及用例規(guī)模上的優(yōu)勢,首先在被測服務(wù)中植入42個變異體,注入的變異規(guī)則類型分為如下5種。
語句刪除:將不影響服務(wù)代碼編譯成功的聲明進(jìn)行注釋,共產(chǎn)生10個變異體。
布爾值:強(qiáng)制更改語句中的布爾變量值true或false,使得程序判定出錯,共產(chǎn)生12個變異體。
邏輯操作:將程序中邏輯判斷<、<=、>和>=這4種標(biāo)識符更替為其余的3種類型或==標(biāo)識符,共產(chǎn)生8個變異體。
布爾操作:將程序中的布爾判斷==或者!=進(jìn)行更換,共產(chǎn)生8個變異體。
賦值錯誤:更改軟件中的部分變量賦值,共產(chǎn)生4個變異體。
鑒于現(xiàn)有的部分Web服務(wù)測試工具不具備自動生成測試數(shù)據(jù)的功能,在基準(zhǔn)方法比較部分除了與現(xiàn)有工具比較外,還加入了與現(xiàn)有Web服務(wù)用例生成方法的比較,根據(jù)各方法殺死的變異體個數(shù)來衡量用例的錯誤檢測能力。
針對問題1,由于單次生成500組隨機(jī)測試數(shù)據(jù)存在偶然性,本實驗中重復(fù)該策略5次,以減少測試結(jié)果的誤差。通過與隨機(jī)測試用例的覆蓋率情況相比較,本文方法均獲得了更好的語句和分支覆蓋率,具體如圖13、圖14所示。從實驗結(jié)果可以看出,通過隨機(jī)策略生成的測試數(shù)據(jù)存在盲目性,既無法很好地考慮數(shù)據(jù)的結(jié)構(gòu)特征及約束關(guān)系,也無法保證操作序列路徑的有效性,導(dǎo)致程序中存在未能走到的代碼及分支。
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 測試用例及結(jié)果
表2顯示了現(xiàn)有Web服務(wù)測評工具及方法生成的測試用例殺死服務(wù)中變異體的情況。根據(jù)實驗結(jié)果可知,如預(yù)期,本文方法用較少的用例殺死了更多的變異體,表明生成的測試用例擁有較強(qiáng)的針對性。文獻(xiàn)[28]提出的方法雖能完成基于模型的測試用例生成,可是對復(fù)雜數(shù)據(jù)結(jié)構(gòu)考慮不足,生成的用例檢錯能力較差。文獻(xiàn)[29]中馬春燕等人提出的方法雖然檢錯能力較好,可是獲取的用例最多,當(dāng)系統(tǒng)過大時,容易產(chǎn)生組合爆炸,并且用例執(zhí)行耗時較長。文獻(xiàn)[30]中李盛鋼提出的方法獲取最少測試用例,達(dá)到用例約簡的功能,可是用例的錯誤檢測充分性無法保證。文獻(xiàn)[31]提出的方法雖然考慮了元素約束關(guān)系,但是缺少用戶需求組合方面的測試用例設(shè)計,無法滿足測試需求。在測評工具方面,現(xiàn)有的Web服務(wù)商用測評工具更依賴于測試人員手工錄入數(shù)據(jù),文獻(xiàn)[32-33]提出的工具雖然能夠自動生成約簡的測試用例集,可是對數(shù)據(jù)之間的約束關(guān)系和數(shù)據(jù)組合考慮不足,生成的測試用例檢錯能力不強(qiáng)。
此外,據(jù)表2所述,實驗中有些用例無法得到執(zhí)行結(jié)果,其中有部分是由于無效測試用例生成的,而另一部分是由于生成測試路徑測試數(shù)據(jù)時沒有考慮到測試路徑的可行性,有些數(shù)據(jù)可能在路徑之中就由于不合法,導(dǎo)致操作序列用例無法執(zhí)行,無法返回預(yù)期結(jié)果,因此僅僅依賴于單個操作生成測試數(shù)據(jù)的方法是不充分的。針對操作序列測試的驗證,本文根據(jù)服務(wù)需求設(shè)計文檔構(gòu)建業(yè)務(wù)流程剖面,獲取情報執(zhí)行模塊服務(wù)中存在的可執(zhí)行操作序列的路徑為18條,之后采用現(xiàn)有的方法生成操作序列測試數(shù)據(jù),并對操作序列執(zhí)行的覆蓋充分性進(jìn)行分析和計算。各類方法的覆蓋情況見表3。
Table 3 Operation sequence coverage adequacy表3 操作序列覆蓋充分性
文獻(xiàn)[28-29]對于單個操作生成的測試數(shù)據(jù)普遍路徑覆蓋率較低。雖然文獻(xiàn)[7]也提出了運(yùn)用數(shù)據(jù)流的方法加強(qiáng)測試序列的測試,但由于該方法只考慮了少量偶然的操作之間的關(guān)系,導(dǎo)致生成用例的數(shù)量不夠。降低了用例的錯誤檢測能力。文獻(xiàn)[26,33]提出使用模型的方法,可是由于模型的生成依賴于測試人員的經(jīng)驗,生成的數(shù)據(jù)具有嚴(yán)重的不平衡性,降低了測試效率,且沒有考慮到數(shù)據(jù)之間的依賴關(guān)系,簡單地為每一個操作生成測試數(shù)據(jù),會導(dǎo)致用例規(guī)模過于龐大,無法滿足測試需求。因此,本文方法由于考慮了復(fù)雜操作序列的交互過程,避免了服務(wù)實體中仍存在無法測試的路徑。
在當(dāng)前Web服務(wù)測試的研究中,Web服務(wù)被分為無狀態(tài)和有狀態(tài)的Web服務(wù)兩類[4-5]。對于無狀態(tài)服務(wù),Tsai等人在文獻(xiàn)[17]中提出了基于規(guī)約的測試方法,通過擴(kuò)展WSDL文件來添加數(shù)據(jù)依賴關(guān)系,增強(qiáng)其描述能力。已有文獻(xiàn)[35-38]在此基礎(chǔ)上,在多方面展開了基于WSDL的Web服務(wù)測試用例生成研究,包括通過WSDL文件抽象構(gòu)建數(shù)據(jù)類型的抽象模型,復(fù)雜數(shù)據(jù)的約束關(guān)系細(xì)化,基于變異測試技術(shù)的測試數(shù)據(jù)生成。其中,基于樹模型生成數(shù)據(jù)過程沒有考慮用例的約簡,導(dǎo)致通過笛卡爾積方法生成的測試用例容易形成組合爆炸,不利于大規(guī)模開展測試。變異測試需要大量的計算機(jī)資源,并且生成的測試用例取決于變異算子的優(yōu)劣,因此不能作為常規(guī)的測試手段。在有狀態(tài)服務(wù)方面,文獻(xiàn)[7,21,26-27]報道了一些操作序列測試路徑生成的研究,其中操作序列的構(gòu)建和測試數(shù)據(jù)的生成仍然需要依賴手工完成,過程比較繁瑣耗時,且缺少具體的擴(kuò)展應(yīng)用,具有一定的局限性。文獻(xiàn)[39-41]基于含有行為信息的語義Web服務(wù)標(biāo)準(zhǔn),提出了將WSDL-S、OWL-S語義文檔轉(zhuǎn)換成為IOPE圖、EFSM等模型進(jìn)行測試路徑的自動生成,但是這類方法過度依賴語義信息文件,并且沒有考慮如何生成滿足測試路徑的合理路徑,很難得到實際的應(yīng)用。
現(xiàn)今,存在多類專業(yè)面向Web Services的測試商用工具和高效原型工具,大部分與本文工作類似,通過標(biāo)準(zhǔn)WSDL對于服務(wù)操作和它們輸入、輸出參數(shù)的定義可以被服務(wù)接口黑盒測試。但是,現(xiàn)有的Web服務(wù)測試商用工具,如 SoapUI[13]、SOATest[14],需要用戶手工設(shè)計、產(chǎn)生和撰寫測試用例。高效的原型工具,如 WSDLTest[33]、WS-TAXI[32],雖然研究了一些測試數(shù)據(jù)的自動化生成方法,可是開發(fā)的工具不能支持完整的測評過程,且生成數(shù)據(jù)方案并不能很好地滿足測試的數(shù)據(jù)需求,無法進(jìn)行操作序列的測試研究。
從上述研究現(xiàn)狀來看,Web服務(wù)自動化測試方面仍存在很多未解決的難題,盡管存在大量的學(xué)術(shù)研究,可是能夠轉(zhuǎn)化到工業(yè)界的應(yīng)用成果很少,缺少相應(yīng)的工具支撐。本文提出的基于Web服務(wù)自動化測試框架實現(xiàn)Web服務(wù)的自動化測試工具,重點研究WSDL的文檔解析、單個操作的測試數(shù)據(jù)生成以及操作序列路徑生成,相比于已存在的測試工具擁有更完善的測試策略和更系統(tǒng)的測試方法。
由于Web服務(wù)包含大量運(yùn)行狀態(tài)行為和無圖形化界面等特性,自動化生成測試數(shù)據(jù)已經(jīng)成為Web服務(wù)測試迫切需要解決的突出問題。本文研究了一種基于WSDL文檔解析的數(shù)據(jù)實例自動生成框架和工具,收集了所有DOM樹節(jié)點的結(jié)構(gòu)特征和數(shù)據(jù)元素屬性,保證了生成的測試數(shù)據(jù)能夠覆蓋Web服務(wù)各類操作的測試需求,提高了用例設(shè)計的充分性。
為提高用例的錯誤檢測能力,本文工具采用了組合測試和數(shù)據(jù)約束模型相結(jié)合的技術(shù)進(jìn)行測試數(shù)據(jù)的填充及約簡,形成覆蓋需求的測試用例集。同時,采用操作樹模型增強(qiáng)操作的行為信息,通過有限狀態(tài)機(jī)模型(EFSM)描述操作的動態(tài)行為,根據(jù)接口契約模型對Web服務(wù)輸入輸出數(shù)據(jù)進(jìn)行合法性校驗,以保障操作路徑的正確執(zhí)行,從而提高測試數(shù)據(jù)設(shè)計的合理性。今后工作中將進(jìn)一步完善該工具,考慮更多的Web服務(wù)測試需求,增加基于BPEL(business process execution language)的服務(wù)組合測試模塊,并在服務(wù)的壓力測試和性能測試方面進(jìn)行擴(kuò)展,以更全面地支持Web服務(wù)的自動化測試工作。
[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.
附中文參考文獻(xiàn):
[6]許蕾,李言輝,陳林,等.一種面向用戶需求的Web服務(wù)測試方法[J].計算機(jī)學(xué)報,2014,37(3):512-521.
[12]馬春燕,朱怡安,陸偉.Web服務(wù)自動化測試技術(shù)[J].計算機(jī)科學(xué),2012,39(2):162-169.
[19]普杰,李吟,滕士波.可變力度組合測試的Web服務(wù)用例集生成方法[J].指揮控制與仿真,2015,37(4):123-130.
[20]侯可佳,白曉穎,陸?zhàn)?等.基于接口語義契約的Web服務(wù)測試數(shù)據(jù)生成[J].軟件學(xué)報,2013,24(9):2020-2041.
[22]何玲娟,劉連臣,吳澄.一種改進(jìn)的基于WSDL描述的操作相似性度量方法[J].計算機(jī)學(xué)報,2008,31(8):1331-1339.
[24]王子元,徐寶文,聶長海.組合測試用例生成技術(shù)[J].計算機(jī)科學(xué)與探索,2008,2(6):571-588.
[25]王子元,錢巨,陳林,等.基于One-test-at-a-time策略的可變力度組合測試用例生成方法[J].計算機(jī)學(xué)報,2012,35(12):2541-2552.
[30]李盛鋼.一種基于擴(kuò)展WSDL的測試數(shù)據(jù)自動生成方法[D].重慶:西南大學(xué),2010.
[38]姜瑛,辛國茂,單錦輝,等.一種Web服務(wù)的測試數(shù)據(jù)自動生成方法[J].計算機(jī)學(xué)報,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網(wǎng)絡(luò)優(yōu)先出版: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年于蘇州大學(xué)獲得碩士學(xué)位,現(xiàn)為江蘇自動化研究所工程師,主要研究領(lǐng)域為軟件可靠性,軟件測試等。
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年于北京航空航天大學(xué)獲得碩士學(xué)位,現(xiàn)為江蘇自動化研究所高級工程師,主要研究領(lǐng)域為軟件可靠性,軟件測試等。
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年于南京師范大學(xué)獲得碩士學(xué)位,現(xiàn)為連云港職業(yè)技術(shù)學(xué)院教師,主要研究領(lǐng)域為統(tǒng)計分析。