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

    基于死鎖的并發(fā)類單元測試用例自動生成

    2017-04-24 10:37:36
    計算機應用與軟件 2017年4期
    關(guān)鍵詞:測試用例線程調(diào)用

    臧 麗 娜

    (北京化工大學信息科學與技術(shù)學院 北京 100029)

    基于死鎖的并發(fā)類單元測試用例自動生成

    臧 麗 娜

    (北京化工大學信息科學與技術(shù)學院 北京 100029)

    自動生成多線程程序的單元測試用例是一種能節(jié)約測試成本的技術(shù)。為提高并發(fā)類單元測試用例生成效率,先依據(jù)死鎖故障的特征分析出并發(fā)類中潛在的死鎖代碼,然后再針對這些代碼自動生成測試用例。實驗在7個常用Java類庫中的并發(fā)類上進行驗證。實驗結(jié)果顯示提出的方法(CTCG)不僅找到了現(xiàn)有死鎖故障,而且當檢測到死鎖故障時,其所生成的測試用例數(shù)更少,其所花費的時間更少,提高了并發(fā)類單元測試用例自動生成的效率。

    并發(fā)類 死鎖 單元測試 測試用例生成

    0 引 言

    單元測試關(guān)注檢查和驗證組成軟件系統(tǒng)的最小單元,如類、方法、模塊等。單元測試已被證明在故障檢測中有巨大價值[1]。并發(fā)故障的檢測不僅依賴于程序的輸入,還依賴于線程的調(diào)度。由于多線程程序的不確定性[2],使得傳統(tǒng)單元測試在檢測并發(fā)故障時的有效性較低[3]。并發(fā)類是指在一個類中,其變量或方法使用了同步機制來支持多個線程對其并發(fā)訪問。并發(fā)類是組成多線程程序的基本單元,是多線程程序開發(fā)和測試的基礎(chǔ)。A. Nistor等首次提出了對多線程代碼自動生成測試用例的方法—Ballerina[4]方法,該方法隨機地選擇并發(fā)類中的兩個方法生成測試用例,由于該方法未考慮并發(fā)故障的特點和對象進入線程前的狀態(tài)對測試結(jié)果的影響,使得該方法在檢測到一個并發(fā)故障時的開銷過大。S. Steenbuck等開發(fā)了ConSuite[5]工具來生成并發(fā)類的單元測試用例,該工具使用基于搜索的方法以線程、線程訪問的共享變量、線程訪問共享變量的同步點的所有組合為覆蓋準則,并以這種覆蓋準則為指導來生成測試用例。但該工具會隨著并發(fā)類的規(guī)模及復雜度的增加而產(chǎn)生較大的時間和空間開銷。另外Ballerian方法和ConSuite工具都只能生成包含一個被測對象的測試用例,使得其檢測故障的能力有限。M. Pradel等在研究并發(fā)類的回歸測試[6]時隨機生成并執(zhí)行大量的測試用例來衡量并發(fā)類的性能,其測試用例生成方法仍采用Ballerina方法的思想,并未對并發(fā)類的單元測試用例生成方法和效率進行改進和提升。

    死鎖[7]是常見且不易被檢測的并發(fā)故障。靜態(tài)分析[8-9]和動態(tài)分析[10-11]是檢測死鎖的兩種常用方法。靜態(tài)分析方法常產(chǎn)生大量誤報,動態(tài)分析方法則由于線程間的交互問題會產(chǎn)生較大的時間開銷。一種能充分利用兩種方法優(yōu)勢的技術(shù)是將動靜態(tài)方法結(jié)合起來使用[12],但這種方法是以測試用例存在為前提來對程序進行測試,并不考慮測試用例的生成問題。并發(fā)程序中測試用例生成的問題越來越成為并發(fā)程序測試研究的一個瓶頸。

    基于此,本文針對并發(fā)類中的死鎖故障,提出了一種單元測試用例自動生成方法CTCG。本文的最小可測單元為并發(fā)類中的方法,首先依據(jù)死鎖故障特征對并發(fā)類進行分析,以得到潛在死鎖對,然后再針對潛在死鎖對生成測試用例,最后通過實驗,驗證了本文方法的有效性。

    1 相關(guān)工作

    死鎖[7]是指兩個或兩個以上的線程(進程)在執(zhí)行過程中,因爭奪資源而造成的一種相互等待的現(xiàn)象,若無外力作用,它們都將無法推進下去。

    鎖序圖是一個描述了線程對鎖的占用請求關(guān)系的有向圖,用G=(V,E)表示,其中頂點V表示鎖結(jié)點集,一條從結(jié)點l1指向結(jié)點l2的有向邊e表示線程在占有鎖l1時去請求鎖l2,E是e的集合。

    別名指多個變量共享同一存儲區(qū),這些共享內(nèi)存的變量互為別名。在面向?qū)ο蟪绦蛑校饎e名的原因有對象表達式的創(chuàng)建,寫實例域表達式的創(chuàng)建,讀實例域表達式創(chuàng)建,直接賦值表達式的創(chuàng)建,函數(shù)調(diào)用。又因是對類進行分析,所以本文采用對象敏感、內(nèi)容敏感、流不敏感的別名分析方法[13]。

    門鎖:假設(shè)線程t1在請求占有鎖l1時,必須先請求占有鎖l,線程t2在請求占有鎖l2時,必須先請求占有鎖l,則稱鎖l為線程t1中鎖l1,線程t2中鎖l2的門鎖。用t→lΔL表示線程t在請求占有鎖l時,其已占有的鎖集為L,下面的公式表示兩個線程在請求占有鎖時是否有門鎖。

    guarded(t1,l1,t2,l2)iff?L1,L2

    t1→l1ΔL1∧t2→l2ΔL2?alias(L1,L2)

    (1)

    2 死鎖分析

    要有效地生成測試用例來觸發(fā)并發(fā)故障,可通過生成較少的測試用例且又不影響檢測質(zhì)量的方法來檢測死鎖故障。

    2.1 死鎖分析的前置條件

    2.2 形參型死鎖

    并發(fā)類中,依據(jù)變量的不同可分為不同的鎖變量。全局鎖是指類的某全局量被作為鎖變量。對象鎖是指在編程中創(chuàng)建的實例對象調(diào)用方法被多線程訪問,在任一個時刻,只有一個線程可以訪問該對象。如在Java中,同步方法的this對象即為對象鎖。形參鎖是指類中方法的形參在方法體內(nèi)由于調(diào)用了同步方法而變成了鎖變量。在本文中,如果類的某成員變量在方法體中被作為了鎖變量,那么該成員變量被視為形參鎖,因為絕大部分的成員變量都可以通過set方法來傳入?yún)?shù)。

    定義1 形參型死鎖 當用戶傳入了某些特定參數(shù)后,使得程序出現(xiàn)了死鎖,稱這種死鎖為形參型死鎖。

    如對java.lang.StringBuffer類,當用戶進行了如圖1的調(diào)用時,在線程t1中,變量a是對象鎖,變量b是形參鎖,線程t1在請求完鎖a后又去請求鎖b,在線程t2中,變量b是對象鎖,變量a是形參鎖,線程t2在請求完鎖b后又去請求鎖a,此時程序便出現(xiàn)了死鎖。形參型死鎖一方面和用戶傳入的參數(shù)有關(guān),另一方面還和對象鎖相關(guān),但不會和全局鎖發(fā)生死鎖。

    圖1 形參型死鎖示例

    形參型死鎖模式:兩個線程t1、t2分別調(diào)用了并發(fā)類CUT中的兩個方法m1(…,pi,…)、m2(…,pj,…),且兩個線程中的調(diào)用對象不同,每個線程在請求占有了對象鎖后,又去請求占有形參鎖pi和pj,且pi和pj的類型和CUT的類型匹配,此時稱程序存在形參型死鎖。

    2.3 死鎖檢測

    定義2 占用請求關(guān)系 用四元組(t,m,li,lj)表示占用請求關(guān)系,t為線程,m為線程t調(diào)用的方法,li和lj表示鎖變量,占用請求關(guān)系表示在某個時刻,線程t在調(diào)用方法m時,在占有了鎖li后又去請求占有鎖lj,其中稱是隸屬于方法m的鎖變量對。

    定義3 前序鎖 線程t在調(diào)用方法m時,在請求占有鎖l之前已經(jīng)占有的鎖稱為鎖l的前序鎖,鎖l的前序鎖集用Ll表示。

    類型匹配:如果類C1是類C2的子類,或類C1和類C2是同一個類,或類C1是類C2的父類,則稱類C1和類C2類型匹配。

    定義4 潛在死鎖對 在兩組占用請求關(guān)系(t1,mi,li,lj)和(t2,mj,ls,lk)中,如果鎖變量對有構(gòu)成死鎖環(huán)的可能,則稱{(t1,mi,li,lj),(t2,mj,ls,lk)}為一個潛在死鎖對。

    對并發(fā)類CUT,由其源碼可得到各個方法的鎖序圖,有方法mi和mj的鎖序圖gi和gj,可枚舉出圖gi和gj中的鎖變量對,用表示。如果鎖li和鎖lk的前序鎖集交集不為空,則無潛在死鎖。若交集為空,則如果鎖li、lj、ls和lk均不為形參鎖變量且li和ls別名、lj和lk別名時,有潛在死鎖,稱這類死鎖為普通死鎖;如果鎖li、lj、ls和lk中有一個形參鎖,設(shè)為鎖li,如果鎖lj和lk別名且鎖li和ls的類型相匹配,有潛在死鎖,稱這類死鎖為混合死鎖;如果鎖li、lj、ls和lk中有兩個及以上形參鎖變量,假設(shè)li和lk為形參鎖,那么當li和ls類型匹配、lj和lk類型匹配時,有潛在死鎖。具體算法如下所示:

    Algorithm: ProDeadLockDetect

    輸入:并發(fā)類CUT

    輸出:潛在死鎖對PDL

    0:PDL←φ

    1: for allmi∈CUTdo

    2:gi←StaticAnalysis(obi,CUT)

    //得到方法mi的鎖序圖,obi是方法mi的調(diào)用對象

    3: for allli∈gi.Vdo

    //鄰接表存儲鎖序圖

    4: for alllj∈gi.Vdo

    5:l←lj

    6: ifl.next=lido

    7:Lli←Lli∪{l}

    //得到前序鎖

    8:l←l.next

    9: end for

    10: for allli∈gi.Vdo

    11: ifli.next=φthen

    12: Delete(li,gi)

    //刪除gi中的單結(jié)點

    13: else do

    14:lj←li

    15:pli←pli∪{lj,lj.next}

    //得到鎖變量對

    16:lj=lj.nextwhileli.next=φ

    17: end for

    18: end for

    19: for all ∈pl∧∈pldo

    20: ifLli∩Llk≠φdo

    // 無門鎖

    21: if mayalias(li,ls)∧mayalias(lj,lk) do

    // 普通死鎖

    22:PDL←PDL∪{(t1,mij,li,lj),(t2,mks,lk,ls)}

    23: if.hasParaLock(li,ls)∧ matchtype(li,ls)∧mayalias(lj,lk).

    // 混合死鎖

    24: if.hasParaLock(lj,lk)∧matchtype(lj,lk)∧ mayalias(li,ls)

    // 混合死鎖

    25:PDL←PDL∪{(t1,mij,li,lj),(t2,mks,lk,ls)}

    26: if hasParaLock(li,ls)∧matchtype(li,ls)∧

    27: hasParaLock(lj,lk)∧matchtype(lj,lk)

    // 形參型死鎖

    28:PDL←PDL∪{(t1,mij,li,lj),(t2,mks,lk,ls)}

    29: end for

    3 測試用例生成

    并發(fā)類CUT的單元測試用例由串行前綴和并發(fā)后綴兩部分組成。串行前綴初始化CUT,并調(diào)用CUT中的方法以使CUT的實例達到一個可能會觸發(fā)后綴中死鎖故障的狀態(tài)。并發(fā)后綴是線程調(diào)用潛在死鎖對中的方法,是可以和其他后綴并發(fā)執(zhí)行的調(diào)用序列,每個測試用例有兩個后綴,每個后綴分別調(diào)用潛在死鎖方法對中的一個方法,如此一個測試用例可用一個三元組表示(p,s1,s2),p表示前綴,在后綴執(zhí)行之前執(zhí)行,s1和s2表示后綴。圖1即為一個測試用例的例子,其中0-1行為串行前綴,2-13行為并發(fā)后綴。每個測試用例可用一系列的方法調(diào)用序列(c1,c2,…,cn)表示,其中每個方法調(diào)用ci由一個方法簽名、一個輸入變量列表和一個輸出變量組成。調(diào)用的輸入變量表示傳遞給方法的參數(shù),輸出變量表示方法調(diào)用的返回值。本文方法規(guī)定構(gòu)造函數(shù)調(diào)用作為方法調(diào)用,其輸出變量是一個新的對象,域訪問作為方法其潛在的輸入變量是使用對象,輸出變量為域值。如果每個調(diào)用cj的輸入都是調(diào)用ci的輸出,且i

    串行前綴生成:對潛在死鎖對PDL中每個元素{(t1,mij,li,lj),(t2,mks,lk,ls)}若為普通死鎖類型,生成一個實例對象ob,且ob調(diào)用使得li和ls別名、lj和lk別名的方法;若為混合死鎖類型,生成一個實例對象ob,ob調(diào)用使得li和ls別名的方法,同時將對象lk傳遞給參數(shù)lj?;騩b調(diào)用使得lj和lk別名的方法,同時將對象livi傳遞給參數(shù)ls;若為形參型死鎖類型,生成兩個實例化對象obi和obj,如果形參鎖是CUT的成員變量,對象obi和obj還要調(diào)用CUT中可為形參鎖賦值的方法,將obi作為參數(shù)傳給obj調(diào)用的賦值方法,將obj作為參數(shù)傳給obi調(diào)用的賦值方法。

    并發(fā)后綴生成:串行前綴中若生成一個實例化對象ob,則在后綴s1和s2中,對象ob只需分別調(diào)用{(t1,mi,vi,vj),(t2,mj,vk,vs)}中的方法mi和mj;串行前綴中若生成了兩個實例化對象obi和obj且形參鎖變量非CUT的成員變量,則將obi作為形參鎖的實參傳給obj.mj,將obj作為形參鎖的實參傳給obi.mi。

    除前文已確定的參數(shù),其余參數(shù)采用其他自動化測試用例生成方法中的參數(shù)生成策略[4]。

    4 實驗驗證

    為驗證本文方法CTCG的有效性,提出了以下2個問題進行實驗驗證:

    1) 基于靜態(tài)分析的潛在死鎖代碼分析是否找到了潛在死鎖故障?

    2) 測試用例生成的效率如何?

    4.1 實驗設(shè)計

    為驗證上述問題,本文借助Randoop[16]串行測試用例生成工具和JPF(Java PathFinder)[17]并發(fā)故障檢測工具來實現(xiàn)并發(fā)測試用例的生成和死鎖故障的檢測。實驗以7個常用Java類庫中的類為被測對象,其所在類庫的版本信息、代碼行數(shù)、使用鎖的方法數(shù)、總方法數(shù)及死鎖信息,如表1所示,其中最后一列表示死鎖在jdk 的bug庫中id或相關(guān)文獻對其描述。本文對每個發(fā)現(xiàn)的潛在死鎖對都做了測試用例生成實驗,每次以生成的測試用例檢測到死鎖故障或限定時間到達來結(jié)束本次生成。本文采用邊生成邊執(zhí)行的策略來生成的執(zhí)行測試用例。

    表1 被測類基本信息

    4.2 實驗結(jié)果與分析

    本文通過與并發(fā)類中已知的死鎖故障進行對比來驗證本文靜態(tài)分析方法的效果。表2給出靜態(tài)結(jié)果分析表,從表中可看出本文所采用的靜態(tài)分析方法雖然找到了潛在的死鎖故障,但還是有一定的誤報。誤報的原因是本文的分析是基于可能的別名關(guān)系,這使得一些可能的別名關(guān)系并不能實現(xiàn),還有一些測試用例在執(zhí)行時JPF運行超出內(nèi)存。

    表2 靜態(tài)分析結(jié)果表

    圖2給出了每個CUT在檢測到死鎖故障時所生成的測試用例。由于Ballerina方法不加分析,直接對被測類生成測試用例,使得其檢測到一個故障所生成的測試用例數(shù)隨被測類方法數(shù)呈指數(shù)級上升,如對Logger類,其要生成約105~106個測試用例,耗時500個小時才能檢測到死鎖,所以本文未和其進行對比。從圖3可知,檢測到一個死鎖所要生成的測試用例數(shù)是可接受的。

    圖3給出了檢測到死鎖時生成和執(zhí)行測試用例的時間。對比圖2發(fā)現(xiàn)雖然EventQueue類比Logger類生成的測試用例多,但其執(zhí)行時間卻比Logger類少,這是因為并發(fā)程序的執(zhí)行時間與線程間調(diào)度序列的個數(shù)及每個調(diào)度序列的長度相關(guān),線程間調(diào)度序列的數(shù)目隨著方法對中可并發(fā)執(zhí)行原語數(shù)的增加而呈指數(shù)級的上升。當CUT比較復雜時,執(zhí)行它的測試用例所花費的時間也會較多。從實驗結(jié)果可看出檢測到一個潛在死鎖對中的死鎖故障所用的時間在20~160 s之間。

    圖2 檢測到死鎖時生成的測試用例數(shù)目

    圖3 檢測到死鎖時生成和執(zhí)行測試用例時間

    表3給出了本文方法CTCG與ConSuite方法在檢測到死鎖故障時所執(zhí)行的調(diào)度序列數(shù)及時間開銷。由于除了id為3、4的并發(fā)類外,其它并發(fā)類中的死鎖故障均需要兩個實例對象才能觸發(fā),而Ballerina方法和ConSuite方法都是只能生成一個實例對象的測試用例,所以無法檢測到這些死鎖故障。Ballerina方法和ConSuite方法只生成一個實例對象的測試用例是因為它們想較多地覆蓋一個實例對象的狀態(tài)[4]。從實驗數(shù)據(jù)上看,本文方法CTCG與ConSuite相比在測試用例生成數(shù)上提升了71.1%至79.2%,平均所用時間與ConSuite方法相比節(jié)省了31.3%至45.2%。平均所用時間提升得沒有測試用例數(shù)高是因本文方法CTCG靜態(tài)分析上也花費了一定的時間開銷。

    表3 調(diào)度序列和平均時間開銷表

    5 結(jié) 語

    為了提高針對死鎖的并發(fā)類單元測試用例生成效率,本文先對并發(fā)類進行靜態(tài)分析,以得到潛在死鎖代碼,然后再針對這些代碼自動地生成測試用例。實驗結(jié)果表明本文所用的靜態(tài)分析方法均檢測了并發(fā)類中已有的死鎖故障。在測試用例生成上,本文方法CTCG所生成的測試用例能檢測到Balleria方法和ConSuite方法無法檢測的死鎖故障,在測試用例數(shù)和時間開銷上也有較大提升。

    [1] Microsoft. Unit Testing [EB/OL].[2015-11-12]. https://msdn.microsoft.com/en-us/library/aa292197(v=vs.71).aspx.

    [2] Tai K C. Testing of concurrent software[C]// Computer Software and Applications Conference, 1989. COMPSAC 89. Proceedings of the, International. IEEE Xplore, 1989:62-64.

    [3] Ricken M, Cartwright R. ConcJUnit: unit testing for concurrent programs[C]// International Conference on Principles and Practice of Programming in Java, Pppj 2009, Calgary, Alberta, Canada, August. 2009:129-132.

    [4] Nistor A, Luo Q, Pradel M, et al. Ballerina: Automatic generation and clustering of efficient random unit tests for multithreaded code[C]// International Conference on Software Engineering. IEEE Press, 2012:727-737.

    [5] Steenbuck S, Fraser G. Generating Unit Tests for Concurrent Classes[C]// IEEE Sixth International Conference on Software Testing, Verification and Validation. IEEE, 2013:144-153.

    [6] Pradel M, Huggler M, Gross T R. Performance regression testing of concurrent classes[C]// Proceedings of the 2014 International Symposium on Software Testing and Analysis. ACM, 2014:13-25.

    [7] Havelund K, Rosu G. Monitoring Java Programs with Java PathExplorer[J]. Electronic Notes in Theoretical Computer Science, 2001, 55(2):200-217.

    [8] Agarwal R, Bensalem S, Farchi E, et al. Detection of deadlock potentials in multithreaded programs[J]. Ibm Journal of Research & Development, 2010, 54(5):3:1-3:15.

    [9] Deshmukh J, Emerson E A, Sankaranarayanan S. Symbolic Deadlock Analysis in Concurrent Libraries and Their Clients[C]// ACM International Conference on Automated Software Engineering. IEEE, 2009: 480-491.

    [10] Eslamimehr M, Palsberg J. Sherlock: scalable deadlock detection for concurrent programs [C]// Proceedings of the 22ndACM SISOFT International Symposium on Foundations of Software Engineering. New York, ACM. 2014: 353-365.

    [11]SorrentinoF.PickLock:ADeadlockPredictionApproachunderNestedLocking[C]//InternationalSymposiumonModelCheckingSoftware.Springer-VerlagNewYork,Inc. 2015.

    [12]WuZ,LuK,WangX,etal.CollaborativeTechniqueforConcurrencyBugDetection[J].InternationalJournalofParallelProgramming, 2015, 43(2):260-285.

    [13]NaikM,ParkCS,SenK,etal.Effectivestaticdeadlockdetection[C]//InternationalConferenceonSoftwareEngineering.IEEEComputerSociety, 2009:386-396.

    [14]LuS,ParkS,SeoE,etal.Learningfrommistakes:acomprehensivestudyonrealworldconcurrencybugcharacteristics[J].AcmSigarchComputerArchitectureNews, 2008, 36(3):329-339.

    [15]PradelM,GrossTR.Fullyautomaticandprecisedetectionofthreadsafetyviolations[J].AcmSigplanNotices, 2012, 47(6):521-530.

    [16]PachecoC,LahiriSK,ErnstMD,etal.Feedback-DirectedRandomTestGeneration[C]//InternationalConferenceonSoftwareEngineering. 2007:75-84.

    [17]CeccarelloM,ShafieiN.ToolstogenerateandcheckconsistencyofmodelclassesforJavaPathFinder[J].AcmSigsoftSoftwareEngineeringNotes, 2012, 37(6):1-5.

    [18]WilliamsA,ThiesW,ErnstMD.StaticDeadlockDetectionforJavaLibraries[J].LectureNotesinComputerScience, 2005, 3586:602-629.

    AUTOMATIC GENERATION OF CONCURRENT CLASS UNIT TEST CASES BASED ON DEADLOCK

    Zang Li’na

    (CollegeofInformationScienceandTechnology,BeijingUniversityofChemicalTechnology,Beijing100029,China)

    Automated generation of multithreaded program unit test cases is a technology to save test costs. In order to improve the efficiency of concurrent unit test case generation, the article analyzes the potential deadlock code in the concurrency class according to the characteristics of deadlock failure, and then automatically generates test cases for these codes. The experiment is carried out on the concurrent class of 7 commonly used Java class libraries. Experimental results show that the proposed method (CTCG) not only finds an existing deadlock failure, but also generates fewer test cases and less time when a deadlock failure is detected,and improve the efficiency of the automatic generation of concurrent class unit test cases.

    Concurrent class Deadlock Unit test Tests generating

    2016-04-21。國家自然科學基金項目(61472025,61170082)。臧麗娜,碩士生,主研領(lǐng)域:軟件測試。

    TP311.5

    A

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

    猜你喜歡
    測試用例線程調(diào)用
    基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
    核電項目物項調(diào)用管理的應用研究
    LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
    基于混合遺傳算法的回歸測試用例集最小化研究
    淺談linux多線程協(xié)作
    基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
    基于依賴結(jié)構(gòu)的測試用例優(yōu)先級技術(shù)
    利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
    Linux線程實現(xiàn)技術(shù)研究
    軟件回歸測試用例選取方法研究
    一级片免费观看大全| 男人操女人黄网站| 丰满的人妻完整版| 亚洲国产精品合色在线| 欧美激情久久久久久爽电影 | 一个人免费在线观看的高清视频| 丝瓜视频免费看黄片| 欧美激情 高清一区二区三区| 久久国产乱子伦精品免费另类| 少妇 在线观看| 欧美人与性动交α欧美软件| 高清欧美精品videossex| 欧美乱色亚洲激情| 欧美不卡视频在线免费观看 | 亚洲五月婷婷丁香| 国产一区二区三区在线臀色熟女 | 狠狠狠狠99中文字幕| 午夜亚洲福利在线播放| 亚洲七黄色美女视频| 中文字幕另类日韩欧美亚洲嫩草| 69av精品久久久久久| 国产黄色免费在线视频| 大香蕉久久成人网| 久久午夜亚洲精品久久| 久99久视频精品免费| 亚洲成a人片在线一区二区| 久久久久视频综合| 成人18禁高潮啪啪吃奶动态图| www.熟女人妻精品国产| 看免费av毛片| 精品卡一卡二卡四卡免费| 美国免费a级毛片| 欧美乱色亚洲激情| 九色亚洲精品在线播放| 婷婷成人精品国产| 新久久久久国产一级毛片| 99re在线观看精品视频| 1024香蕉在线观看| 国产欧美亚洲国产| 精品久久久久久久毛片微露脸| 欧美日韩亚洲综合一区二区三区_| 国产精品免费一区二区三区在线 | 午夜精品久久久久久毛片777| 人人妻人人澡人人看| 精品久久久久久电影网| 婷婷丁香在线五月| 黄色丝袜av网址大全| 国产aⅴ精品一区二区三区波| 国产aⅴ精品一区二区三区波| 9色porny在线观看| 在线观看免费高清a一片| 美国免费a级毛片| 亚洲自偷自拍图片 自拍| 水蜜桃什么品种好| 老司机靠b影院| 精品人妻1区二区| 欧美在线黄色| 日韩欧美三级三区| 国产亚洲欧美在线一区二区| 狠狠婷婷综合久久久久久88av| 久久99一区二区三区| 久久精品亚洲av国产电影网| 午夜老司机福利片| 大片电影免费在线观看免费| 中文字幕最新亚洲高清| 亚洲精品久久午夜乱码| 亚洲国产欧美网| 一二三四在线观看免费中文在| 成人av一区二区三区在线看| 丁香欧美五月| 久久天堂一区二区三区四区| 亚洲久久久国产精品| 亚洲精品国产精品久久久不卡| 精品国产乱码久久久久久男人| 精品福利永久在线观看| 国产av又大| 夜夜夜夜夜久久久久| 亚洲国产中文字幕在线视频| xxxhd国产人妻xxx| 黑人操中国人逼视频| 一边摸一边抽搐一进一出视频| 亚洲五月色婷婷综合| 黄网站色视频无遮挡免费观看| 好男人电影高清在线观看| 国产又色又爽无遮挡免费看| 1024香蕉在线观看| 国产亚洲欧美在线一区二区| 大型av网站在线播放| 嫁个100分男人电影在线观看| av片东京热男人的天堂| 熟女少妇亚洲综合色aaa.| 91大片在线观看| 国精品久久久久久国模美| 免费日韩欧美在线观看| 岛国在线观看网站| 精品国产亚洲在线| av天堂在线播放| 欧美黑人欧美精品刺激| 狠狠狠狠99中文字幕| 男人操女人黄网站| 高清av免费在线| 丰满人妻熟妇乱又伦精品不卡| 我的亚洲天堂| 咕卡用的链子| 国产亚洲精品久久久久久毛片 | 日韩有码中文字幕| 亚洲avbb在线观看| 久久香蕉国产精品| 色94色欧美一区二区| 高清黄色对白视频在线免费看| 日韩人妻精品一区2区三区| 亚洲色图 男人天堂 中文字幕| 波多野结衣一区麻豆| 狂野欧美激情性xxxx| 人妻丰满熟妇av一区二区三区 | 国产深夜福利视频在线观看| 久久国产精品男人的天堂亚洲| av有码第一页| 男女下面插进去视频免费观看| 国产精品秋霞免费鲁丝片| 欧美另类亚洲清纯唯美| 亚洲欧美日韩高清在线视频| netflix在线观看网站| 国产亚洲精品久久久久久毛片 | 国产欧美日韩一区二区精品| 首页视频小说图片口味搜索| 人人妻人人添人人爽欧美一区卜| 91九色精品人成在线观看| 在线观看66精品国产| 亚洲全国av大片| 一a级毛片在线观看| 高清视频免费观看一区二区| 精品国产一区二区三区久久久樱花| 十八禁人妻一区二区| 国产成人欧美在线观看 | 一二三四社区在线视频社区8| 亚洲精品中文字幕一二三四区| 男人的好看免费观看在线视频 | www.999成人在线观看| 中文字幕另类日韩欧美亚洲嫩草| 成年人黄色毛片网站| 夜夜夜夜夜久久久久| 黄色怎么调成土黄色| 亚洲自偷自拍图片 自拍| 亚洲三区欧美一区| 亚洲少妇的诱惑av| 19禁男女啪啪无遮挡网站| 亚洲国产欧美一区二区综合| av网站免费在线观看视频| 18禁黄网站禁片午夜丰满| 午夜成年电影在线免费观看| 国产激情欧美一区二区| 一边摸一边抽搐一进一出视频| 悠悠久久av| 少妇被粗大的猛进出69影院| 精品久久久久久久毛片微露脸| 黄片大片在线免费观看| 亚洲一区高清亚洲精品| 亚洲色图综合在线观看| 精品少妇一区二区三区视频日本电影| 好男人电影高清在线观看| 91麻豆精品激情在线观看国产 | 极品教师在线免费播放| 青草久久国产| 成熟少妇高潮喷水视频| 国产精品电影一区二区三区 | 亚洲国产欧美一区二区综合| 三级毛片av免费| 亚洲欧洲精品一区二区精品久久久| 老熟妇乱子伦视频在线观看| 纯流量卡能插随身wifi吗| 黄片小视频在线播放| 免费女性裸体啪啪无遮挡网站| 操出白浆在线播放| 免费久久久久久久精品成人欧美视频| 亚洲成人手机| 一本综合久久免费| 12—13女人毛片做爰片一| 精品乱码久久久久久99久播| 天天操日日干夜夜撸| 久99久视频精品免费| 欧美大码av| 97人妻天天添夜夜摸| 午夜福利视频在线观看免费| 国产男女超爽视频在线观看| 国产精品成人在线| 欧美中文综合在线视频| 丝袜美足系列| 欧美亚洲日本最大视频资源| 国产精品久久久人人做人人爽| 亚洲精品国产精品久久久不卡| 啪啪无遮挡十八禁网站| 国产亚洲欧美98| 看片在线看免费视频| 纯流量卡能插随身wifi吗| 一本一本久久a久久精品综合妖精| а√天堂www在线а√下载 | 亚洲精品国产区一区二| 欧美黄色片欧美黄色片| 亚洲一区二区三区欧美精品| av网站在线播放免费| 少妇猛男粗大的猛烈进出视频| 国产无遮挡羞羞视频在线观看| 黄色女人牲交| 最近最新免费中文字幕在线| 色综合欧美亚洲国产小说| 搡老熟女国产l中国老女人| 久久精品国产a三级三级三级| videosex国产| 亚洲一卡2卡3卡4卡5卡精品中文| 丰满人妻熟妇乱又伦精品不卡| 咕卡用的链子| 久久久久久人人人人人| www.999成人在线观看| 久久九九热精品免费| √禁漫天堂资源中文www| 国产精品久久久久成人av| 村上凉子中文字幕在线| 少妇裸体淫交视频免费看高清 | 亚洲精品在线美女| 久久精品国产清高在天天线| 日韩欧美免费精品| 人人妻人人澡人人看| 一级毛片高清免费大全| 免费在线观看影片大全网站| 久久精品aⅴ一区二区三区四区| 交换朋友夫妻互换小说| 国产单亲对白刺激| 男男h啪啪无遮挡| 热re99久久精品国产66热6| 深夜精品福利| 国产精品成人在线| 黑人欧美特级aaaaaa片| 亚洲精品成人av观看孕妇| 人妻 亚洲 视频| 国产精品久久久久久人妻精品电影| 99久久精品国产亚洲精品| 国产成人av激情在线播放| 亚洲熟女毛片儿| 欧美老熟妇乱子伦牲交| 中亚洲国语对白在线视频| 亚洲综合色网址| 亚洲中文日韩欧美视频| 精品电影一区二区在线| 黑丝袜美女国产一区| 日韩一卡2卡3卡4卡2021年| 一区二区三区国产精品乱码| 亚洲精品国产区一区二| 人妻一区二区av| 麻豆国产av国片精品| 午夜免费鲁丝| 国产99白浆流出| 欧美黑人欧美精品刺激| 欧美日韩视频精品一区| 久久国产精品人妻蜜桃| 成人特级黄色片久久久久久久| 午夜福利一区二区在线看| 最近最新免费中文字幕在线| 午夜成年电影在线免费观看| 国产精品一区二区精品视频观看| 欧美黑人精品巨大| 天天操日日干夜夜撸| 婷婷丁香在线五月| 欧美不卡视频在线免费观看 | a级毛片黄视频| 久久婷婷成人综合色麻豆| 成年人免费黄色播放视频| 国产熟女午夜一区二区三区| 国精品久久久久久国模美| 99国产极品粉嫩在线观看| 狠狠婷婷综合久久久久久88av| 精品无人区乱码1区二区| 咕卡用的链子| 在线观看一区二区三区激情| 国产有黄有色有爽视频| 久久久久视频综合| 老司机在亚洲福利影院| 国产免费av片在线观看野外av| 亚洲人成电影观看| 美女福利国产在线| 新久久久久国产一级毛片| 少妇裸体淫交视频免费看高清 | 亚洲国产看品久久| 亚洲国产精品一区二区三区在线| 精品午夜福利视频在线观看一区| 免费在线观看视频国产中文字幕亚洲| 免费少妇av软件| 国产精品 国内视频| 国产日韩一区二区三区精品不卡| 欧美 日韩 精品 国产| 久久中文字幕人妻熟女| 欧美一级毛片孕妇| 成年版毛片免费区| 国产xxxxx性猛交| 日韩人妻精品一区2区三区| xxxhd国产人妻xxx| 伊人久久大香线蕉亚洲五| 久久中文字幕一级| 法律面前人人平等表现在哪些方面| 亚洲成人免费电影在线观看| 亚洲精品美女久久久久99蜜臀| 欧美人与性动交α欧美精品济南到| 国产1区2区3区精品| av线在线观看网站| 日本a在线网址| 美女扒开内裤让男人捅视频| 欧美精品亚洲一区二区| 捣出白浆h1v1| 日本vs欧美在线观看视频| 午夜福利影视在线免费观看| avwww免费| 男人的好看免费观看在线视频 | 亚洲五月婷婷丁香| 人妻丰满熟妇av一区二区三区 | 99国产综合亚洲精品| 亚洲成国产人片在线观看| 亚洲一区中文字幕在线| 欧美黄色片欧美黄色片| 国产精品秋霞免费鲁丝片| 高清欧美精品videossex| 国产主播在线观看一区二区| 又大又爽又粗| 国产1区2区3区精品| 一区福利在线观看| 久久九九热精品免费| 亚洲va日本ⅴa欧美va伊人久久| 在线观看免费视频网站a站| 超色免费av| 91在线观看av| 精品人妻在线不人妻| 久久久国产成人免费| 丝袜美足系列| 国产主播在线观看一区二区| 欧美日韩视频精品一区| 美国免费a级毛片| 国产不卡av网站在线观看| 欧美人与性动交α欧美精品济南到| 男男h啪啪无遮挡| 一a级毛片在线观看| 国产精华一区二区三区| 国产成人精品久久二区二区免费| 天天影视国产精品| 久久性视频一级片| 美女高潮喷水抽搐中文字幕| 欧美精品一区二区免费开放| 国内久久婷婷六月综合欲色啪| 纯流量卡能插随身wifi吗| 亚洲av日韩精品久久久久久密| 亚洲国产中文字幕在线视频| 美女视频免费永久观看网站| 黑丝袜美女国产一区| 多毛熟女@视频| 国产欧美日韩一区二区三区在线| 男女免费视频国产| 亚洲欧洲精品一区二区精品久久久| 成人av一区二区三区在线看| 少妇裸体淫交视频免费看高清 | 黄片小视频在线播放| 很黄的视频免费| 亚洲色图av天堂| 欧美日本中文国产一区发布| 亚洲综合色网址| 午夜两性在线视频| 天天添夜夜摸| 成人18禁在线播放| 18禁观看日本| 亚洲国产欧美一区二区综合| 真人做人爱边吃奶动态| 久久国产乱子伦精品免费另类| 这个男人来自地球电影免费观看| 中文字幕av电影在线播放| 妹子高潮喷水视频| 一级a爱片免费观看的视频| 夜夜爽天天搞| 国产人伦9x9x在线观看| 大型黄色视频在线免费观看| 成在线人永久免费视频| 欧美国产精品一级二级三级| 日韩免费av在线播放| 国产成人精品久久二区二区91| 99精品在免费线老司机午夜| 亚洲国产毛片av蜜桃av| 18禁裸乳无遮挡免费网站照片 | 99久久综合精品五月天人人| 精品国产超薄肉色丝袜足j| 日韩视频一区二区在线观看| 精品第一国产精品| 免费黄频网站在线观看国产| 这个男人来自地球电影免费观看| 色播在线永久视频| 两个人免费观看高清视频| 免费观看a级毛片全部| 欧美国产精品va在线观看不卡| 国产一区二区激情短视频| 制服人妻中文乱码| 久久国产乱子伦精品免费另类| 啪啪无遮挡十八禁网站| 99国产精品99久久久久| 另类亚洲欧美激情| 久久久国产成人精品二区 | 男人舔女人的私密视频| 欧美精品人与动牲交sv欧美| 成人18禁高潮啪啪吃奶动态图| 天天躁狠狠躁夜夜躁狠狠躁| 欧美精品一区二区免费开放| 九色亚洲精品在线播放| 欧美日韩中文字幕国产精品一区二区三区 | 欧美日韩中文字幕国产精品一区二区三区 | 午夜日韩欧美国产| 热99久久久久精品小说推荐| 女人精品久久久久毛片| 热re99久久精品国产66热6| 亚洲aⅴ乱码一区二区在线播放 | 成熟少妇高潮喷水视频| 在线观看www视频免费| 满18在线观看网站| 色综合婷婷激情| 亚洲精品一二三| 国产97色在线日韩免费| 妹子高潮喷水视频| 满18在线观看网站| 韩国av一区二区三区四区| 中文字幕人妻丝袜一区二区| 免费久久久久久久精品成人欧美视频| 亚洲伊人色综图| 国产精品成人在线| 午夜激情av网站| 极品教师在线免费播放| 国产单亲对白刺激| 国内久久婷婷六月综合欲色啪| 亚洲精品av麻豆狂野| 国产亚洲精品久久久久久毛片 | 亚洲精品国产色婷婷电影| 超碰97精品在线观看| а√天堂www在线а√下载 | 欧美日韩精品网址| 天天添夜夜摸| 欧洲精品卡2卡3卡4卡5卡区| 国产精品一区二区精品视频观看| 五月开心婷婷网| 久久热在线av| 啦啦啦免费观看视频1| av福利片在线| 久热爱精品视频在线9| 国产亚洲精品久久久久5区| 精品高清国产在线一区| 成年人免费黄色播放视频| 丰满人妻熟妇乱又伦精品不卡| 美女午夜性视频免费| 人人妻人人澡人人看| 在线观看舔阴道视频| 久久久水蜜桃国产精品网| 黑人欧美特级aaaaaa片| 国产精品香港三级国产av潘金莲| 欧美丝袜亚洲另类 | 三上悠亚av全集在线观看| 免费日韩欧美在线观看| av电影中文网址| 日韩视频一区二区在线观看| 黄色a级毛片大全视频| avwww免费| 久久久国产成人精品二区 | 美女视频免费永久观看网站| 久久精品成人免费网站| 久久精品亚洲精品国产色婷小说| 美女高潮到喷水免费观看| 脱女人内裤的视频| 午夜福利,免费看| 伦理电影免费视频| 精品一品国产午夜福利视频| 免费在线观看亚洲国产| 不卡一级毛片| 夜夜爽天天搞| av不卡在线播放| 老司机在亚洲福利影院| 日韩欧美一区二区三区在线观看 | 国产精品美女特级片免费视频播放器 | 亚洲av成人不卡在线观看播放网| 最新的欧美精品一区二区| a级毛片黄视频| 18禁美女被吸乳视频| 天天躁日日躁夜夜躁夜夜| 一个人免费在线观看的高清视频| 精品国内亚洲2022精品成人 | 国产精品 国内视频| 757午夜福利合集在线观看| 天堂中文最新版在线下载| 91在线观看av| 色94色欧美一区二区| 91精品国产国语对白视频| 捣出白浆h1v1| 午夜免费鲁丝| 男女床上黄色一级片免费看| 国产精品永久免费网站| 午夜福利欧美成人| 首页视频小说图片口味搜索| 婷婷精品国产亚洲av在线 | 12—13女人毛片做爰片一| 欧美色视频一区免费| 亚洲欧美激情在线| 久久精品成人免费网站| 亚洲欧美日韩另类电影网站| 中亚洲国语对白在线视频| 欧美精品亚洲一区二区| 国产伦人伦偷精品视频| 王馨瑶露胸无遮挡在线观看| 视频区欧美日本亚洲| 热re99久久国产66热| 午夜福利免费观看在线| 啦啦啦在线免费观看视频4| 久久久国产精品麻豆| 脱女人内裤的视频| 啦啦啦 在线观看视频| 91大片在线观看| 18禁国产床啪视频网站| 美女扒开内裤让男人捅视频| 久久狼人影院| 高清av免费在线| 另类亚洲欧美激情| 亚洲情色 制服丝袜| 国产欧美日韩精品亚洲av| 国产在线精品亚洲第一网站| 久久狼人影院| 色综合欧美亚洲国产小说| 国产一区在线观看成人免费| 久久久久国产一级毛片高清牌| 久久国产乱子伦精品免费另类| 狂野欧美激情性xxxx| 美女午夜性视频免费| 91麻豆av在线| 国产淫语在线视频| 日韩欧美在线二视频 | 首页视频小说图片口味搜索| 亚洲成人免费av在线播放| 色婷婷av一区二区三区视频| 在线视频色国产色| 亚洲综合色网址| av在线播放免费不卡| 日韩欧美在线二视频 | 男女高潮啪啪啪动态图| 丰满的人妻完整版| av一本久久久久| 中文字幕人妻丝袜一区二区| 国产在线精品亚洲第一网站| 99精品欧美一区二区三区四区| 亚洲 欧美一区二区三区| 亚洲中文av在线| 成人永久免费在线观看视频| а√天堂www在线а√下载 | 亚洲九九香蕉| 一本大道久久a久久精品| 性色av乱码一区二区三区2| 免费日韩欧美在线观看| 在线看a的网站| 亚洲专区国产一区二区| 人妻丰满熟妇av一区二区三区 | 国产欧美日韩综合在线一区二区| 又紧又爽又黄一区二区| 久久精品91无色码中文字幕| 成年版毛片免费区| 丝袜人妻中文字幕| 动漫黄色视频在线观看| 欧美乱妇无乱码| 每晚都被弄得嗷嗷叫到高潮| 99久久国产精品久久久| 久久精品国产a三级三级三级| 三级毛片av免费| 男女午夜视频在线观看| 婷婷丁香在线五月| av在线播放免费不卡| 欧美中文综合在线视频| 久久天堂一区二区三区四区| 精品久久久久久久久久免费视频 | 国产野战对白在线观看| 成年女人毛片免费观看观看9 | 老鸭窝网址在线观看| 麻豆乱淫一区二区| 后天国语完整版免费观看| 飞空精品影院首页| 久久久精品国产亚洲av高清涩受| 精品久久久久久,| 免费久久久久久久精品成人欧美视频| 久久狼人影院| 成人18禁在线播放| av在线播放免费不卡| 自拍欧美九色日韩亚洲蝌蚪91| av在线播放免费不卡| 黄色丝袜av网址大全| 精品人妻在线不人妻| 可以免费在线观看a视频的电影网站| 国产无遮挡羞羞视频在线观看| 69av精品久久久久久| www日本在线高清视频| 日韩欧美免费精品| 午夜福利影视在线免费观看| 国产亚洲精品久久久久5区| 欧美 亚洲 国产 日韩一| 一夜夜www| 亚洲色图av天堂| 性色av乱码一区二区三区2| 免费日韩欧美在线观看| 叶爱在线成人免费视频播放| 日韩免费高清中文字幕av| 免费女性裸体啪啪无遮挡网站| 欧美精品啪啪一区二区三区| 亚洲黑人精品在线| 久久久久国产精品人妻aⅴ院 | 亚洲欧美激情综合另类| 精品电影一区二区在线| 日韩有码中文字幕| 国产深夜福利视频在线观看| 女警被强在线播放| 999精品在线视频| 99香蕉大伊视频| 男人舔女人的私密视频|