国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

面向WEB服務(wù)的測試用例自動化生成方法

2018-03-04 19:09:00侯俊周紅馬春燕鄭江濱
關(guān)鍵詞:數(shù)據(jù)類型測試用例消息

侯俊, 周紅, 馬春燕, 鄭江濱

(1.西北工業(yè)大學(xué) 研究生院, 陜西 西安 710072; 2.西北工業(yè)大學(xué) 軟件與微電子學(xué)院, 陜西 西安 710072)

Web服務(wù)(web services)[1]是面向服務(wù)的軟件體系架構(gòu)SOA(service objected architecture)中,服務(wù)概念的一種具體表現(xiàn)形式和功能載體,是為因特網(wǎng)上的分布式計算提出的一種基于XML等開發(fā)標(biāo)準(zhǔn)的、松散耦合的、跨平臺的新型軟件構(gòu)件。Web服務(wù)已廣泛應(yīng)用于通信、地理信息系統(tǒng)、電子商務(wù)系統(tǒng)、電子政務(wù)系統(tǒng),以及手持設(shè)備上的應(yīng)用等各個領(lǐng)域,是目前網(wǎng)絡(luò)應(yīng)用軟件系統(tǒng)開發(fā)的主流技術(shù)。

伴隨Web服務(wù)的發(fā)展,Web服務(wù)測試用例的自動生成技術(shù)已成為研究的焦點。鑒于XML Schema數(shù)據(jù)類型的復(fù)雜性,為WSDL服務(wù)的輸入消息編寫測試用例極為繁瑣,目前,針對Web服務(wù)自動化測試技術(shù)國內(nèi)外科技人員已做了大量研究,且取得了一定進(jìn)展。

在理論方面,Ji和Singal等人[2-3]提出了基于WSDL語言的生成測試用例技術(shù)。這些方法的不足在于:沒有基于單個操作輸入消息的數(shù)據(jù)類型生成測試用例,也沒有給出測試用例的自動生成算法。李吟和莊梅玲等人[4-6]提出了基于接口契約的測試方法,但也沒有給出測試用例生成的算法。張卉[7]針對Web系統(tǒng)提出的自動化測試方法,實際上是傳統(tǒng)結(jié)構(gòu)化軟件單個操作測試,或面向?qū)ο筌浖惒僮鳒y試的一個簡單延伸,并沒有針對Web服務(wù)操作輸入消息的數(shù)據(jù)類型展開測試工作。韓璐和周立波[8-9]運用文檔解析技術(shù)為Web服務(wù)生成測試用例,所提出的XML Schema數(shù)據(jù)模型,并沒有依據(jù)操作輸入消息的數(shù)據(jù)類型而定,該測試方案沒有提出從WSDL規(guī)格說明構(gòu)建XML Schema數(shù)據(jù)模型的算法及測試用例自動生成的方法,模型的構(gòu)建和測試用例的生成也需全部用手工完成。

在實踐方面,目前,多家公司和研究機(jī)構(gòu)都對Web服務(wù)測試工具進(jìn)行了探索和研發(fā),如WebInject、SoapUI等?,F(xiàn)有的Web服務(wù)測試工具都要求用戶手工設(shè)計、產(chǎn)生和撰寫測試用例,而測試用例的自動生成則是Web服務(wù)測試自動化的關(guān)鍵所在,本文在研究Web服務(wù)測試相關(guān)理論和技術(shù)的基礎(chǔ)上,提出了一種Web服務(wù)測試用例自動生成方法,并開發(fā)了相應(yīng)的測試用例生成支持工具。

由于Web服務(wù)操作輸入消息的數(shù)據(jù)類型定義可能比較復(fù)雜(例如,長達(dá)數(shù)百行以上),其相關(guān)子類型的定義可能分散在多個文件中,針對Web服務(wù)單個操作輸入消息數(shù)據(jù)類型的特點,本文提出了基于WSDL文檔和形式化模型樹自動生成Web服務(wù)操作測試用例的方法,可大幅節(jié)省人工手動分析WSDL文件中復(fù)雜數(shù)據(jù)類型的時間,以及根據(jù)各內(nèi)建數(shù)據(jù)類型的測試用例手工生成輸入消息測試用例的時間,簡化測試用例的生成過程,大量替代目前手寫完成的測試用例編寫工作。并在Java/Eclipse平臺上,實現(xiàn)了基于該方法的Web服務(wù)測試用例生成工具OTCG。

1 測試用例自動生成方法

1.1 輸入消息模型樹的形式定義

本文將輸入消息模型樹定義為一個7元式:

T=

式中,N表示輸入消息數(shù)據(jù)類型定義中用以表示復(fù)雜類型節(jié)點的有限集合,若節(jié)點為元素定義,則以元素的名字命名;C=Co∪Ca∪Cs∪Cc:Co為控制其子節(jié)點出現(xiàn)次數(shù)的控制節(jié)點的有限集合;Ca為限定其子節(jié)點以無序方式出現(xiàn)的控制節(jié)點的有限集合;Cs為限定其子節(jié)點以有序方式出現(xiàn)的控制節(jié)點的有限集合;Cc為限定其子節(jié)點以選擇方式出現(xiàn)的控制節(jié)點的有限集合;D表示輸入消息數(shù)據(jù)類型定義中,簡單數(shù)據(jù)類型節(jié)點的有限集合,其中包含XML Schema內(nèi)建數(shù)據(jù)類型定義的簡單數(shù)據(jù)類型,節(jié)點以簡單數(shù)據(jù)類型的名字命名;nr∈N表示根節(jié)點,此處將輸入消息以根節(jié)點的形式建模,以輸入消息的名字命名;RC表示集合D與D中元素之間的約束表達(dá)式的集合,它展現(xiàn)了簡單數(shù)據(jù)類型與簡單數(shù)據(jù)類型之間的約束;ED表示D中各元素之間有限邊的集合,將一條邊e記為e(p,x,c),其中p∈N∪D,c∈D,x∈RC∪{⊥}。EE表示N∪C中的元素與N∪C∪D中元素之間有限邊的集合,其中一條邊e記為e(p,c),其中p∈N∪C,c∈N∪C∪D。

C中的Ca,Cs,Cc分別對應(yīng)XML Schema中,架構(gòu)元素all、sequence和choice。Ca限定其子元素必須全部出現(xiàn),但出現(xiàn)的次序可按任意次序;Cs限定其子元素必須按照次序全部出現(xiàn);Cc限定其子元素只能選擇性出現(xiàn)一個。

RC中約束表達(dá)式可以是表1中10種約束條件之一。

表1 約束條件列舉

續(xù)表1

約束名稱約束值類型約束含義maxLenght非負(fù)整型限定取值長度不大于約束值minLenght非負(fù)整型限定取值長度不小于約束值totalDigits非負(fù)整型限定數(shù)值型取值位數(shù)為約束值fractionDigits非負(fù)整型限定數(shù)值型取值小數(shù)位數(shù)為約束值length非負(fù)整型限定取值長度不等于約束值

1.2 輸入消息模型樹的構(gòu)造算法

解析預(yù)處理過的WSDL規(guī)格說明中types元素的定義,在生成的模型樹中,輸入消息被建模為模型樹的根節(jié)點,復(fù)雜元素的定義被解析為復(fù)雜類型節(jié)點,并加入集合N;對子元素或子屬性出現(xiàn)次數(shù)的限定以及架構(gòu)元素all、sequence、choice被解析為控制節(jié)點,并分別加入集合Co、Ca、Cs、Cc;屬性的定義被解析為簡單類型節(jié)點,被加入集合D。其中集合N、C中的節(jié)點為中間節(jié)點,集合D中的節(jié)點為葉節(jié)點。輸入消息模型樹的構(gòu)造算法的執(zhí)行流程如圖1所示:

圖1 輸入消息模型樹的構(gòu)造算法流程圖

對于圖2中所示XML Schema數(shù)據(jù)類型定義文檔,經(jīng)上述算法構(gòu)建的輸入消息模型樹如下所示。圖3為該模型樹的圖形表示。

N={schema,element-物業(yè),element-單元,element-物業(yè)-complexType,complexType-物業(yè)單元,complexType-物業(yè)單元-annotation,complexType-物業(yè)單元-documentation };

C=Co∪Ca∪Cs∪Cc:Co={element-單元-occur},Ca=?,Cs={element-物業(yè)-sequence},Cc={element-物業(yè)單元-choice};

D={string-名稱,int-編號};

RC={x1,x2},其中x1=?,x2={(maxInclusive,58 000),(minInclusive,10 000)}

nr=schema。

elementFormDefault="qualifled"attributeFormDefault="unqualified">

以下3種元素在choice中表現(xiàn)為互斥選擇關(guān)系

圖2 XML Schema數(shù)據(jù)類型定義實例

1.3 測試用例生成算法

為了獲取輸入消息的測試用例集,首先為集合B中內(nèi)建數(shù)據(jù)類型節(jié)點產(chǎn)生測試用例集,即為輸入消息類型模型樹的葉子節(jié)點產(chǎn)生,測試用例集;然后自下而上遍歷模型樹,依據(jù)節(jié)點之間的關(guān)系,為集合N∪C中的中間節(jié)點和根節(jié)點產(chǎn)生測試用例集;最后獲取根節(jié)點的測試用例集,即獲取輸入消息的測試用例集。下面闡述為輸入消息產(chǎn)生測試用例生成的方法。

圖3 輸入消息模型樹圖形化實例

1.3.1 生成集合D中簡單數(shù)據(jù)類型節(jié)點的測試用例

對于集合D中的簡單數(shù)據(jù)類型節(jié)點,集合RC提供了其對于基類的約束條件,因此,集合D中節(jié)點的測試用例集,是在其基類測試用例集的基礎(chǔ)上,施加RC中的約束來產(chǎn)生。求解測試用例集的過程中,需要依據(jù)一定的黑盒測試策略(即邊界值測試,等價類測試,或隨機(jī)測試)。本節(jié)將綜合邊界值測試、等價類測試和隨機(jī)測試等策略,給出簡單數(shù)據(jù)類型節(jié)點的測試用例生成算法。

根據(jù)XML Schema中數(shù)據(jù)類型的派生結(jié)構(gòu),可將簡單數(shù)據(jù)類型按其基類劃分為六大類,分別為:字符串類型、數(shù)值類型、邏輯類型、URI類型、二進(jìn)制數(shù)類型和時間值類型。定義基類型集合為DB={字符串類型,數(shù)值類型,邏輯類型,URI類型,二進(jìn)制數(shù)類型,時間值類型},則XML Schema中其他數(shù)據(jù)類型c,都可通過邊e(p,r,c)進(jìn)行定義,其中p∈DB,r∈RC。

定義約束類型集合

R={enumeration,minExclusive,maxExclusive,minInclusive,maxInclusive,maxLenght,minLenght,totalDigits,fractionDigits,length}

則任何簡單數(shù)據(jù)類型均可由約束集×R限定,其中b∈DB,×表示集合的笛卡爾積。

若為所有r∈(×R)選擇對應(yīng)的黑盒測試策略,設(shè)針對約束ri使用對應(yīng)黑盒測試策略生成的測試數(shù)據(jù)集為DRi,則對于任意簡單數(shù)據(jù)類型,其測試用例集可表示為:

{d|d∈(DR0∪DR1∪…∪DR9)}

(1)

表2給出了針對數(shù)值類型約束的測試策略集,即( {數(shù)值類型}×R),以及應(yīng)用對應(yīng)的測試策略生成的測試數(shù)據(jù):

表2 各約束條件的測試策略

1.3.2 生成集合N中復(fù)雜數(shù)據(jù)類型節(jié)點的測試用例

對于任意復(fù)雜數(shù)據(jù)類型,其測試用例可表示為節(jié)點測試用例集的復(fù)合。為盡量提高測試效率,且便于對測試錯誤的準(zhǔn)確捕捉,在復(fù)合子節(jié)點測試用例時,須保證每個無效測試用例只能包含單一類型的無效數(shù)據(jù);而對于有效測試用例則盡量包含多種類型的有效數(shù)據(jù)。

對于任意復(fù)雜數(shù)據(jù)類型節(jié)點n∈N,設(shè)其子節(jié)點集合為CH,集合元素數(shù)量為chcount,對于任意chi∈CH(1≤i≤chcount),其有效測試用例集表示為DCi,集合元素數(shù)量為ci,無效測試用例集表示為DEi,集合元素數(shù)量為ei。用DC表示節(jié)點n的有效測試用例集合,集合元素數(shù)量為dccount,用DE表示節(jié)點n的無效測試用例集合,集合元素數(shù)量為decount,則:

(2)

對于任意集合A,用A[i]表示其第i個元素,則節(jié)點n的有效測試用例DC[k]的生成算法可描述為:

(3)

節(jié)點n無效測試用例DE[k]的生成算法可描述為:

步驟1 令t=false,i=1;

步驟2 若對于子節(jié)點CH[i],存在未被引用過的無效測試用例DEi[j],則:

DE[k]=DE[k]∪DEi[j],t=true;

否則:

DE[k]=DE[k]∪DCi[1];

步驟3 若i>chcount:則算法結(jié)束;否則i=i+1,跳轉(zhuǎn)步驟2。

1.3.3 生成集合N中復(fù)雜數(shù)據(jù)類型節(jié)點的測試用例

控制節(jié)點在輸入消息模型樹中,負(fù)責(zé)以一定的限制規(guī)則復(fù)合其子節(jié)點的測試用例,從而形成更為復(fù)雜的測試用例集。集合C中的節(jié)點可視為集合N中節(jié)點的特殊形式。集合C中的節(jié)點可分為四個子集,分別表示為Co,Ca,Cs,Cc以下分別介紹4種節(jié)點測試用例的生成算法。

對集合Co,節(jié)點在模型樹中用以限制其子節(jié)點的出現(xiàn)次數(shù),且僅能包含唯一的子節(jié)點。對于任意Co中的節(jié)點n,限定其子節(jié)點出現(xiàn)次數(shù)o滿足(minOccur≤o≤maxOccur),其中minOccur為非負(fù)整數(shù),maxOccur為正整數(shù)或無窮大。根據(jù)等價類劃分策略,對Co中節(jié)點測試數(shù)據(jù)出現(xiàn)次數(shù)o進(jìn)行等價類劃分,如表3所示。

表3 Co中節(jié)點的子節(jié)點出現(xiàn)情況等價類劃分

因此,Co中節(jié)點的測試用例集可分為兩部分,分別為根據(jù)o的等價類所生成的測試用例,和保持o取值有效的情況下,子節(jié)點的測試用例集。

對集合Ca,Cs中節(jié)點,在模型樹中用以限制其子節(jié)點出現(xiàn)的次序,Ca中節(jié)點的子節(jié)點可按任意次序出現(xiàn),Cs中節(jié)點的子元素必須依次出現(xiàn),無論是Ca中還是Cs中,節(jié)點的子節(jié)點都必須全部出現(xiàn),不能缺失。根據(jù)等價類劃分策略,對Ca,Cs中節(jié)點的子節(jié)點出現(xiàn)情況做等價類劃分,分別如表4和表5所示。

表4 Ca中節(jié)點的子節(jié)點出現(xiàn)情況等價類劃分

表5 Cs中節(jié)點的子節(jié)點出現(xiàn)情況等價類劃分

集合Cc中的節(jié)點,在模型樹中用以限制其子節(jié)點,以選擇形式出現(xiàn),即每個測試用例中,必須出現(xiàn)Cc中的子節(jié)點之一,且僅能出現(xiàn)其子節(jié)點之一,根據(jù)等價類劃分策略,對Cc中子節(jié)點出現(xiàn)情況做等價類劃分,如表6所示。

表6 Cc中節(jié)點的子節(jié)點出現(xiàn)情況等價類劃分

2 算法實現(xiàn)與實驗結(jié)果

基于對開發(fā)難度、可移植性和可擴(kuò)展性的綜合考慮,本文采用Java編程語言在Eclipse集成開發(fā)環(huán)境基于Jdk1.8開發(fā)Web服務(wù)的測試用例自動化生成工具OTCG,實現(xiàn)XML文件解析模塊、文檔結(jié)構(gòu)分析模塊、測試用例生成模塊以及結(jié)果處理模塊。OTCG工具頂層架構(gòu)如圖4所示。

同時,本文采用有針對性的實驗數(shù)據(jù)通過對于不同的XML Schema架構(gòu)元素的解析測試,共進(jìn)行7組實驗,覆蓋15種架構(gòu)元素。實驗結(jié)果表明,本文提出的測試用例生成方法在很大程度上簡化了測試用例的生成過程,大量替代目前手工完成的測試用例編寫工作,使測試人員僅用完成模型樹中葉節(jié)點的測試用例集編寫,就可以得到自動生成的根節(jié)點測試用例集,對測試用例自動生成方法具有廣泛借鑒意義。具體實驗情況如表7所示。

3 結(jié) 論

本文提出了一種基于WSDL文檔和形式化模型樹自動生成Web服務(wù)操作測試用例的方法。首先給出了輸入消息模型樹的形式化定義及模型樹的構(gòu)造算法,接著給出以輸入消息模型樹為基礎(chǔ)的測試用例生成算法,成功地將以嵌套結(jié)構(gòu)數(shù)據(jù)類型定義的解析,簡化為對單個架構(gòu)元素的解析,實現(xiàn)測試用例的自動化生成。實驗結(jié)果表明,本方法在很大程度上簡化了測試用例的生成過程,能大量替代目前以手工完成的測試用例編寫工作,大幅提高了Web服務(wù)測試用例生成的效率。

[1] Mouli Varsha R, Jevitha K P. Web Services Attacks and Security——A Systematic Literature Review[J]. Procedia Computer Science,2016,93: 870-877

[2] Ji S, Li B, Zhang P. Test Case Selection for Data Flow Based Regression Testing of BPEL Composite Services[C]∥IEEE International Conference on Services Computing, 2016: 547-554

[3] Singal P, Mishra A K, Singh L. Test Case Selection for Regression Testing of Applications Using Web Services Based on WSDL Specification Changes[C]∥ICCCA, 2015: 908-913

[4] 李吟. 基于接口契約的有狀態(tài)Web服務(wù)用例集生成[J]. 計算機(jī)研究與發(fā)展,2017(3):609-622

Li Yin. Test Suite Generating for Stateful Web Services Using Interface Contract[J]. Journal of Computer Research and Development, 2017(3): 609-622 (in Chinese)

[5] 李吟,方建勇. 面向需求覆蓋的Web服務(wù)自動化測試框架[J]. 計算機(jī)科學(xué)與探索, 2017, 11(11): 1747-1763

Li Yin, Fang Jianyong. Requirement Coverage Oriented Automatic Testing Framework for Web Services[J]. Journal of Frontiers of Computer Science and Technology, 2017, 11(11): 1747-1763 (in Chinese)

[6] 莊梅玲. Yeepay接口自動化測試系統(tǒng)的設(shè)計與實現(xiàn)[D]. 南京:南京大學(xué),2016

Zhuang Meiling. Test Design and Implementation of Yeepay′s Automated System of API[D]. Nanjing, Nanjing University, 2016 (in Chinese)

[7] 張卉. Web應(yīng)用系統(tǒng)自動化軟件測試技術(shù)研究[D]. 曲阜: 曲阜師范大學(xué),2016

Zhang Hui. Research on Web Application System Automation Software Testing Technology[D]. Qufu, Qufu University,2016 (in Chinese)

[8] 韓璐. 基于Web用戶行為的測試用例生成技術(shù)研究與實現(xiàn)[D]. 鄭州:鄭州大學(xué),2016

Han Lu, Research and Implementation of Test Case Generation Technology Based on Web Users′ Behavior[D]. Zhengzhou, Zhengzhou University,2016 (in Chinese)

[9] 周立波. 基于文檔解析和約束求解的組合Web服務(wù)測試用例生成[D]. 南京:南京大學(xué),2015

Zhou Libo. Composite Web Service Test Cases Generation Based on Parsing XML Documents and Solving Constraints[D]. Nanjing, Nanjing University,2015 (in Chinese)

猜你喜歡
數(shù)據(jù)類型測試用例消息
詳談Java中的基本數(shù)據(jù)類型與引用數(shù)據(jù)類型
基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
如何理解數(shù)據(jù)結(jié)構(gòu)中的抽象數(shù)據(jù)類型
一張圖看5G消息
基于混合遺傳算法的回歸測試用例集最小化研究
基于依賴結(jié)構(gòu)的測試用例優(yōu)先級技術(shù)
消息
消息
消息
軟件回歸測試用例選取方法研究
鲜城| 株洲县| 托克逊县| 邹城市| 宝山区| 手游| 遂平县| 商都县| 双桥区| 塔城市| 白城市| 当阳市| 榕江县| 肃南| 新河县| 司法| 康乐县| 大港区| 桃园市| 中卫市| 双桥区| 惠州市| 安义县| 栖霞市| 桓台县| 涞源县| 千阳县| 襄城县| 林口县| 德庆县| 酉阳| 吴江市| 玛纳斯县| 项城市| 红原县| 朝阳市| 伊川县| 灵宝市| 衢州市| 襄垣县| 黔南|