• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Web服務(wù)編排場(chǎng)景的XML Schema消息類(lèi)型精化

    2017-02-27 10:58:41楊紅麗
    關(guān)鍵詞:精化指示器測(cè)試數(shù)據(jù)

    王 瑾 馬 凱 楊紅麗

    (北京工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 北京 100124)

    Web服務(wù)編排場(chǎng)景的XML Schema消息類(lèi)型精化

    王 瑾 馬 凱 楊紅麗

    (北京工業(yè)大學(xué)計(jì)算機(jī)學(xué)院 北京 100124)

    Web服務(wù)(Web Services)編排描述了Web服務(wù)組合的交互行為,在實(shí)際開(kāi)發(fā)中,Web服務(wù)組合的實(shí)現(xiàn)可能存在交互的數(shù)據(jù)類(lèi)型、交互序列與編排規(guī)范不相符的情況,為了測(cè)試Web服務(wù)(組合)與編排的相符性,需要從編排規(guī)范生成測(cè)試用例。由于編排場(chǎng)景描述了編排中各個(gè)參與方的交互序列及其交互消息的XML Schema類(lèi)型,從而可以根據(jù)場(chǎng)景中的XML Schema類(lèi)型生成測(cè)試數(shù)據(jù)。由于XML Schema類(lèi)型中指示器的作用導(dǎo)致類(lèi)型的不確定性,需要解決XML Schema類(lèi)型精化問(wèn)題,為此提出了基于組合測(cè)試的XML Schema類(lèi)型精化方法。通過(guò)定義XML Schema類(lèi)型樹(shù),給出了基于組合測(cè)試工具Cascade的類(lèi)型精化算法,并通過(guò)實(shí)例表明該方法的有效性。

    Web服務(wù)編排 XML Schema 指示器 類(lèi)型精化 組合測(cè)試

    0 引 言

    Web服務(wù)是針對(duì)因特網(wǎng)上分布計(jì)算提出的一種基于開(kāi)放標(biāo)準(zhǔn)、松散耦合及跨平臺(tái)的新型軟件構(gòu)件。但是單個(gè)Web服務(wù)已經(jīng)越來(lái)越難以滿(mǎn)足人們?nèi)找鎻?fù)雜的業(yè)務(wù)需求,Web服務(wù)組合應(yīng)運(yùn)而生。服務(wù)編排是從全局的角度描述Web服務(wù)組合之間的交互,從而確保服務(wù)組合各個(gè)參與方能夠協(xié)調(diào)完成一項(xiàng)業(yè)務(wù)邏輯。

    編排結(jié)構(gòu)多樣,數(shù)據(jù)類(lèi)型復(fù)雜。國(guó)外的很多研究組都對(duì)編排進(jìn)行了研究,文獻(xiàn)[1-4]提出了基于模型檢查的方法驗(yàn)證服務(wù)編排;大部分工作著眼于編排的建模與模型檢查,驗(yàn)證的方法可以確保編排規(guī)范和角色需求的正確性,而測(cè)試可以保證在源碼不可知只能獲得實(shí)現(xiàn)端的接口時(shí),編排實(shí)現(xiàn)的正確性,而基于編排的相符性的測(cè)試研究工作還很不成熟。本課題組提出了基于編排場(chǎng)景的Web服務(wù)組合的相符性測(cè)試框架[1],編排場(chǎng)景可以理解為多個(gè)角色之間的確定的交互序列(不含選擇、循環(huán))[6]。根據(jù)編排中的控制流活動(dòng)抽取一組編排場(chǎng)景,每個(gè)編排場(chǎng)景的交互序列一定,從而在編排場(chǎng)景上進(jìn)行測(cè)試。

    編排場(chǎng)景不僅描述了多個(gè)參與方的交互序列,還定義了交互的數(shù)據(jù)類(lèi)型,這些類(lèi)型被定義在XML Schema中。而相符性測(cè)試的測(cè)試數(shù)據(jù)由場(chǎng)景中的XML Schema產(chǎn)生。由于XML Schema中存在choice、minOccurs和maxOccurs這樣的指示器,造成變量類(lèi)型的多樣化,因此在生成測(cè)試數(shù)據(jù)之前要先對(duì)XML Schema中的指示器進(jìn)行劃分。多個(gè)指示器存在時(shí),需要對(duì)劃分的子類(lèi)型進(jìn)行組合,如果采用全排列的組合方式容易造成組合爆炸,產(chǎn)生昂貴的測(cè)試代價(jià)[7-9]。本文采用了組合測(cè)試的思想對(duì)子類(lèi)型的劃分進(jìn)行組合,并將組合后的數(shù)據(jù)轉(zhuǎn)換為一組類(lèi)型確定的類(lèi)型樹(shù),為測(cè)試數(shù)據(jù)的生成奠定基礎(chǔ)。首先,將XML Schema解析成類(lèi)型樹(shù),方便與組合測(cè)試工具進(jìn)行模型轉(zhuǎn)換,然后通過(guò)遍歷類(lèi)型樹(shù)邊的指示器信息,對(duì)不同指示器進(jìn)行不同的處理,得到相應(yīng)組合測(cè)試工具輸入模型,通過(guò)組合測(cè)試工具的組合,得到的一組輸出模型,再將輸出值轉(zhuǎn)化為一組對(duì)應(yīng)的精化后的類(lèi)型樹(shù)。

    1 相關(guān)概念

    1.1 編排場(chǎng)景

    定義1 編排場(chǎng)景S是一個(gè)四元組:

    S=

    其中,R是角色聲明的有限集,分為被測(cè)服務(wù)和測(cè)試樁;I是交互類(lèi)型的有限集,被定義在外部的XML Schema中;V是變量聲明的有限集,每一個(gè)變量都對(duì)應(yīng)I中的一個(gè)變量;A是交互序列的有限集,分為請(qǐng)求型Request{R1.x op R2.y Guard}和響應(yīng)型Response{R1.x op R2.x Guard}。Request{R1.x op R2.y Guard}是指在滿(mǎn)足Guard前置條件的基礎(chǔ)上,將R1上的x變量通過(guò)操作op傳給R2的y變量;Response{R1.x op R2.x Guard}是指在滿(mǎn)足Guard前置條件的基礎(chǔ)上,將R2的變量y通過(guò)op操作傳給R1的x變量。

    圖1 成功購(gòu)買(mǎi)場(chǎng)景

    圖1的UML時(shí)序圖描述了購(gòu)買(mǎi)成功的場(chǎng)景。場(chǎng)景中包含客戶(hù)、網(wǎng)上商城、庫(kù)存和銀行四個(gè)角色。交互流程為:客戶(hù)發(fā)送訂單請(qǐng)求給網(wǎng)上商城;網(wǎng)上商城向庫(kù)存發(fā)送庫(kù)存檢查信息;庫(kù)存將檢查結(jié)果發(fā)送給商城;商城發(fā)送訂單完成的信息給客戶(hù)??蛻?hù)發(fā)送銀行信息給商城;商城將付款信息發(fā)送給銀行;銀行向商城發(fā)送付款完成信息;商城發(fā)送訂購(gòu)成功信息給客戶(hù)。

    1.2 XML Schema類(lèi)型劃分

    XML Schema[10]是用于描述和規(guī)范XML文檔邏輯結(jié)構(gòu)的一種語(yǔ)言,通過(guò)指示器來(lái)控制元素的使用方式。指示器導(dǎo)致了變量類(lèi)型的多樣性,尤其是choice、minOccurs、maxOccurs三種指示器。表1給出了這三種指示器的劃分規(guī)則。

    表1 指示器類(lèi)型劃分規(guī)則

    1) 當(dāng)出現(xiàn)choice指示器時(shí),someElement可以選擇c1、c2、c3、…,將其分別劃分為someElement子元素為c1、c2、c3、…多個(gè)子類(lèi)型。

    2) 當(dāng)出現(xiàn)minOccurs=″k1″ maxOccurs=″k2″指示器時(shí),someElement最少可以出現(xiàn)k1次,最多可以出現(xiàn)k2次,將其劃分為三個(gè)子類(lèi)型,分別為minOccurs=″k1″ maxOccurs =″k1″, minOccurs=″k2″ maxOccurs=″k2″,minOccurs=″k″ maxOccurs= ″k″ (k1

    3) 當(dāng)出現(xiàn)minOccurs=″k1″ maxOccurs=″unbound″指示器時(shí),將其劃分為兩種子類(lèi)型:minOccurs=″k1″ maxOccurs =″k1″,minOccurs=″k1+1″ maxOccurs =″k1+1″。

    通過(guò)相應(yīng)的劃分規(guī)則,得到結(jié)構(gòu)確定的子類(lèi)型,并且使得該子類(lèi)型一定滿(mǎn)足XML Schema類(lèi)型定義。當(dāng)一個(gè)XML Schema中存在多個(gè)指示器時(shí),對(duì)每個(gè)指示器進(jìn)行劃分并且重新組合,可以得到一組類(lèi)型確定并滿(mǎn)足初始XML Schema類(lèi)型的子類(lèi)型。如果采用全排列的方式對(duì)劃分后的元素進(jìn)行重組,勢(shì)必會(huì)產(chǎn)生一組數(shù)量龐大的子類(lèi)型,為了解決這個(gè)問(wèn)題,本文引入了組合的測(cè)試方法對(duì)劃分的子類(lèi)型進(jìn)行組合。

    1.3 組合測(cè)試方法

    組合測(cè)試方法旨在應(yīng)用較少的測(cè)試用例有效地檢查軟件系統(tǒng)中各個(gè)因素以及它們之間的互相作用對(duì)系統(tǒng)產(chǎn)生的影響。

    針對(duì)具體待測(cè)軟件,在滿(mǎn)足給定組合覆蓋要求的前提下,生成規(guī)模盡可能小的測(cè)試用例集,以便在保證錯(cuò)誤檢測(cè)能力的前提下盡可能降低測(cè)試成本。

    組合測(cè)試中的基本概念包括:

    (1) 變量,表示軟件的輸入;

    (2) 水平,表示變量的取值;

    (3) 強(qiáng)度,表示變量之間相互作用的強(qiáng)度。

    Cascade[11]是一款組合測(cè)試用例生成工具,工具支持的變量類(lèi)型有:string、integer、double。變量的水平由用戶(hù)輸入。用戶(hù)可以輸入蘊(yùn)含表達(dá)式對(duì)用例的生成進(jìn)行約束,表達(dá)式支持字符串以及數(shù)值的比較,支持邏輯和算數(shù)運(yùn)算符。

    Cascade蘊(yùn)含式約束的引入可以人為的減少無(wú)效組合的出現(xiàn),有效提高用例集質(zhì)量。Cascade的約束表達(dá)式有兩種形式:

    (1) expA -> expB 表示A蘊(yùn)含B,即若表達(dá)式A成立,那么B也必須成立。

    (2) expA##(param_list), 表示如果表達(dá)式expA成立,那么param_list集合中的參數(shù)無(wú)意義,不參加組合。

    下面給出Cascade的輸入和輸出模型定義:

    定義2 Cascade的輸入模型

    (1) { (Vi,Li) |i=1,2,…,n}。其中n為自然數(shù)。每個(gè)Vi都是一個(gè)變量,Li是該變量的水平。整個(gè)集合可以看作包含了多個(gè)VL對(duì),每個(gè)VL表示一個(gè)指示器的劃分;

    (2) Cons,約束表達(dá)式的集合。

    定義3 Cascade的輸出模型

    表示為{ |l1∈L1,l2∈L2,…,ln∈Ln}。集合中每個(gè)元素都表示了一種變量取值的組合情況。

    1.4 類(lèi)型樹(shù)

    為了方便將場(chǎng)景交互類(lèi)型XML Schema類(lèi)型與組合測(cè)試工具進(jìn)行轉(zhuǎn)換,需要對(duì)XML Schema類(lèi)型建模。本文用樹(shù)模型表示XML Schema類(lèi)型,稱(chēng)為XML Schema類(lèi)型樹(shù),簡(jiǎn)稱(chēng)類(lèi)型樹(shù),在類(lèi)型精化的過(guò)程中只需關(guān)注類(lèi)型樹(shù)邊上的指示器約束信息。下面給出類(lèi)型樹(shù)及精化后類(lèi)型樹(shù)的定義。

    定義4 XML Schema類(lèi)型樹(shù)定義為一個(gè)四元組:

    T=

    其中,N是元素節(jié)點(diǎn)和控制節(jié)點(diǎn)的有窮集合,控制節(jié)點(diǎn)分為

    sequence和choice兩種。

    r是樹(shù)的根節(jié)點(diǎn)。

    C是節(jié)點(diǎn)之間的指示器約束集合,本文涉及minOccurs、maxOccurs和choice三種指示器。其中指示器約束可以取以下約束中的一種或多種:

    (1) True;

    (2) (m=0,1,…,m),表示了元素出現(xiàn)的最少次數(shù)為m,這里m為自然數(shù);

    (3) (n=0,1,…,unbounded),表示元素出現(xiàn)的最多次數(shù)為n,可以取任意自然數(shù)或unbounded;

    (4) ,b是choice指示器中子元素其中的一個(gè)。

    E是邊的有窮集合。邊可以表示為e(m,c,n),其中c∈C,m∈N∪r,n∈N。

    圖2是圖1中第一個(gè)交互中訂單請(qǐng)求的XML Schema所對(duì)應(yīng)的類(lèi)型樹(shù)。purchaseOrder是該類(lèi)型樹(shù)的根節(jié)點(diǎn)。purchaseOrder_sequence、coupon_choice和goods_sequence是控制節(jié)點(diǎn),其他節(jié)點(diǎn)均為元素節(jié)點(diǎn)。每一條邊上都有一種或多種指示器約束。例如邊e1對(duì)應(yīng)的約束c1&&表示coupon元素最少出現(xiàn)0次,最多出現(xiàn)1次;邊e4對(duì)應(yīng)的約束c4中表示cashback是coupon_choice指示器中的一個(gè)分支,&&表示coupon_choice可以出現(xiàn)最少0次,最多2次。

    圖2 訂單類(lèi)型樹(shù)

    2 XML Schema類(lèi)型精化算法

    2.1 XML Schema類(lèi)型精化過(guò)程

    如圖3所示,是XML Schema類(lèi)型精化的過(guò)程,包括四部分內(nèi)容。

    圖3 XML Schema類(lèi)型精化過(guò)程

    (1) 從場(chǎng)景中抽取XML Schema及衛(wèi)士信息(Guard), 通過(guò)分析文件中的XML Schema,提取指示器信息,生成相應(yīng)的類(lèi)型樹(shù)模型。

    (2) 對(duì)解析生成的XML Schema類(lèi)型樹(shù)調(diào)用treeToCascade算法遍歷類(lèi)型樹(shù)邊上的約束信息,生成Cascade組合測(cè)試工具的輸入模型。

    (3) 通過(guò)Cascade的組合,得到一組輸出數(shù)據(jù),每一組數(shù)據(jù)代表類(lèi)型樹(shù)約束信息的確定取值,即Cascade的輸出模型。

    (4) 對(duì)輸出的每組數(shù)據(jù)調(diào)用toTrees算法生成一個(gè)精化的類(lèi)型樹(shù),得到一組精化的類(lèi)型樹(shù)集合。精化后的類(lèi)型樹(shù)中每個(gè)指示器信息都為確定值。

    2.2 treeToCascade算法

    treeToCascade算法是以類(lèi)型樹(shù)模型為輸入,通過(guò)遍歷邊上的指示器信息,將其自動(dòng)轉(zhuǎn)化為Cascade的輸入數(shù)據(jù)VL對(duì)和相應(yīng)的約束Cons。

    1) 算法思路

    遍歷邊的過(guò)程中:

    (1) 當(dāng)遇到指示器時(shí),父節(jié)點(diǎn)的值作為Cascade的變量,子節(jié)點(diǎn)的值作為該變量的一個(gè)水平;

    (2) 當(dāng)遇到 &&指示器時(shí),子節(jié)點(diǎn)的值作為Cascade的變量,該變量的水平參照?qǐng)D1中 &&中提到的劃分規(guī)則;

    (3) 當(dāng)choice節(jié)點(diǎn)的入度邊有 && 指示器信息時(shí),需要考慮指示器的復(fù)合,引入新變量來(lái)表示不同choice節(jié)點(diǎn)的不同選擇。

    對(duì)于choice節(jié)點(diǎn)可出現(xiàn)多次的情況,為choice節(jié)點(diǎn)增加額外的信息記錄其子節(jié)點(diǎn)出現(xiàn)的次序。同時(shí)引入新的組合變量即VL對(duì),來(lái)表示choice節(jié)點(diǎn)每一次的子節(jié)點(diǎn)選擇。設(shè)choice節(jié)點(diǎn)的minOccurs為k1,maxOccurs為k2,且擁有的子節(jié)點(diǎn)為C1、C2、C3、C4。則引入的VL對(duì)如表2所示。

    表2 choice出現(xiàn)多次的VL對(duì)

    第一列表示的是choice節(jié)點(diǎn)的出現(xiàn)次數(shù),剩下分別表示第i次choice子節(jié)點(diǎn)的選擇。為了減少無(wú)效組合數(shù),同時(shí)為蘊(yùn)含式集和Cons添加新的約束集:

    {choice=k ##(choicep) | k1<=k, k

    若組合中choice節(jié)點(diǎn)出現(xiàn)次數(shù)取p,那么討論第p+1次choice節(jié)點(diǎn)的子節(jié)點(diǎn)顯然是沒(méi)有意義的。其中##(choicep)表示變量choicep不參與組合,是為了在實(shí)際組合用例的生成過(guò)程中去除無(wú)效VL對(duì)的影響,減少無(wú)效組合數(shù)量。

    (4) 當(dāng)一個(gè)節(jié)點(diǎn)的入度邊有 && 指示器信息,出度邊上有&& &&指示器信息時(shí),添加約束集:

    {choice1!=C &&…&& choicek2!=C → C=0|C∈L(choice)}

    如果每一次choice子節(jié)點(diǎn)的選擇都沒(méi)有出現(xiàn)C,那么C節(jié)點(diǎn)置為0。

    2) 輔助函數(shù)

    treeToCascade算法中用到的輔助函數(shù)有:

    (1) addVL(V,k1,k2)的輸入為變量V、指示器minOccurs的值k1和maxOccurs的值k2。如果k1==k2,則L={k1};如果k2==unbounded,則L={k1,k1+1};否則L={k1,k2,mid(k1,k2)},將該VL對(duì)加入到Cinput的{(V,L)}集合中。

    (2) addVLs(m,j,L)的輸入為該邊的父節(jié)點(diǎn)、父節(jié)點(diǎn)入度邊maxOccurs指示器的值j和水平V。該函數(shù)的功能是將(m1,L) 、…、(mj,L)組(V,L)對(duì)加入到Cinput的{(V,L)}集合中。如果變量V已經(jīng)存在,將L的值并到V的水平中。

    (3) addCon(con)的輸入為一條約束信息con,功能是將con約束加入Cinput中的{Cons}集合中。

    (4) getL(V)的功能是返回Cinput中變量V的水平,setL(V,L)是將Cinput中變量V設(shè)置為L(zhǎng)。

    3) 算法偽碼

    treeToCascade算法

    輸入:類(lèi)型樹(shù)T,場(chǎng)景中的衛(wèi)式信息(Guard)

    輸出:Cinput={(Vi,Li)|i=1,2,3,...,n} ∪{Cons}

    1 Cinput= ?

    2 foreach e(m,c,n) ∈ T.E && c≠True do

    3 if c==&& then

    4 addVL(n, k1, k2)

    5 if n is the node with choice then

    6 addCon({n=k ##(np)| k1<=k, k

    7 if c== then

    8 if m.fatherEdge.c==&& then

    9 addVLs(m,k2,b)

    10 else

    11 addVL(m,b)

    12 if c==&&&& then

    13 addVL(n, k1, k2)

    14 if m.fatherEdge.c== && then

    15 addVLs(m,k2’ , b)

    16 addCon({m1!=C &&...&& mk2’!=C → C=0 |C∈L(cho)})

    17 else

    18 addVL(m,b)

    19 if n.guard != null then

    20 e’=e

    21 foreach m’ != root do

    22 if c’==&& then

    23 setL(n’,getL(n)>0)

    24 if c’== then

    25 setL(m’, b)

    26 if c’==&&&& then

    27 setL(n’,getL(n)>0)

    28 setL(m’, b)

    29 m’=m’.father

    30 return Cinput

    算法中,第3-6行處理了類(lèi)型樹(shù)邊上的約束c為 && 的情況,添加VL對(duì),變量為n,水平為k1至k2。當(dāng)孩子節(jié)點(diǎn)n為choice節(jié)點(diǎn)時(shí),添加約束addCon({n=k ##(np)| k1<=k, k

    第7-11行處理了c為的情況。第8-9行表示choice結(jié)點(diǎn)的入度邊為&&時(shí),將水平b添加到m1到mk2個(gè)變量中。第10-11行表示,choice節(jié)點(diǎn)入度邊不為復(fù)合類(lèi)型時(shí),將水平b添加給m變量。

    第12-18行處理了c為&& &&的情況。第15-16行表示添加VL對(duì)n及n的水平。第14-16行表示m節(jié)點(diǎn)的入度邊為&& 時(shí),將水平b添加到m1到mk2’變量中,并且添加約束信息addCons({ m1!=C &&…&& mmax!=C → C=0|C∈L(cho)})。第17-18行表示,m節(jié)點(diǎn)的入度邊沒(méi)有&& 指示器時(shí),直接將b賦給m變量。

    第19-29行處理Guard約束標(biāo)記的節(jié)點(diǎn)。衛(wèi)式信息(Guard)來(lái)自編排規(guī)范,在場(chǎng)景抽取的過(guò)程中,每一個(gè)交互都帶有一個(gè)衛(wèi)式作為前置約束條件,對(duì)本次交互變量數(shù)據(jù)的全部或部分片段取值進(jìn)行約束。當(dāng)n節(jié)點(diǎn)含有衛(wèi)式標(biāo)記時(shí),生成測(cè)試數(shù)據(jù)時(shí),要保證該節(jié)點(diǎn)一定存在。表現(xiàn)為:

    (1) 當(dāng)root節(jié)點(diǎn)到該節(jié)點(diǎn)的路徑中,遇到choice指示器時(shí)choice=此邊的節(jié)點(diǎn);

    (2) 當(dāng)root節(jié)點(diǎn)到該節(jié)點(diǎn)的路徑中,遇到occurrence指示器時(shí),此邊的孩子節(jié)點(diǎn)occurrence>0。

    4) 算法時(shí)間復(fù)雜度

    依據(jù)算法的設(shè)計(jì),算法的時(shí)間復(fù)雜度主要體現(xiàn)在遍歷類(lèi)型樹(shù)的邊以及當(dāng)節(jié)點(diǎn)含有衛(wèi)式信息時(shí)要回溯到根節(jié)點(diǎn)處理相應(yīng)的指示器上。當(dāng)類(lèi)型樹(shù)邊的數(shù)量為n, 則遍歷類(lèi)型樹(shù)邊的時(shí)間復(fù)雜度為O(n),設(shè)有m個(gè)節(jié)點(diǎn)含有衛(wèi)式信息,含衛(wèi)式信息的節(jié)點(diǎn)到根節(jié)點(diǎn)的平均距離為p,這里的距離是指節(jié)點(diǎn)到根節(jié)點(diǎn)之間的邊樹(shù),則treeToCascade算法的時(shí)間復(fù)雜度為O(n)+mO(p)。

    2.3 toTrees算法

    通過(guò)輸入Cascade的變量、水平及約束,工具可以輸出變量的組合(稱(chēng)為組合覆蓋數(shù)組),表示為Coutput:{ | l1∈L1, l2∈L2,…, ln∈Ln}。所有組合調(diào)用toTrees算法用來(lái)生成一個(gè)精化的類(lèi)型樹(shù)集合。

    toTrees(T,a)算法中,a是Coutput中的一種組合,T是原來(lái)的類(lèi)型樹(shù)模型集合。算法的輸出為精化后的類(lèi)型樹(shù)集合。反復(fù)調(diào)用toTrees(T,a)算法處理Coutput中的每一條記錄,將得到每一種組合情況對(duì)應(yīng)的子類(lèi)型。

    算法用到的輔助函數(shù)有:

    1) getVar(T,l)的輸入為類(lèi)型樹(shù)T和水平中的某個(gè)值l,返回一個(gè)變量,這個(gè)變量的水平包含l且對(duì)應(yīng)的節(jié)點(diǎn)在類(lèi)型樹(shù)T中。

    2) add(V,T)的輸入為變量V和類(lèi)型樹(shù)T,功能是添加變量V在T中對(duì)應(yīng)的節(jié)點(diǎn)及所有的子孫。

    3) delete(V, T)的輸入為變量V和類(lèi)型樹(shù)T,功能是刪除變量V在T中對(duì)應(yīng)的節(jié)點(diǎn)及其所有的子孫。

    4) changeConstraint(y, c, V, T)的功能是改變特定邊上的約束為c,這條邊的父節(jié)點(diǎn)是y,子節(jié)點(diǎn)是變量V在類(lèi)型樹(shù)T上對(duì)應(yīng)的節(jié)點(diǎn)。

    toTrees算法

    輸入:類(lèi)型樹(shù)T, a= (a ∈ Coutput, li ∈ ln)

    輸出:精化類(lèi)型樹(shù)集合T’s

    1 T’s= ?

    2 T’=T

    3 foreach li in a do

    4 Vi=getVar(T’,li)

    5 if Vi is a choice node && !isNode(li) then

    6 for i=1to li

    7 Vi.father.add(Vi, T’)

    8 name=getName(Vi)

    9 changeName(Vi,name+”i”)

    10 delete(Vi,T’)

    11 else if isNode(li) then

    12 foreach n in Vi.childrenlist do

    13 if n!=li then delete(n, T’)

    14 else if li==0 then delete(Vi, T’)

    15 else if li==”#” continue

    16 else

    17 y=Vi.father

    18 c=

    19 changeConstraint(y, c, Vi, T’)

    20 T’s=T’s∪{T’}

    21 return T’s

    算法中第5-10行是處理choice節(jié)點(diǎn)可出現(xiàn)多次的情況,首先獲取choice子節(jié)點(diǎn)數(shù)量n,根據(jù)子節(jié)點(diǎn)的數(shù)量,對(duì)該choice節(jié)點(diǎn)進(jìn)行n次拷貝,這里的拷貝是指遞歸的對(duì)子節(jié)點(diǎn)及其孩子信息進(jìn)行深度的拷貝。

    第11-13行處理li對(duì)應(yīng)一個(gè)節(jié)點(diǎn)的值的情況,說(shuō)明該li對(duì)應(yīng)的變量為一個(gè)choice節(jié)點(diǎn),刪除該choice節(jié)點(diǎn)除li對(duì)應(yīng)的子節(jié)點(diǎn)外的其他孩子節(jié)點(diǎn)。

    第14-15行是指當(dāng)li==0時(shí),代表li對(duì)應(yīng)的節(jié)點(diǎn)出現(xiàn)次數(shù)為0,刪除該節(jié)點(diǎn)。當(dāng)li==”#”,代表該li無(wú)效,不做任何處理。

    第19-21行表示將li所對(duì)應(yīng)節(jié)點(diǎn)的入度邊的約束改為。

    3 XML Schema類(lèi)型精化實(shí)例

    3.1 訂單類(lèi)型樹(shù)的Cascade輸入模型

    圖2所示的訂單類(lèi)型樹(shù),調(diào)用treeToCascade算法后,可以得到表3所示的變量及水平。

    表3中,共有6個(gè)參數(shù)及水平,2個(gè)約束表達(dá)式,其中coupon_choice == ″1″ ##(coupon_choice2) 表示當(dāng)參數(shù)coupon_choice取值為1時(shí),參數(shù)coupon_choice2則不參與組合,coupon_choice1!= ″cashback″ && coupon_choice2!= ″cashback″ -> cashback == ″0″表示當(dāng)coupon_choice1和coupon_choice2都不為cashback,則將cashback 的值置為0。強(qiáng)度設(shè)置為2,可以手動(dòng)添加。

    表3 訂單類(lèi)型的Cascade的輸入

    3.2 Cascade的輸出模型

    通過(guò)Cascade的組合,表3中Cascade輸入模型會(huì)轉(zhuǎn)化為表4中的Cascade的輸出。每一行代表一組Cascade輸入變量的值的組合。表3中6個(gè)變量產(chǎn)生了9組值的組合。

    例如第1行表示,coupon取值為0,coupon_choice取值為2,coupon_choice1取值為discount,coupon_choice2取值為discount,cashback取值為0,goods取值為2。

    3.3 精化后的類(lèi)型樹(shù)

    對(duì)每一條Cascade的輸出調(diào)用toTrees算法后,會(huì)產(chǎn)生一組相應(yīng)的精化后的類(lèi)型樹(shù)。如圖4所示,表示表6中第4條輸出調(diào)用toTrees算法后得到精化的類(lèi)型樹(shù)。coupon節(jié)點(diǎn)的入度邊上的指示器信息為minOccurs=1&&maxOccurs=1,代表coupon節(jié)點(diǎn)只出現(xiàn)一次;coupon_choice為1代表coupon_choice指示器只出現(xiàn)一次,由conpon_choice1表示;coupon_choice1值為discount;goods入度邊上的指示器信息為minOccurs=2&&maxOccurs=2,代表goods出現(xiàn)的次數(shù)確定為2。

    通過(guò)實(shí)例分析可得,每一顆精化后的類(lèi)型樹(shù)的指示器信息都是確定的。在沒(méi)有借助Cascade組合測(cè)試工具時(shí),訂單請(qǐng)求的XML Schema類(lèi)型通過(guò)劃分和全排列的組合,會(huì)產(chǎn)生96組子類(lèi)型,并且會(huì)產(chǎn)生一些無(wú)效的組合,例如當(dāng)coupon_choice選擇1時(shí),討論coupon_choice2變量的組合沒(méi)有意義。在Cascade組合測(cè)試工具的幫助下,得到了9組子類(lèi)型并覆蓋了所有需要被組合的變量的取值。

    圖4 精化后的類(lèi)型樹(shù)

    利用組合測(cè)試的思想實(shí)現(xiàn)XML Schema的類(lèi)型精化,不僅可以減少精化后的類(lèi)型樹(shù)的數(shù)量,從而極大地減少測(cè)試數(shù)據(jù)的數(shù)量,降低了測(cè)試代價(jià);同時(shí)提高了測(cè)試數(shù)據(jù)生成的可控性。為測(cè)試數(shù)據(jù)的生成及相符性測(cè)試奠定了重要的基礎(chǔ)。

    4 相關(guān)工作

    國(guó)內(nèi)外關(guān)于Web服務(wù)組合測(cè)試的工作有很多。Zhou等[12]采用動(dòng)態(tài)符號(hào)執(zhí)行的方法產(chǎn)生測(cè)試的輸入和斷言從而進(jìn)行WS-CDL的測(cè)試。Tsai等[13]從服務(wù)請(qǐng)求者和UDDI服務(wù)中介兩個(gè)角度考慮Web服務(wù)的測(cè)試,提出了一種使用多層次場(chǎng)景描述的方法來(lái)描述系統(tǒng)行為。張大勇等[14]著眼于Web服務(wù)的的交互以及交互之間對(duì)Web服務(wù)行為的影響對(duì)Web服務(wù)進(jìn)行測(cè)試。Bravetti等[15]提出了一個(gè)有效的方法驗(yàn)證包含了給定合約的服務(wù)是否可以在編排中正確地扮演自己的角色,這個(gè)過(guò)程是通過(guò)編排的組合與合約的精化實(shí)現(xiàn)的。

    基于編排的測(cè)試工作主要包括:Besson等[16]開(kāi)發(fā)了一個(gè)測(cè)試框架來(lái)支持測(cè)試驅(qū)動(dòng)的編排開(kāi)發(fā)。Nguyen等[17]提出了基于編排的消極的相符性測(cè)試框架。本研究組采用積極測(cè)試,并從編排中對(duì)控制流進(jìn)行抽取生成編排場(chǎng)景進(jìn)行相符性測(cè)試。

    諸多關(guān)于測(cè)試數(shù)據(jù)生成的工作涉及到XML Schema以及XML Schema指示器的劃分。Li等[18]擴(kuò)展了適用于XML Schema常規(guī)改變的方法并提出了分析改變后XML Schema的語(yǔ)義正確性的技術(shù)。Bai等[19]將WSDL解析成結(jié)構(gòu)化的DOM樹(shù),通過(guò)分析標(biāo)準(zhǔn)XML Schema語(yǔ)法來(lái)生成測(cè)試數(shù)據(jù)。Xu等[20]考慮了Web服務(wù)交互中的XML Schema信息,提出基于擾動(dòng)算子對(duì)XML Schema進(jìn)行修改和實(shí)例化,進(jìn)而測(cè)試基于XML的通信應(yīng)用。Bulbul等[21]基于給定的數(shù)據(jù)定義實(shí)現(xiàn)了測(cè)試數(shù)據(jù)自動(dòng)生成系統(tǒng)。Bertolino等[22]去掉XML Schema中不影響結(jié)構(gòu)的屬性,根據(jù)XML-Schema的指示器進(jìn)行等價(jià)劃分,本文的思路與其類(lèi)似,但是利用了組合測(cè)試用例的生成技術(shù),控制了測(cè)試用例的數(shù)量,降低了測(cè)試代價(jià),并且在指示器的復(fù)合問(wèn)題上考慮得更為詳細(xì)。Cohen等解釋了數(shù)學(xué)組合理論以及多個(gè)因素下,幾個(gè)因素值域覆蓋的理論[23]。王子元等說(shuō)明了組合測(cè)試用例生成技術(shù),并解釋了組合測(cè)試的覆蓋標(biāo)準(zhǔn)[24]。

    5 結(jié) 語(yǔ)

    測(cè)試數(shù)據(jù)的生成為編排與web服務(wù)組合的相符性測(cè)試提供了基礎(chǔ)。XML Schema類(lèi)型精化是測(cè)試數(shù)據(jù)生成過(guò)程中必不可少的部分。本文主要研究編排場(chǎng)景消息交互的XML Schema類(lèi)型精化:

    (1) 在測(cè)試數(shù)據(jù)生成過(guò)程中,XML Schema指示器的存在為測(cè)試數(shù)據(jù)的生成增加了難度,本文提出了類(lèi)型精化的概念。即通過(guò)指示器的劃分和組合,產(chǎn)生一組類(lèi)型確定的精化后的類(lèi)型樹(shù)。

    (2) 在指示器的組合過(guò)程中,為了避免組合數(shù)量爆炸,造成測(cè)試代價(jià)過(guò)高。本文采用的組合的測(cè)試思想,在保證覆蓋率的情況下,極大的減少組合數(shù)量。

    (3) 由于組合的過(guò)程中需要用到組合測(cè)試工具Cascade,本文提出了treeToCascade算法和toTrees算法完成類(lèi)型樹(shù)到Cascade工具輸入模型和Cascade輸出模型到精化后的類(lèi)型樹(shù)之間的轉(zhuǎn)換。并在轉(zhuǎn)換過(guò)程中,考慮到指示器的各種情況,旨在可以處理任何指示器的復(fù)合情況,覆蓋更多的子類(lèi)型,并通過(guò)蘊(yùn)含式減少無(wú)用的組合數(shù)據(jù)。

    本文的進(jìn)一步工作主要圍繞通過(guò)精化后的類(lèi)型樹(shù)產(chǎn)生測(cè)試數(shù)據(jù)集。通過(guò)相應(yīng)的數(shù)據(jù)集生成規(guī)則為精化后的類(lèi)型樹(shù)的葉子結(jié)點(diǎn)產(chǎn)生測(cè)試數(shù)據(jù),并在測(cè)試數(shù)據(jù)生成過(guò)程中提取場(chǎng)景中的衛(wèi)式信息對(duì)葉子結(jié)點(diǎn)進(jìn)行標(biāo)記,以滿(mǎn)足交互序列執(zhí)行的條件。在得到一組測(cè)試數(shù)據(jù)集后,基于編排場(chǎng)景對(duì)Web服務(wù)組合進(jìn)行相符性測(cè)試。

    [1] Salauün G, Bultan T, Roohi N. Realizability of choreographies using process algebra encodings[J].IEEE Transactions on Services Computing, 2012, 5(3):290-304.

    [2] Pi4SOA[OL]. http://www.pi4soa.org.

    [3] Salauün G, Roohi N. On realizability and dynamic reconfiguration of choreographies[C]//Proceedings of WASELF’09, 2009.

    [4] Bozkurt M, Harman M, Hassoun Y. Testing web services: a survey: TR-10-01[R]. Technical Report of King’s College London, 2010.

    [5] 周亮. 基于編排規(guī)范的Web服務(wù)相符性測(cè)試[D]. 北京:北京工業(yè)大學(xué), 2011.

    [6] 鄧晨. Web服務(wù)編排的場(chǎng)景研究[D]. 北京:北京工業(yè)大學(xué), 2012.

    [7] Yang H, Ma K, Deng C, et al. Towards conformance testing of choreography based on scenario[C]//Proceedings of the 2013 International Symposium on Theoretical Aspects of Software Engineering. IEEE Computer Society, 2013:59-62.

    [8] Ma K, Wang J, Yang H, et al. Choreography scenario-based test data generation[C]//2014 Theoretical Aspects of Software Engineering Conference (TASE). IEEE Computer Society, 2014:70-73.

    [9] 馬凱. 基于編排場(chǎng)景的Web服務(wù)相符性測(cè)試[D]. 北京:北京工業(yè)大學(xué), 2014.

    [10] XML Schema教程[OL]. http://www.w3school.com.cn/schema/index.asp.

    [11] Cascade: CAS Covering Array DEsigner[OL]. http://lcs.ios.ac.cn/zhangzq/cTtoolkit.html.

    [12] Zhou L, Ping J, Xiao H, et al. Automatically testing web services choreography with assertions[C]//Proceedings of the 12th International Conference on Formal Engineering Methods and Software Engineering. Springer, 2010:138-154.

    [13] Tsai W T, Paul R, Yu L, et al. Scenario-based web services testing with distributed agents[J]. IEICE Transactions on Information and Systems, 2003, 86(10):2130-2144.

    [14] 張大勇, 黃寧, 余瑩, 等. Web服務(wù)交互測(cè)試中SOAP消息的控制和分析[J]. 計(jì)算機(jī)與數(shù)字工程, 2005, 33(9):10-14.

    [15] Bravetti M, Zavattaro G. Towards a unifying theory for choreography conformance and contract compliance[C]//Proceedings of the 6th International Conference on Software Composition. Springer, 2007:34-50.

    [16] Besson F M, Leal P M B, Kon F, et al. Towards automated testing of web service choreographies[C]//Proceedings of the 6th International Workshop on Automation of Software Test, 2011:109-110.

    [17] Nguyen H N, Poizat P, Za?di F. Passive conformance testing of service choreographies[C]//Proceedings of the 27th Annual ACM Symposium on Applied Computing, 2012:1528-1535.

    [18] Li J B, Miller J. Testing the semantics of W3C XML schema[C]//29th Annual International Conference on Computer Software and Applications. IEEE, 2005:443-448.

    [19] Bai X, Dong W, Tsai W T, et al. WSDL-based automatic test case generation for web services testing[C]//2005 IEEE International Workshop on Service-Oriented System Engineering. IEEE, 2005:207-212.

    [20] Xu W, Offutt J, Luo J. Testing web services by XML perturbation[C]//Proceedings of the 16th IEEE International Symposium on Software Reliability Engineering. Washington, DC, USA: IEEE Computer Society, 2005:257-266.

    [21] Bulbul H I, Bakir T. XML-based automatic test data generation[J]. Computing & Informatics, 2008, 27:681-698.

    [22] Bertolino A, Gao J, Marchetti E, et al. Automatic test data generation for XML schema-based partition testing[C]//Second International Workshop on Automation and Software Test. IEEE Computer Society, 2007:4.

    [23] Cohen D M, Dalal S R, Fredman M L, et al. The AETG system: an approach to testing based on combinatorial design[J]. IEEE Transactions on Software Engineering, 1997, 23(7):437-444.

    [24] 王子元, 徐寶文, 聶長(zhǎng)海. 組合測(cè)試用例生成技術(shù)[J]. 計(jì)算機(jī)科學(xué)與探索, 2008, 2(6):571-588.

    THE REFINEMENT OF XML SCHEMA TYPE OF WEB SERVICES ARRANGEMENT SCENE

    Wang Jin Ma Kai Yang Hongli

    (CollegeofComputerScience,BeijingUniversityofTechnology,Beijing100124,China)

    Web Services arrangement specifies the interaction among multiple Web services. In the actual development, interactive data type and interactive sequence may not be consistent with arrangement standard. It needs to generate the test data to check the conformance of the implementation with reference to the arrangement standard. Since arrangement scene describes the interactions sequence of each participant and the XML Schema type of its interaction information, the test data can be generated by the XML Schema. The indicators in XML Schema type lead to the uncertainty of the data type, so the method of the XML Schema type refinement is proposed to solve the problem based on combined test. By defining the XML Schema type tree and presenting the type tree refinement algorithm based on the combinatorial tool Cascade, the effectiveness is proved by examples.

    Web Services arrangement XML Schema Indicator Type refinement Combined test

    2015-12-24。王瑾,碩士,主研領(lǐng)域:Web服務(wù)編排。馬凱,碩士。楊紅麗,副教授。

    TP3

    A

    10.3969/j.issn.1000-386x.2017.02.005

    猜你喜歡
    精化指示器測(cè)試數(shù)據(jù)
    測(cè)試數(shù)據(jù)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
    n-精化與n-互模擬之間相關(guān)問(wèn)題的研究
    n-精化關(guān)系及其相關(guān)研究
    電子世界(2017年2期)2017-02-17 00:54:00
    基于自適應(yīng)粒子群優(yōu)化算法的測(cè)試數(shù)據(jù)擴(kuò)增方法
    柴油機(jī)儀表指示器的維修保養(yǎng)
    空間co-location挖掘模式在學(xué)生體能測(cè)試數(shù)據(jù)中的應(yīng)用
    體育科技(2016年2期)2016-02-28 17:06:21
    接地故障指示器的10kV線路接地故障的判斷與分析研究
    Petri網(wǎng)結(jié)點(diǎn)精化及其應(yīng)用
    基于非接觸式電流互感器取電的故障指示器設(shè)計(jì)
    新型基于故障指示器的配電網(wǎng)故障尋址方法
    在线观看人妻少妇| 美女内射精品一级片tv| 国产av在哪里看| 午夜日本视频在线| 永久免费av网站大全| 肉色欧美久久久久久久蜜桃 | 97人妻精品一区二区三区麻豆| 国产一区亚洲一区在线观看| 性插视频无遮挡在线免费观看| 国产亚洲一区二区精品| 欧美+日韩+精品| 日日啪夜夜撸| 九色成人免费人妻av| 亚洲欧美清纯卡通| 午夜精品一区二区三区免费看| 美女脱内裤让男人舔精品视频| 91aial.com中文字幕在线观看| av一本久久久久| 国产片特级美女逼逼视频| 天堂影院成人在线观看| 肉色欧美久久久久久久蜜桃 | 美女内射精品一级片tv| 午夜久久久久精精品| 久久久久国产网址| 久久这里只有精品中国| 一区二区三区四区激情视频| 99热这里只有精品一区| 久久久久久久久久人人人人人人| 五月伊人婷婷丁香| 99九九线精品视频在线观看视频| 99久国产av精品国产电影| 日韩欧美国产在线观看| 国产一级毛片七仙女欲春2| 国产成人91sexporn| 午夜福利视频精品| 中文在线观看免费www的网站| 成人亚洲精品一区在线观看 | 久久精品国产亚洲网站| 99热这里只有是精品在线观看| 内地一区二区视频在线| 久久久久久久久中文| .国产精品久久| 亚洲av中文av极速乱| 高清视频免费观看一区二区 | 深夜a级毛片| 免费看a级黄色片| 777米奇影视久久| 日本猛色少妇xxxxx猛交久久| 久久6这里有精品| 国产精品久久视频播放| 大片免费播放器 马上看| 美女cb高潮喷水在线观看| 国产亚洲av嫩草精品影院| 欧美成人a在线观看| 欧美成人a在线观看| 卡戴珊不雅视频在线播放| 国产精品熟女久久久久浪| 麻豆成人午夜福利视频| 国产中年淑女户外野战色| 亚洲不卡免费看| 成人一区二区视频在线观看| 国产成人一区二区在线| 男人舔女人下体高潮全视频| 一区二区三区乱码不卡18| 久久久久久久久久久丰满| h日本视频在线播放| 在线观看一区二区三区| 欧美激情在线99| 欧美 日韩 精品 国产| 国产精品99久久久久久久久| 欧美bdsm另类| 一区二区三区免费毛片| 免费少妇av软件| 人人妻人人看人人澡| 夜夜爽夜夜爽视频| videossex国产| 毛片女人毛片| 国产精品一区www在线观看| 少妇人妻精品综合一区二区| 少妇熟女欧美另类| 老女人水多毛片| 久久久久久久久久成人| 欧美日本视频| 精品99又大又爽又粗少妇毛片| 国产色婷婷99| 国产午夜精品论理片| h日本视频在线播放| 99视频精品全部免费 在线| 日本免费在线观看一区| 午夜福利在线在线| 国产精品一及| 777米奇影视久久| 国内精品美女久久久久久| ponron亚洲| 三级国产精品片| 久久6这里有精品| 午夜老司机福利剧场| 中文字幕免费在线视频6| 人人妻人人看人人澡| 一级毛片黄色毛片免费观看视频| 久久精品久久久久久噜噜老黄| 搡女人真爽免费视频火全软件| av免费观看日本| 国产黄a三级三级三级人| 国产精品一区二区三区四区久久| 高清av免费在线| 免费观看的影片在线观看| 啦啦啦啦在线视频资源| 国产午夜精品一二区理论片| 人体艺术视频欧美日本| 免费观看a级毛片全部| 国产精品三级大全| 午夜福利在线观看吧| 日本黄色片子视频| 免费人成在线观看视频色| 亚洲最大成人中文| 国产精品久久久久久久电影| av播播在线观看一区| 一级片'在线观看视频| 久久6这里有精品| 国产精品一二三区在线看| 日韩电影二区| 插逼视频在线观看| 黄片wwwwww| 搡老乐熟女国产| 在现免费观看毛片| 高清毛片免费看| 熟妇人妻久久中文字幕3abv| 男的添女的下面高潮视频| 在线免费观看的www视频| 在线观看免费高清a一片| 女人被狂操c到高潮| 中文字幕av在线有码专区| 亚洲电影在线观看av| 亚洲欧美日韩无卡精品| 国产av不卡久久| 国产综合精华液| 久99久视频精品免费| 色尼玛亚洲综合影院| 日本熟妇午夜| 国产黄频视频在线观看| 一边亲一边摸免费视频| 2021少妇久久久久久久久久久| 欧美日韩亚洲高清精品| 日韩在线高清观看一区二区三区| 国产免费一级a男人的天堂| 亚洲av男天堂| 两个人视频免费观看高清| 秋霞在线观看毛片| 免费少妇av软件| 色网站视频免费| 亚洲欧美成人综合另类久久久| 99九九线精品视频在线观看视频| 久久精品夜色国产| 久久久精品免费免费高清| av在线蜜桃| 国产 亚洲一区二区三区 | 日韩伦理黄色片| 在线观看美女被高潮喷水网站| 51国产日韩欧美| 精品一区二区三卡| 国产成人精品久久久久久| 日日撸夜夜添| 一个人观看的视频www高清免费观看| 一级av片app| 伦精品一区二区三区| 亚洲精品,欧美精品| 听说在线观看完整版免费高清| 国产精品久久久久久精品电影小说 | 国产久久久一区二区三区| 尾随美女入室| 成人毛片60女人毛片免费| 精品国产三级普通话版| 中国国产av一级| 汤姆久久久久久久影院中文字幕 | 91aial.com中文字幕在线观看| 久久99精品国语久久久| 国产欧美另类精品又又久久亚洲欧美| 日韩成人av中文字幕在线观看| 亚洲欧美中文字幕日韩二区| 丝袜喷水一区| 日本-黄色视频高清免费观看| 亚洲自偷自拍三级| 亚洲欧美日韩卡通动漫| 三级国产精品片| 国产v大片淫在线免费观看| 日韩伦理黄色片| 日本猛色少妇xxxxx猛交久久| 99久久精品国产国产毛片| 亚洲国产精品国产精品| 欧美激情久久久久久爽电影| 搡女人真爽免费视频火全软件| 国精品久久久久久国模美| 男人狂女人下面高潮的视频| 赤兔流量卡办理| 精品国产一区二区三区久久久樱花 | 美女内射精品一级片tv| 午夜老司机福利剧场| 麻豆精品久久久久久蜜桃| 观看免费一级毛片| 看十八女毛片水多多多| 人妻夜夜爽99麻豆av| 丰满人妻一区二区三区视频av| 成人午夜高清在线视频| 欧美97在线视频| 日本与韩国留学比较| 在现免费观看毛片| 久久鲁丝午夜福利片| 国产精品久久久久久精品电影| 99热6这里只有精品| 伊人久久精品亚洲午夜| 日本色播在线视频| 少妇裸体淫交视频免费看高清| 水蜜桃什么品种好| 免费人成在线观看视频色| 国产精品1区2区在线观看.| av国产免费在线观看| 我的女老师完整版在线观看| 久久午夜福利片| 欧美极品一区二区三区四区| 国产白丝娇喘喷水9色精品| 一级片'在线观看视频| 极品教师在线视频| av在线蜜桃| 一二三四中文在线观看免费高清| 精品一区二区三卡| 日韩精品有码人妻一区| 熟女人妻精品中文字幕| 亚洲经典国产精华液单| av一本久久久久| 国产在视频线在精品| av播播在线观看一区| 国产亚洲精品久久久com| 麻豆成人av视频| 亚洲av免费在线观看| 国产v大片淫在线免费观看| 91久久精品电影网| 性插视频无遮挡在线免费观看| 18+在线观看网站| 我的女老师完整版在线观看| 婷婷色av中文字幕| 日本黄大片高清| 日日干狠狠操夜夜爽| 99久久精品一区二区三区| 亚洲美女视频黄频| 国产精品国产三级国产专区5o| 亚洲电影在线观看av| av在线播放精品| 日韩一区二区视频免费看| 精品久久久久久电影网| 天堂俺去俺来也www色官网 | 久久精品综合一区二区三区| 久久久久久久国产电影| 日韩一本色道免费dvd| 成人无遮挡网站| 熟妇人妻久久中文字幕3abv| 日韩av免费高清视频| 蜜桃久久精品国产亚洲av| 国产av在哪里看| 99久国产av精品国产电影| 精品酒店卫生间| 又大又黄又爽视频免费| 少妇人妻精品综合一区二区| 夜夜看夜夜爽夜夜摸| av在线播放精品| 小蜜桃在线观看免费完整版高清| 日日撸夜夜添| 99久国产av精品| 午夜福利网站1000一区二区三区| 欧美成人a在线观看| 伦精品一区二区三区| 2018国产大陆天天弄谢| 久久精品国产鲁丝片午夜精品| 自拍偷自拍亚洲精品老妇| 国内精品宾馆在线| 亚洲成色77777| 欧美性猛交╳xxx乱大交人| 老师上课跳d突然被开到最大视频| 亚洲av日韩在线播放| 淫秽高清视频在线观看| 午夜精品在线福利| 成人美女网站在线观看视频| 国内精品美女久久久久久| 一边亲一边摸免费视频| 国产淫片久久久久久久久| 一本一本综合久久| 国产探花在线观看一区二区| 国内少妇人妻偷人精品xxx网站| av在线蜜桃| 久久精品人妻少妇| 一个人免费在线观看电影| 精品久久久久久久末码| 特大巨黑吊av在线直播| 欧美+日韩+精品| 久久久久精品久久久久真实原创| 身体一侧抽搐| 黄片无遮挡物在线观看| 久久精品综合一区二区三区| 99热这里只有是精品在线观看| 成人一区二区视频在线观看| 天天躁夜夜躁狠狠久久av| 国产精品三级大全| 亚洲精品第二区| 久久久久久久久久成人| 亚洲综合色惰| 男人狂女人下面高潮的视频| 亚洲精品日韩在线中文字幕| 国产亚洲av嫩草精品影院| 亚洲av二区三区四区| 国产综合精华液| 午夜视频国产福利| 午夜激情久久久久久久| 中文在线观看免费www的网站| 久久国产乱子免费精品| 在线免费观看不下载黄p国产| 身体一侧抽搐| 一区二区三区乱码不卡18| 国产精品.久久久| 美女xxoo啪啪120秒动态图| 一级毛片aaaaaa免费看小| 日韩大片免费观看网站| 成人亚洲精品av一区二区| 2021天堂中文幕一二区在线观| 久久久久精品性色| 永久网站在线| 一本久久精品| 国产精品一区二区在线观看99 | 熟女人妻精品中文字幕| 精品少妇黑人巨大在线播放| 精品午夜福利在线看| 国产精品国产三级国产专区5o| 国产又色又爽无遮挡免| 免费观看a级毛片全部| 国产男人的电影天堂91| 久久精品久久久久久噜噜老黄| 一二三四中文在线观看免费高清| 日韩视频在线欧美| 国产午夜精品久久久久久一区二区三区| 91精品伊人久久大香线蕉| 中文字幕免费在线视频6| 全区人妻精品视频| 国产亚洲最大av| 丰满少妇做爰视频| 亚洲人成网站高清观看| freevideosex欧美| 亚洲高清免费不卡视频| 可以在线观看毛片的网站| 男人舔女人下体高潮全视频| 成年人午夜在线观看视频 | 三级男女做爰猛烈吃奶摸视频| 一边亲一边摸免费视频| 国产老妇伦熟女老妇高清| 国产欧美日韩精品一区二区| 久久久午夜欧美精品| 真实男女啪啪啪动态图| ponron亚洲| 成人漫画全彩无遮挡| 综合色丁香网| 男女边吃奶边做爰视频| 国产综合懂色| 亚洲乱码一区二区免费版| 好男人视频免费观看在线| 人妻系列 视频| 在线免费观看不下载黄p国产| 内射极品少妇av片p| 美女国产视频在线观看| 在现免费观看毛片| 亚洲精华国产精华液的使用体验| 看非洲黑人一级黄片| 亚洲精品日本国产第一区| 精品久久久久久久人妻蜜臀av| 免费少妇av软件| 亚洲av中文av极速乱| 一级毛片电影观看| 亚洲成人久久爱视频| 伊人久久精品亚洲午夜| 成人国产麻豆网| 美女内射精品一级片tv| 欧美97在线视频| 2022亚洲国产成人精品| 久久6这里有精品| 国产淫语在线视频| 亚洲乱码一区二区免费版| 久久国内精品自在自线图片| 亚洲欧美精品自产自拍| 国内精品宾馆在线| 国产精品一区二区性色av| 成年人午夜在线观看视频 | 亚洲自偷自拍三级| 黄色欧美视频在线观看| 中文精品一卡2卡3卡4更新| 精品一区二区三卡| 麻豆国产97在线/欧美| a级一级毛片免费在线观看| 激情五月婷婷亚洲| 18+在线观看网站| 一级二级三级毛片免费看| 高清视频免费观看一区二区 | 人人妻人人澡人人爽人人夜夜 | 日韩国内少妇激情av| av在线播放精品| 免费无遮挡裸体视频| 国产成人a∨麻豆精品| 三级男女做爰猛烈吃奶摸视频| 性色avwww在线观看| 免费观看在线日韩| 精品一区二区三区视频在线| 日韩欧美 国产精品| 狂野欧美白嫩少妇大欣赏| av在线观看视频网站免费| 亚洲精品中文字幕在线视频 | 建设人人有责人人尽责人人享有的 | 久久99蜜桃精品久久| 亚洲精品日本国产第一区| 亚洲经典国产精华液单| 免费大片18禁| 久久久久性生活片| 成人一区二区视频在线观看| 国产午夜精品论理片| av一本久久久久| 老师上课跳d突然被开到最大视频| 中文欧美无线码| 亚洲欧美中文字幕日韩二区| 插逼视频在线观看| 午夜福利在线观看吧| 不卡视频在线观看欧美| 日本猛色少妇xxxxx猛交久久| av在线老鸭窝| 美女黄网站色视频| 中文字幕免费在线视频6| 只有这里有精品99| 国产成人a∨麻豆精品| 精品久久久精品久久久| 亚洲人成网站在线观看播放| 免费播放大片免费观看视频在线观看| 非洲黑人性xxxx精品又粗又长| 日本-黄色视频高清免费观看| 日本爱情动作片www.在线观看| 波多野结衣巨乳人妻| 国产精品一及| 在线观看免费高清a一片| 日韩亚洲欧美综合| 国产伦在线观看视频一区| 我的女老师完整版在线观看| 18禁动态无遮挡网站| 91av网一区二区| 在线免费十八禁| av女优亚洲男人天堂| 三级经典国产精品| 久久久精品94久久精品| 欧美一级a爱片免费观看看| 少妇被粗大猛烈的视频| 韩国av在线不卡| 身体一侧抽搐| 性色avwww在线观看| 精品少妇黑人巨大在线播放| 一级毛片电影观看| 国产色婷婷99| 国产精品久久久久久精品电影| 午夜福利成人在线免费观看| 久久99蜜桃精品久久| 99热全是精品| 国产精品国产三级专区第一集| 简卡轻食公司| 日韩欧美 国产精品| 一区二区三区乱码不卡18| 午夜免费男女啪啪视频观看| 精品一区在线观看国产| 午夜免费男女啪啪视频观看| 激情五月婷婷亚洲| 午夜免费男女啪啪视频观看| 丰满乱子伦码专区| 亚洲av中文字字幕乱码综合| 淫秽高清视频在线观看| kizo精华| 久久久精品欧美日韩精品| 久久这里有精品视频免费| 高清av免费在线| 精品久久久久久久人妻蜜臀av| 激情五月婷婷亚洲| 赤兔流量卡办理| 91久久精品国产一区二区三区| 国产又色又爽无遮挡免| 高清av免费在线| 亚洲在线自拍视频| 亚洲综合色惰| 内地一区二区视频在线| 免费播放大片免费观看视频在线观看| 一级av片app| av在线观看视频网站免费| 国产麻豆成人av免费视频| 国产免费一级a男人的天堂| 国内精品宾馆在线| 日本-黄色视频高清免费观看| 亚洲国产最新在线播放| 91久久精品电影网| 国产精品蜜桃在线观看| 校园人妻丝袜中文字幕| 免费观看av网站的网址| 国产乱来视频区| 国产精品av视频在线免费观看| 国产探花在线观看一区二区| 免费观看性生交大片5| av.在线天堂| 少妇人妻精品综合一区二区| 联通29元200g的流量卡| 国产国拍精品亚洲av在线观看| 小蜜桃在线观看免费完整版高清| 亚洲国产精品成人综合色| 麻豆久久精品国产亚洲av| 麻豆av噜噜一区二区三区| 99热网站在线观看| 人人妻人人看人人澡| 久久韩国三级中文字幕| 一区二区三区高清视频在线| 亚洲av不卡在线观看| 免费不卡的大黄色大毛片视频在线观看 | 日本免费在线观看一区| 国产精品一二三区在线看| 亚洲综合色惰| 在线播放无遮挡| 97热精品久久久久久| 欧美三级亚洲精品| 一区二区三区免费毛片| .国产精品久久| 精品久久久久久久末码| 波野结衣二区三区在线| 精品一区二区三区人妻视频| 青青草视频在线视频观看| 91狼人影院| 欧美性猛交╳xxx乱大交人| 欧美日本视频| 嫩草影院精品99| 波多野结衣巨乳人妻| 91久久精品国产一区二区三区| 免费av观看视频| 夜夜爽夜夜爽视频| eeuss影院久久| 亚洲不卡免费看| 免费av毛片视频| 日本三级黄在线观看| 日本wwww免费看| 国产亚洲av片在线观看秒播厂 | 国国产精品蜜臀av免费| 中文字幕av在线有码专区| 精品欧美国产一区二区三| 欧美日韩在线观看h| 观看免费一级毛片| 少妇裸体淫交视频免费看高清| 熟女电影av网| 亚洲成人一二三区av| 国产精品人妻久久久影院| 搞女人的毛片| 精品一区二区三区视频在线| 又大又黄又爽视频免费| 国产午夜精品一二区理论片| 亚洲精品影视一区二区三区av| 午夜日本视频在线| 中文在线观看免费www的网站| 欧美一区二区亚洲| 免费观看在线日韩| 丝袜美腿在线中文| 日韩精品青青久久久久久| 亚洲精品一区蜜桃| 99九九线精品视频在线观看视频| 天堂中文最新版在线下载 | 最近最新中文字幕大全电影3| 偷拍熟女少妇极品色| 大话2 男鬼变身卡| 特大巨黑吊av在线直播| 国国产精品蜜臀av免费| 欧美日韩综合久久久久久| 久久精品久久久久久久性| 亚洲精品色激情综合| 国产一区二区三区综合在线观看 | 一本久久精品| 少妇人妻一区二区三区视频| 成人一区二区视频在线观看| 大片免费播放器 马上看| 国产亚洲5aaaaa淫片| 免费黄频网站在线观看国产| 日本爱情动作片www.在线观看| 欧美精品一区二区大全| 久久久久久久久久久丰满| 美女xxoo啪啪120秒动态图| 免费观看av网站的网址| 亚洲国产成人一精品久久久| 精品一区在线观看国产| 亚洲国产高清在线一区二区三| 晚上一个人看的免费电影| 色综合站精品国产| 久久久久久久久久人人人人人人| 亚洲精品日本国产第一区| 自拍偷自拍亚洲精品老妇| 九九爱精品视频在线观看| 九色成人免费人妻av| 国产男女超爽视频在线观看| 啦啦啦啦在线视频资源| 国产一区亚洲一区在线观看| 中文字幕av在线有码专区| 天美传媒精品一区二区| 熟妇人妻不卡中文字幕| 夜夜爽夜夜爽视频| 国产成人精品婷婷| 精品人妻一区二区三区麻豆| 国产午夜精品久久久久久一区二区三区| 天堂俺去俺来也www色官网 | 综合色av麻豆| 岛国毛片在线播放| 毛片女人毛片| freevideosex欧美| 欧美高清性xxxxhd video| 久久人人爽人人爽人人片va| 美女被艹到高潮喷水动态| 一夜夜www|