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

    基于多線程并發(fā)的JUnit與TestNG測試框架比較①

    2017-06-07 08:24:05汪添生馬朝晗趙俊峰
    計算機系統(tǒng)應(yīng)用 2017年5期
    關(guān)鍵詞:單元測試配置文件開發(fā)人員

    汪添生,馬朝晗,崔 蔚,劉 迪,4,趙俊峰,夏 飛

    1(國網(wǎng)信息通信產(chǎn)業(yè)集團有限公司,北京 100761)

    2(廈門億力吉奧信息科技有限公司,廈門 361000)

    3(國網(wǎng)信通產(chǎn)業(yè)集團億力科技公司,北京 100053)

    4(北京中電普華信息技術(shù)有限公司,北京 100085)

    5(國網(wǎng)江蘇省電力公司通信分公司,南京 210008)

    基于多線程并發(fā)的JUnit與TestNG測試框架比較①

    汪添生1,2,馬朝晗3,崔 蔚1,劉 迪1,4,趙俊峰5,夏 飛5

    1(國網(wǎng)信息通信產(chǎn)業(yè)集團有限公司,北京 100761)

    2(廈門億力吉奧信息科技有限公司,廈門 361000)

    3(國網(wǎng)信通產(chǎn)業(yè)集團億力科技公司,北京 100053)

    4(北京中電普華信息技術(shù)有限公司,北京 100085)

    5(國網(wǎng)江蘇省電力公司通信分公司,南京 210008)

    在多線程并發(fā)測試需求面前,Junit和TestNG這兩個簡單的單元測試框架一直被拿來作比較,而用戶一般更偏向于配置簡單、靈活、易操作且滿足測試要求的測試框架.本文對Junit和TestNG兩種多線程并發(fā)測試方式進行實驗對比,目的在于驗證兩種框架對多線程并發(fā)測試的實現(xiàn)方式,為用戶在實際測試場景中選擇工具提出了依據(jù).

    多線程;并發(fā)測試;JUnit;TestNG

    隨著社會的信息化氣味越來越濃重,催促著IT業(yè)的快速發(fā)展,軟件的需求已經(jīng)融入各個行業(yè),用來輔助業(yè)務(wù)的信息化,規(guī)范化和正規(guī)化發(fā)展.軟件的測試技術(shù)將首先解決軟件開發(fā)過程的各種問題,而軟件單元測試在編碼完成后用來對軟件接口等方法進行驗證,是整個軟件生命周期中一個必不可少的環(huán)節(jié),降低軟件使用過程中的出錯率[1].軟件開發(fā)人員更喜歡在軟件投入集成測試前進行自我驗證,減少軟件的缺陷,但這其實更是一個理所應(yīng)當?shù)牟襟E,后面進行集成測試或者系統(tǒng)測試的測試人員都不會花時間去測試一個編碼本身都存在問題的軟件.

    大多數(shù)的在單元測試主要由開發(fā)人員來進行,一般主要包括五個方面的測試任務(wù):邊界條件測試、模塊中所有獨立路徑測試、模塊的各條錯誤處理通路測試、局部數(shù)據(jù)結(jié)構(gòu)測試、模塊接口測試[2].這些測試任務(wù)中涉及到的代碼覆蓋率、重復(fù)率、并發(fā)性等問題,促使一些優(yōu)秀自動化測試框架產(chǎn)品的誕生,方便了開發(fā)人員的單元測試工作.目前比較常用的自動化測試框架有C++的CppUnit、CXXTest,Java的Junit、TestNG等[3-5].針對JAVA語言開發(fā)的軟件單元測試,Junit和TestNG在集成開發(fā)工具Eclipse中提供了插件的支持,受到很開發(fā)人員的喜愛,它提高了單元測試的效率,大大節(jié)約的開發(fā)人員編寫測試用例的時間,通過最后測試分析,更容易發(fā)現(xiàn)編碼當中存在缺陷[6-11].

    1 測試工具多線程簡介

    在最新的Junit版本Junit4中已經(jīng)不需要測試方法以Test開頭,不用再繼承TestCase類等,同時此版本提供了注解,注解的使用簡化的測試用例的代碼量,提高測試的效率,但Junit4本身支持多線程并發(fā)測試,卻沒有提供的相應(yīng)注解,相比Junit4,TestNG在多線程測試方面則提供了相應(yīng)的注解.最簡單的方式是在要測試的方法前加上注解,如:

    @Test(threadPoolSize=10,invocationCount=3, timeOut=1000),通 過 在 @Test注 解 中 配 置threadPoolSize這個屬性來進入多線程模式的.屬性threadPoolSize的值代表該測試方法將會在10個不同的線程中同時執(zhí)行,屬性invocationCount配置的是該測試方法將被執(zhí)行的總次數(shù),timeOut的值將規(guī)定每次執(zhí)行該測試方法所耗費時間的閾值,超時則測試失敗[12-14],這是最簡單的方法級別的多線程配置.

    1.1 Junit多線程簡介

    對于傳統(tǒng)的測試方式,大家都會使用main方法來執(zhí)行測試的方法,對于要執(zhí)行多線程的方法,創(chuàng)建一個線程類,再循環(huán)執(zhí)行線程類,以此來做到測試多線程并發(fā).Junit4支持通過在要進行測試多線程的類前加上注解:@RunWith(TestRunner.class),TestRunner是自定義的類,繼承了BlockJUnit4ClassRunner,而擴展的TestRunner內(nèi)部則實現(xiàn)了對多線程的定義,使得加上了該注解的類按TestRunner中的實現(xiàn)來跑多線程.

    盡管Junit4對比之前幾個版本的Junit,最大的一個亮點是提供了注解,方便很多測試需要,但遺憾的是沒有提供多線程并發(fā)測試的注解.而TestNG則彌補了Junit的不足,支持的多線程并發(fā)測試的XML配置.

    1.2 TestNG多線程簡介

    TestNG支持在多線程環(huán)境中執(zhí)行的測試方法,這種靈活的配置只需在所需測試的方法前加上一個注解,如 前 面 介 紹 的 @Test(threadPoolSize = 10, invocationCount=3,timeOut=1000),不僅如此,通過XML的配置,TestNG更能支持并行執(zhí)行測試方法,測試類,測試組件.testng.xml文件的節(jié)點屬性parallel可以設(shè)置多線程并發(fā)運行測試的類型,屬性thread-count可以設(shè)置并發(fā)執(zhí)行時的線程池數(shù)量.

    相對于傳統(tǒng)的單線程執(zhí)行測試的方式,這種多線程方式擁有很大的優(yōu)勢,由于是并發(fā)測試,總體測試的運行時間則可以大大減少,并且可以單獨驗證某段代碼在多線程環(huán)境中運行的正確性.

    2 實驗場景設(shè)計

    2.1 Junit4多線程實現(xiàn)

    2.1.1 通過main方法實現(xiàn)多線程

    現(xiàn)在我們用傳統(tǒng)的main方法來執(zhí)行線程,首先設(shè)計一個類,其中有兩個待測試的方法,方法的內(nèi)容都是打印出一行信息,打印的信息后面拼接一個線程ID,主要代碼如表1所示.

    表1 Junit測試類設(shè)計代碼

    通過表1的代碼,我們可以知道測試類JunitA中有兩個方法junitAMethodOne和junitAMethodTwo,這兩個方法前面標注了@Test,說明兩個方法是要借助Junit框架進行測試的方法.在方法的內(nèi)部,做的主要工作就是打印出一句信息,如:System.out.println ("junitAMethodOne"+id),打印的信息拼接了一個線程ID,此線程ID可以幫助我們知道該方法是被哪個線程所執(zhí)行.線程ID的線程的標識,通過它我們就能判斷兩個方法是在不同的線程中執(zhí)行還是在同一個線程中執(zhí)行.

    設(shè)計好測試類后,通過在另一個擁有main方法的類中來測試上述的兩個方法,主要代碼如表2所示.在mian方法中使用循環(huán)來開啟多個線程Thread,這里開啟了2個線程.線程run方法是執(zhí)行任務(wù)的地方,這里使用JUnitCore.runClasses來執(zhí)行要測試的類,這樣會以線程模式來運行測試類中所有標注了@Test的方法.JUnitCore是執(zhí)行所有測試類的核心入口類,通過JUnitCore調(diào)用runClassses()方法,傳遞一個我們要進行的測試類數(shù)組,數(shù)組有一個值,即JunitA.class,運行后,將會有2個線程來并發(fā)執(zhí)行測試類JunitA中的兩個方法.

    表2 main方法內(nèi)部主要代碼

    運行表2中的代碼得到如表3所示的運行結(jié)果,從表3的運行結(jié)果可以看出,有兩個線程ID分別為8和9的線程執(zhí)行了測試類JunitA中的方法,線程8執(zhí)行后打印出:junitAMethodOne 8和junitAMethodTwo 8;線程 9執(zhí)行后打印出:junitAMethodOne 9和junitAMethodTwo 9.

    表3 通過main方法運行結(jié)果

    2.1.2 自定義Runner實現(xiàn)多線程

    Junit4框架中引入了擴展的機制,它允許我們通過自定義Runner來個性化我們自己的測試需求.Junit中的測試用例是交由Runner去執(zhí)行的,所以擴展這個Runner,我們也達到多程線并發(fā)測試需求.默認情況下Junit4使用BlockJUnit4ClassRunner,在開發(fā)我們自己的Runner類時,需要繼承BlockJUnit4ClassRunner,自定義Runner類關(guān)鍵代碼如表4所示.

    表4 自定義Runner類

    private final FrameworkMethod method; private final RunNotifier notifier; @Override public void run() { MultiThreadedRunner.super.runChild(method,notifier);//通過參數(shù)method的傳遞運行測試類的方法numThreads.decrementAndGet(); } } } }

    從表 4代碼可以看出,自定義的MultiThreadedRunner內(nèi)部嵌套了一個實現(xiàn)了Runnable接口的內(nèi)部類,而這個內(nèi)部類是實現(xiàn)多程線的關(guān)鍵,通過實現(xiàn) Runnable接口中的 run方法來執(zhí)行MultiThreadedRunner的runChild方法,runChild是執(zhí)行測試類的測試方法,在該方法中,由變量thread_count控件著啟動線程的個數(shù),這里設(shè)置為4,然后通過new Thread(new Test(method,notifier)).start()運行線程,從而做到多線程并發(fā)測試的目的,所以內(nèi)部關(guān)鍵代碼其實和通過main方法的實現(xiàn)方式是類似的,只是自定義的Runner類如何運用于測試類呢?

    擴展了Runner后,在要進行測試的JunitA類前加上 注 解 @RunWith(MultiThreadedRunner.class),則JunitA運行時會使用MultiThreadedRunner來跑多線程.其運行結(jié)果如表5所示.

    表5 通過自定義Runner運行結(jié)果

    從表5的運行結(jié)果可以看出,此方式只針對測試類的第一個方法運行多線程并發(fā)測試,因此對于實際業(yè)務(wù)測試過程中需要對某個特定的重要接口進行多線程并發(fā)測試可以使用此方式,只要設(shè)置好thread_count變量的值,可以任意進行測試.

    2.2 TestNG多線程實現(xiàn)

    TestNG的多線程一直是開發(fā)人員在執(zhí)行方法并發(fā)測試時的首選,基于XML文件的配置簡單,靈活,容易上手,滿足的場景多樣性,而且TestNG的多線程并發(fā)測試是安全的,XML配置文件的結(jié)構(gòu)圖如圖1所示.

    圖1 XML多線程配置文件結(jié)構(gòu)圖

    表6說明了XML涉及多線程配置時各節(jié)點的意義.通過在XML文件中的相關(guān)節(jié)點的配置,我們可以只對一個類中的所有方法進行并發(fā)測試;對多個類進行并發(fā)測試;對同一個測試套件內(nèi)的多個測試組件進行并發(fā)測試.

    表6 XML多線程配置文件屬性節(jié)點說明

    接下來我們運用TestNG通過基于XML的配置方式來實現(xiàn)對測試類的多線程實現(xiàn)設(shè)計.首先設(shè)計一個測試類TestngA,類中有兩個待測試的方法,方法的內(nèi)容都是打印出一行信息,打印的信息后面拼接一個線程ID,主要代碼如表7所示.

    表7 TestNG測試類設(shè)計代碼

    public void testngAMethodTwo(){ long id=Thread.currentThread().getId();/獲取一個線程ID System.out.println("testngAMethodTwo"+id);//方法二打印帶有線程ID的一條信息} }

    2.2.1 并發(fā)執(zhí)行測試方法

    現(xiàn)在我們通過基于XML文件的配置方式來測試多線程的并發(fā)測試實驗.并發(fā)執(zhí)行測試類中的所有測試方法對應(yīng)的XML配置文件如表8所示.

    表8 并發(fā)測試方法的XML文件配置

    從表8中我們看到suite這個節(jié)點有個parallel屬性設(shè)置成了“methods”,它代表TestNG將在不同的線程內(nèi)運行測試方法.“thread-count”代表啟用的線程個數(shù),此處設(shè)置成2,代表將有2個線程被分配來執(zhí)行測試方法.因此針對測試類TestngA中的兩個方法,將會在2個不同的線程內(nèi)被執(zhí)行.

    通過右擊此XML配置文件,選擇Run as->TestNG Suite,可以看到運行結(jié)果如表9所示,從輸出結(jié)果后面拼接的線程ID可以看出,2個方法是在不同的線程內(nèi)執(zhí)行的.

    表9 TestNG并發(fā)執(zhí)行測試方法的運行結(jié)果

    2.2.2 并發(fā)執(zhí)行測試類

    由于本節(jié)要以多線程的模式并發(fā)執(zhí)行測試類,因此需要再設(shè)計一個測試類TestngB,該類也有兩個測試方法:testngBMethodOne和testngBMethodTwo,其它和測試類TestngA相同,方法內(nèi)部也是打印出帶有線程ID的信息.現(xiàn)在修改上節(jié)的XML配置文件,使它能夠在測試類之間并發(fā)執(zhí)行,修改后的XML配置文件如表10所示.

    表10 并發(fā)測試類的XML文件配置

    對比表8的配置文件,我們可以看出,唯一不同的是為滿足并發(fā)執(zhí)行測試類,需要在classes節(jié)點下再增加要并發(fā)執(zhí)行的測試類的信息,我們在本例中配置了TestngA和TestngB兩個測試類,運行后的結(jié)果如表11所示.

    表11 TestNG并發(fā)執(zhí)行測試類的運行結(jié)果

    從表11的運行結(jié)果可以看出,TestngA的方法testngAMethodOne和TestngB的方法testngBMethodOne是在線程9內(nèi)執(zhí)行的,而TestngA的方法testngAMethodTwo和TestngB的方法testngBMethodTwo是在線程10內(nèi)執(zhí)行的,也就是說TestngA和TestngB兩個測試類是并發(fā)被執(zhí)行的.

    2.2.3 并發(fā)執(zhí)行測試組件

    XML配置文件的test節(jié)點是用來配置測試組件,前面2節(jié)的配置文件中,測試類都是配置在同一個名為“test1”測試組件中的,現(xiàn)在我們修改XML配置文件,將 TestngA分配在名為“test1”的測試組件中,將TestngB分配在名為“test2”的測試組件中,修改后的XML配置文件如表12所示.

    表12 并發(fā)執(zhí)行測試組件的XML文件配置

    運行表12的配置文件得到的運行結(jié)果如表13所示.

    表13 TestNG并發(fā)執(zhí)行測試組件的運行結(jié)果

    從表13的運行結(jié)果可以看出,雖然配置文件中thread-count設(shè)置成2,表示用2個線程來運行兩個測試組件,但對于TestngA和TestngB中的2個方法, TestNG又分別分配了2個不同的進程來執(zhí)行.由此得到的結(jié)論是,不同的組件中的測試類TestNG保證了它們在獨立的進程中執(zhí)行,同時根據(jù)suite節(jié)點中的thread-count屬性的設(shè)置分配了所設(shè)置個數(shù)的線程數(shù)量來運行各個測試組件中的測試方法.

    2.3 JUnit和TestNG對比分析

    通過實驗得出的基于多線程并發(fā)測試的JUnit和TestNG兩種測試框架的技術(shù)對比結(jié)果如表14所示.

    表14 多線程并發(fā)的JUnit和TestNG框架對比

    從表14的框架對比內(nèi)容可以看出,兩種測試框架中都可以達到大家的多線程并發(fā)測試的需求,Junit通過main方法或者自定義的Runner來運行測試方法,方法內(nèi)部都是執(zhí)行定義的線程類達到并發(fā)測試; TestNG則更加方便的提供了方法級的注解以及簡單的XML配置,就可以輕松并發(fā)測試,同時無需再去通過編代碼來達到目的.

    執(zhí)行并發(fā)測試時,Junit相比TestNG來說,更多的是我們在控制著執(zhí)行的代碼,TestNG則相對偏于配置的組合,一個簡單的XML配置文件便能撐起整個并發(fā)測試的需求.因此結(jié)合這幾個點來說,TestNG在多線程并發(fā)測試方面的優(yōu)勢則比Junit更為突出.

    3 結(jié)語

    在java單元測試方面,JUnit和TestNG一直是開發(fā)人員最常用的開源自動化測試框架,兩者各有不同的特性,而TestNG則優(yōu)于JUnit,TestNG創(chuàng)建的靈感來自于JUnit和NUnit,但它卻不是一個JUnit的擴展.從支持多程線方面,可以看出,JUnit不管是否實現(xiàn)自定義的Runner,還是從傳統(tǒng)的定義線程類開始,都需要用戶手動編寫代碼來達到測試的目的,同時對特殊場景,還得考慮它的線程安全問題;TestNG基于XML配置的方式來運行多線程或者通過方法級上的注解便可支持多種并發(fā)測試的需求,而且配置文件簡單、靈活、方便,無需用戶多花時間研究它的代碼即可進行測試.所以在進行多線程并發(fā)測試方面,選擇TestNG單元測試框架將是一個正確的決定.

    在其他測試需求方面,TestNG還有JUnit框架無法比擬的優(yōu)點,但兩者都有自己適用的場景,開發(fā)人員最需要的是選擇一個適用自己場景的單元測試框架,選擇最合適的會比選擇功能最多的給用戶帶來更意想不到的結(jié)果,靈活的運用測試框架才會完成高效的測試工作.

    1周瑞陽,王猛.基于三層體系結(jié)構(gòu)的單元測試框架研究與實現(xiàn).計算機應(yīng)用,2010,30(8):29–37.

    2白凱,崔冬華.基于JUnit自動化單元測試的研究.計算機與數(shù)字工程,2010,38(2):52–54.

    3孔亮亮,殷兆麟.Java類測試工具JUnit的分析與擴展.計算機工程與設(shè)計,2005,26(12):3413–3416.

    4董曉霞.相鄰因素組合測試用例集的最優(yōu)生成方法閉.計算機學(xué)報,2007,30(2):200–210.

    5 Denis A,Perez C,Priol T,et al.Padico:A component-based software infrastructure for Grid computing.Proc.of lnternational Parallel and Distributed Processing Symposium. ftp://ftp.inria.fr/INRIA/publication/publi-pdf/RR/RR-4974.pdf. [2010-03-01].

    6 Bradley S.Green.Software test automation.ACM,2000,17 (9):9–45.

    7 Zhu H,Wong WE,Belli F.Advancing test automation technologyto meet the challenges of model-driven software development.ACM,2008,19(15):5–10.

    8 Beust C,Suleiman H.Next generation Java testing:TestNG and advanced concepts.Pearson Education,2007.

    9 Wang XC,Xu PJ.Build an Auto Testing Framework Based on Seleniumand FitNesse.2009 International Conference on InformationTechnology and Computer Science.2009,2.436–439.

    10余波,王樹林,張大方.基于JUnit自動生成類測試案例框架的實現(xiàn).計算機工程與應(yīng)用,2006,42(10):60–98.

    11白凱,崔冬華.基于JUnit自動化單元測試的研究.計算機與數(shù)字工程,2010,38(2):32–35.

    12王晶,樊曉婭,張盛兵,等.同時多線程結(jié)構(gòu)的2級調(diào)度策略.西北工業(yè)大學(xué)學(xué)報,2007,(3):433–437.

    13肖明清,朱小平,夏銳.并行測試技術(shù)綜述.空軍工程大學(xué)學(xué)報(自然科學(xué)版),2005,(3):22–25.

    14夏銳,肖明清,朱小平,等.并行測試技術(shù)在自動系統(tǒng)中的應(yīng)用.計算機測量與控制,2005,13(1):7–10.

    Comparison of JUnit and TestNG Testing Framework Based on Concurrent Multi-Thread

    WANG Tian-Sheng1,2,MAZhao-Han3,CUI Wei1,LIU Di1,4,ZHAO Jun-Feng5,XIAFei5

    1(State Grid Information&Telecommunication Co.Ltd.,Beijing 100761,China)
    2(Xiamen Great Power Geo Information Technology Co.Ltd.,Xiamen 361000,China)
    3(Great Power Science and Technology Corporation State Grid Information&Telecommunication Group,Beijing100053,China)
    4(Beijing China-Power Information Technology Co.Ltd.,Beijing 100085,China)
    5(State Grid Jiangsu Electric Power Company&Telecommunication Branch,Nanjing 210008,China)

    In front of multi-threaded concurrent test requirements,Junit and TestNG these two simple unit test framework has been used to compare,but users generally prefer to the test framework that configuration is simple, flexible,and easy to operate and satisfied the test requirements.This thesis has made an experimental comparison of Junit and TestNG on multi-threaded concurrent test methods,to verify the two frameworks implementation for multithreaded concurrent test,and provides the basis for the user to select the tool in the actual test scenario for users.

    multi-thread;concurrent testing;JUnit;TestNG

    2016-09-02;收到修改稿時間:2016-11-07

    10.15888/j.cnki.csa.005774

    猜你喜歡
    單元測試配置文件開發(fā)人員
    提示用戶配置文件錯誤 這樣解決
    搭建簡單的Kubernetes集群
    互不干涉混用Chromium Edge
    Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
    忘記ESXi主機root密碼怎么辦
    讓W(xué)indows 10進入開發(fā)者模式
    電腦迷(2015年12期)2015-04-29 23:22:51
    后悔了?教你隱藏開發(fā)人員選項
    電腦愛好者(2015年6期)2015-04-03 01:20:56
    一年級上冊第五單元測試
    一年級上冊一、二單元測試
    第五單元測試卷
    日韩视频在线欧美| 成人毛片60女人毛片免费| 熟女av电影| 伊人久久精品亚洲午夜| 欧美人与善性xxx| 色94色欧美一区二区| 成年人免费黄色播放视频 | 色94色欧美一区二区| 午夜福利网站1000一区二区三区| 国产免费一级a男人的天堂| 一区二区三区精品91| 国内揄拍国产精品人妻在线| 少妇被粗大猛烈的视频| 一本—道久久a久久精品蜜桃钙片| 97超视频在线观看视频| 久久午夜综合久久蜜桃| 精品卡一卡二卡四卡免费| 丰满迷人的少妇在线观看| 免费高清在线观看视频在线观看| a级片在线免费高清观看视频| 国产精品一二三区在线看| 成人综合一区亚洲| 国产日韩欧美亚洲二区| 久久婷婷青草| 亚洲经典国产精华液单| 国产高清不卡午夜福利| 亚洲av日韩在线播放| 这个男人来自地球电影免费观看 | 99re6热这里在线精品视频| 久久久欧美国产精品| 欧美日本中文国产一区发布| 久久久久久久久久久久大奶| 国产熟女午夜一区二区三区 | 亚洲精品久久久久久婷婷小说| 日韩不卡一区二区三区视频在线| 美女国产视频在线观看| 色哟哟·www| av卡一久久| 毛片一级片免费看久久久久| 高清不卡的av网站| 亚洲国产最新在线播放| 国产中年淑女户外野战色| 秋霞在线观看毛片| av线在线观看网站| 国产在线男女| 黄色一级大片看看| 亚洲欧美精品自产自拍| 哪个播放器可以免费观看大片| 99热网站在线观看| 成人影院久久| 午夜91福利影院| 日韩 亚洲 欧美在线| 欧美日韩亚洲高清精品| 观看免费一级毛片| 麻豆成人av视频| 高清午夜精品一区二区三区| 久久99精品国语久久久| 中国三级夫妇交换| 日韩成人av中文字幕在线观看| 国产亚洲精品久久久com| 亚洲国产色片| 成人二区视频| 国产av一区二区精品久久| 少妇高潮的动态图| 少妇被粗大猛烈的视频| 日日摸夜夜添夜夜爱| 特大巨黑吊av在线直播| 欧美人与善性xxx| 午夜av观看不卡| 人人妻人人添人人爽欧美一区卜| 免费看av在线观看网站| 日韩,欧美,国产一区二区三区| 哪个播放器可以免费观看大片| 久久99热这里只频精品6学生| 极品教师在线视频| 黄色配什么色好看| 看非洲黑人一级黄片| 久久国产亚洲av麻豆专区| 妹子高潮喷水视频| 国产在线视频一区二区| 国产一区二区三区综合在线观看 | 大陆偷拍与自拍| 日本黄大片高清| 哪个播放器可以免费观看大片| 欧美另类一区| 国产精品女同一区二区软件| 国内精品宾馆在线| 国产精品蜜桃在线观看| 成人综合一区亚洲| 夫妻性生交免费视频一级片| 一级,二级,三级黄色视频| 大码成人一级视频| 国产精品久久久久久av不卡| 乱系列少妇在线播放| 久久久国产欧美日韩av| 国产一区二区三区综合在线观看 | 免费黄频网站在线观看国产| 欧美激情国产日韩精品一区| 黑丝袜美女国产一区| 午夜日本视频在线| 最近最新中文字幕免费大全7| 免费大片18禁| 国产精品久久久久久精品电影小说| 国产在线一区二区三区精| 久久av网站| 亚洲精品自拍成人| 丰满人妻一区二区三区视频av| 久久综合国产亚洲精品| 国产在视频线精品| 亚洲av.av天堂| 欧美bdsm另类| 国产男女内射视频| 一二三四中文在线观看免费高清| 亚洲av综合色区一区| 亚洲无线观看免费| 国产精品国产三级专区第一集| 十分钟在线观看高清视频www | a 毛片基地| 熟妇人妻不卡中文字幕| 亚洲人成网站在线观看播放| 国内少妇人妻偷人精品xxx网站| 各种免费的搞黄视频| 免费观看无遮挡的男女| 91精品国产九色| 精品一区二区三卡| 亚洲欧美精品自产自拍| 99久久中文字幕三级久久日本| av在线播放精品| 国产视频内射| 国产在线男女| 国产精品一区二区在线观看99| 日产精品乱码卡一卡2卡三| 自拍欧美九色日韩亚洲蝌蚪91 | h视频一区二区三区| av福利片在线观看| 自拍偷自拍亚洲精品老妇| 久久人人爽人人爽人人片va| 一区二区三区乱码不卡18| 熟妇人妻不卡中文字幕| 国产一区二区三区综合在线观看 | 亚洲av不卡在线观看| 中文字幕久久专区| 你懂的网址亚洲精品在线观看| 日本色播在线视频| 成人漫画全彩无遮挡| 国产精品99久久99久久久不卡 | 最近2019中文字幕mv第一页| tube8黄色片| 亚洲国产精品一区二区三区在线| 蜜臀久久99精品久久宅男| 黑人猛操日本美女一级片| 老司机影院成人| 国产高清三级在线| 亚洲在久久综合| 精品熟女少妇av免费看| 久久久久久伊人网av| 精品少妇内射三级| 免费看av在线观看网站| 中文资源天堂在线| 亚洲真实伦在线观看| 久久99蜜桃精品久久| 午夜激情久久久久久久| 免费观看性生交大片5| 国产视频内射| 国产在线男女| 纯流量卡能插随身wifi吗| 大片免费播放器 马上看| 韩国高清视频一区二区三区| 99久久精品一区二区三区| 欧美三级亚洲精品| 国产男人的电影天堂91| 99久久精品国产国产毛片| 国产精品久久久久久精品古装| 免费人成在线观看视频色| 国产在线视频一区二区| 深夜a级毛片| 一区二区三区四区激情视频| 天堂俺去俺来也www色官网| 另类亚洲欧美激情| 高清黄色对白视频在线免费看 | 老司机影院成人| av在线app专区| 国产男女超爽视频在线观看| 精品国产乱码久久久久久小说| 一级二级三级毛片免费看| 国产精品国产三级国产av玫瑰| 91aial.com中文字幕在线观看| 欧美国产精品一级二级三级 | 一级毛片aaaaaa免费看小| 国产熟女欧美一区二区| 少妇被粗大猛烈的视频| 人人澡人人妻人| 少妇人妻精品综合一区二区| 国产淫语在线视频| 99视频精品全部免费 在线| 国内揄拍国产精品人妻在线| 91久久精品国产一区二区成人| 曰老女人黄片| 日韩欧美一区视频在线观看 | 好男人视频免费观看在线| 免费看日本二区| 一级毛片aaaaaa免费看小| 亚洲国产精品一区二区三区在线| 草草在线视频免费看| 色哟哟·www| 简卡轻食公司| 日韩欧美一区视频在线观看 | 51国产日韩欧美| 亚洲精品一二三| 免费观看a级毛片全部| 精品少妇久久久久久888优播| 91精品国产九色| 国产午夜精品一二区理论片| 国产无遮挡羞羞视频在线观看| 色5月婷婷丁香| 国内少妇人妻偷人精品xxx网站| 免费久久久久久久精品成人欧美视频 | 国产伦精品一区二区三区四那| 亚洲精品视频女| 人人妻人人添人人爽欧美一区卜| 狠狠精品人妻久久久久久综合| 久久女婷五月综合色啪小说| 精品一区二区免费观看| 插阴视频在线观看视频| 又黄又爽又刺激的免费视频.| 岛国毛片在线播放| 美女主播在线视频| 精品国产国语对白av| 中文字幕制服av| 国产成人精品福利久久| 日韩不卡一区二区三区视频在线| 成人无遮挡网站| 免费黄频网站在线观看国产| 在线天堂最新版资源| xxx大片免费视频| 欧美精品亚洲一区二区| 国产欧美日韩精品一区二区| 美女大奶头黄色视频| 青春草亚洲视频在线观看| 国产精品一区www在线观看| 久热这里只有精品99| 欧美三级亚洲精品| 视频区图区小说| 一区二区三区免费毛片| 观看免费一级毛片| 国产精品一区二区在线观看99| 少妇高潮的动态图| 国内揄拍国产精品人妻在线| 成人漫画全彩无遮挡| 亚洲图色成人| 国产成人精品久久久久久| 亚洲熟女精品中文字幕| 国产亚洲精品久久久com| 久久这里有精品视频免费| 亚洲精品日韩av片在线观看| 国产综合精华液| 十八禁高潮呻吟视频 | 午夜免费鲁丝| 99久久人妻综合| 三级国产精品欧美在线观看| 日韩强制内射视频| 黑人巨大精品欧美一区二区蜜桃 | 国产高清三级在线| 日产精品乱码卡一卡2卡三| 91久久精品国产一区二区成人| 久久久久久久亚洲中文字幕| 蜜臀久久99精品久久宅男| 亚洲高清免费不卡视频| 免费少妇av软件| 汤姆久久久久久久影院中文字幕| 人人澡人人妻人| av线在线观看网站| 国产成人精品无人区| 日韩大片免费观看网站| 久久精品久久久久久久性| 欧美最新免费一区二区三区| 午夜激情久久久久久久| 亚洲成人一二三区av| 熟女电影av网| 欧美日韩视频高清一区二区三区二| 丁香六月天网| 久久久亚洲精品成人影院| 国产成人a∨麻豆精品| 亚洲av成人精品一区久久| 日产精品乱码卡一卡2卡三| 丰满少妇做爰视频| 国产毛片在线视频| 日韩不卡一区二区三区视频在线| 女性被躁到高潮视频| 内射极品少妇av片p| 人人妻人人澡人人看| 性色av一级| 一级爰片在线观看| av网站免费在线观看视频| 少妇裸体淫交视频免费看高清| 亚洲不卡免费看| 久久99精品国语久久久| 亚洲va在线va天堂va国产| 国产毛片在线视频| 中文精品一卡2卡3卡4更新| av不卡在线播放| 国产欧美日韩精品一区二区| 欧美bdsm另类| 最近2019中文字幕mv第一页| 日韩熟女老妇一区二区性免费视频| 亚洲美女视频黄频| 欧美日韩视频精品一区| 亚洲精品aⅴ在线观看| 天堂8中文在线网| 91成人精品电影| 婷婷色麻豆天堂久久| 日韩免费高清中文字幕av| 人妻制服诱惑在线中文字幕| 日韩av免费高清视频| 99热6这里只有精品| 亚洲精华国产精华液的使用体验| 亚洲美女视频黄频| 亚洲欧美一区二区三区国产| 黄色一级大片看看| 97超视频在线观看视频| 丝袜脚勾引网站| 国产在线免费精品| 国产男女内射视频| 国产欧美日韩一区二区三区在线 | 人妻一区二区av| 最近最新中文字幕免费大全7| 青春草国产在线视频| 大话2 男鬼变身卡| 大片免费播放器 马上看| 国产欧美日韩精品一区二区| 婷婷色综合大香蕉| 五月天丁香电影| 国产在线视频一区二区| 爱豆传媒免费全集在线观看| 99热6这里只有精品| 女人久久www免费人成看片| 777米奇影视久久| 国产欧美日韩一区二区三区在线 | 哪个播放器可以免费观看大片| av不卡在线播放| 国产在线免费精品| 亚洲内射少妇av| 国产在线一区二区三区精| 91午夜精品亚洲一区二区三区| 丰满少妇做爰视频| 伊人久久精品亚洲午夜| 国产精品欧美亚洲77777| 涩涩av久久男人的天堂| 日韩一本色道免费dvd| 日韩欧美精品免费久久| 两个人免费观看高清视频 | 欧美日韩av久久| 熟女人妻精品中文字幕| 国产深夜福利视频在线观看| 边亲边吃奶的免费视频| 一区二区三区四区激情视频| 国产精品人妻久久久久久| 精品久久久久久电影网| 亚洲成人一二三区av| 大话2 男鬼变身卡| 美女福利国产在线| 国产毛片在线视频| 在线观看三级黄色| 久久99热6这里只有精品| 九九在线视频观看精品| 久久久久人妻精品一区果冻| 91成人精品电影| 草草在线视频免费看| 免费黄色在线免费观看| 我的老师免费观看完整版| 嫩草影院新地址| 久久狼人影院| 久久久久精品久久久久真实原创| 午夜福利影视在线免费观看| 97超碰精品成人国产| 亚洲国产精品专区欧美| 亚洲国产av新网站| 亚洲怡红院男人天堂| 午夜老司机福利剧场| 国产日韩欧美亚洲二区| 成年av动漫网址| 性高湖久久久久久久久免费观看| 亚洲精品国产色婷婷电影| 老熟女久久久| 午夜福利影视在线免费观看| 国产成人免费无遮挡视频| 午夜视频国产福利| 精品国产乱码久久久久久小说| 97精品久久久久久久久久精品| 最近中文字幕高清免费大全6| 又黄又爽又刺激的免费视频.| 欧美日韩视频精品一区| 大香蕉97超碰在线| 国产精品.久久久| 亚洲av电影在线观看一区二区三区| 久久精品国产亚洲av天美| 亚洲真实伦在线观看| 久久6这里有精品| 在线观看免费视频网站a站| 久久精品久久久久久噜噜老黄| 麻豆精品久久久久久蜜桃| 男的添女的下面高潮视频| 夜夜骑夜夜射夜夜干| 色网站视频免费| 国产视频首页在线观看| 亚洲精品国产av蜜桃| 国产精品无大码| 麻豆精品久久久久久蜜桃| 亚洲av欧美aⅴ国产| 偷拍熟女少妇极品色| 又爽又黄a免费视频| 国产欧美日韩综合在线一区二区 | 狂野欧美激情性bbbbbb| 成人免费观看视频高清| 91久久精品国产一区二区三区| 久久久久久久久久久丰满| 免费高清在线观看视频在线观看| 观看美女的网站| 久久精品熟女亚洲av麻豆精品| 亚洲美女视频黄频| 韩国高清视频一区二区三区| 欧美精品人与动牲交sv欧美| 久久国产亚洲av麻豆专区| 久久久精品免费免费高清| 国产精品人妻久久久久久| 免费av不卡在线播放| av天堂久久9| 中文字幕人妻熟人妻熟丝袜美| 久久久亚洲精品成人影院| 欧美日韩av久久| 欧美精品一区二区大全| 亚洲成人手机| 人妻一区二区av| 久久久亚洲精品成人影院| 亚洲va在线va天堂va国产| 亚洲中文av在线| 国产成人免费观看mmmm| 高清欧美精品videossex| 内射极品少妇av片p| 伦理电影免费视频| 久久国产精品男人的天堂亚洲 | 午夜av观看不卡| 精品一区二区三区视频在线| 久久久久久久久久成人| 在线观看国产h片| 国产精品不卡视频一区二区| 国产精品免费大片| 男人添女人高潮全过程视频| 午夜久久久在线观看| 日韩av在线免费看完整版不卡| 成人18禁高潮啪啪吃奶动态图 | 日本黄大片高清| 亚洲情色 制服丝袜| 久久精品国产a三级三级三级| 亚洲精品自拍成人| av不卡在线播放| 熟女电影av网| 亚洲高清免费不卡视频| 丝瓜视频免费看黄片| 大又大粗又爽又黄少妇毛片口| 久久精品久久久久久噜噜老黄| 热re99久久精品国产66热6| 国产亚洲5aaaaa淫片| 久久久久国产精品人妻一区二区| 久久人妻熟女aⅴ| 国产免费一区二区三区四区乱码| 久久精品国产亚洲av涩爱| 久久久久人妻精品一区果冻| 大又大粗又爽又黄少妇毛片口| 国产精品国产三级国产av玫瑰| 精品亚洲成a人片在线观看| 亚洲欧洲国产日韩| 妹子高潮喷水视频| av在线观看视频网站免费| 下体分泌物呈黄色| 久久人妻熟女aⅴ| 久久韩国三级中文字幕| 国产探花极品一区二区| 国国产精品蜜臀av免费| 日日啪夜夜爽| 国产成人91sexporn| 免费黄网站久久成人精品| av播播在线观看一区| 国产日韩欧美视频二区| 91午夜精品亚洲一区二区三区| 最后的刺客免费高清国语| 看免费成人av毛片| 97在线视频观看| 一级毛片aaaaaa免费看小| 极品人妻少妇av视频| 亚洲国产成人一精品久久久| 99热这里只有是精品50| 国产精品成人在线| 午夜激情福利司机影院| 欧美xxⅹ黑人| 久久青草综合色| 亚洲欧美日韩东京热| 国产成人免费无遮挡视频| 色网站视频免费| 日韩欧美精品免费久久| 最近中文字幕2019免费版| 王馨瑶露胸无遮挡在线观看| 美女中出高潮动态图| 一级a做视频免费观看| 80岁老熟妇乱子伦牲交| 久久综合国产亚洲精品| 岛国毛片在线播放| 最后的刺客免费高清国语| 国产免费一级a男人的天堂| 熟女人妻精品中文字幕| 国产女主播在线喷水免费视频网站| 水蜜桃什么品种好| av在线观看视频网站免费| 国产69精品久久久久777片| 国产熟女午夜一区二区三区 | 国产老妇伦熟女老妇高清| 伦理电影大哥的女人| av卡一久久| 人人妻人人澡人人爽人人夜夜| 免费观看无遮挡的男女| 看十八女毛片水多多多| 成人无遮挡网站| 亚洲av日韩在线播放| 久久人人爽人人片av| 国产真实伦视频高清在线观看| 熟妇人妻不卡中文字幕| 91aial.com中文字幕在线观看| 国产欧美日韩一区二区三区在线 | 成人国产av品久久久| 国产男女内射视频| 中文在线观看免费www的网站| 69精品国产乱码久久久| 国产精品国产三级国产专区5o| 大话2 男鬼变身卡| 国产老妇伦熟女老妇高清| 免费观看在线日韩| 大香蕉97超碰在线| 大话2 男鬼变身卡| 亚洲精品日本国产第一区| 亚洲国产精品一区二区三区在线| 一级毛片我不卡| 亚洲av二区三区四区| 国模一区二区三区四区视频| 成年美女黄网站色视频大全免费 | av一本久久久久| 国产伦精品一区二区三区四那| 国产精品三级大全| av视频免费观看在线观看| 亚洲情色 制服丝袜| 国产成人午夜福利电影在线观看| 女人精品久久久久毛片| 国产亚洲av片在线观看秒播厂| 菩萨蛮人人尽说江南好唐韦庄| 成人漫画全彩无遮挡| 久热这里只有精品99| 最后的刺客免费高清国语| 久久精品国产鲁丝片午夜精品| 国产午夜精品久久久久久一区二区三区| 亚洲欧美中文字幕日韩二区| 亚洲电影在线观看av| 嫩草影院新地址| 人妻一区二区av| 伦理电影免费视频| 日日啪夜夜爽| 亚洲怡红院男人天堂| 亚洲人成网站在线播| 成人黄色视频免费在线看| 韩国高清视频一区二区三区| 男女边摸边吃奶| 男人爽女人下面视频在线观看| 最近中文字幕2019免费版| 日韩制服骚丝袜av| 狠狠精品人妻久久久久久综合| 国产真实伦视频高清在线观看| 久久久久久人妻| 久久久国产一区二区| 精品人妻熟女毛片av久久网站| 中文字幕精品免费在线观看视频 | 99热这里只有是精品50| av天堂久久9| 三级经典国产精品| 五月天丁香电影| 少妇人妻一区二区三区视频| 久久久久久久久久久丰满| 国产精品欧美亚洲77777| 伦理电影大哥的女人| av女优亚洲男人天堂| 亚洲一区二区三区欧美精品| 国产成人aa在线观看| 欧美bdsm另类| 国产精品麻豆人妻色哟哟久久| 成人漫画全彩无遮挡| 99视频精品全部免费 在线| 在线免费观看不下载黄p国产| 人人妻人人澡人人看| 国产免费又黄又爽又色| 99九九线精品视频在线观看视频| 午夜视频国产福利| 一级毛片 在线播放| 国产在线男女| 好男人视频免费观看在线| 午夜福利网站1000一区二区三区| 国产亚洲一区二区精品| 日本wwww免费看| 国产免费又黄又爽又色| 久久99热这里只频精品6学生| 亚洲第一区二区三区不卡| 婷婷色av中文字幕| 国产精品国产三级国产av玫瑰| 欧美老熟妇乱子伦牲交| 好男人视频免费观看在线| 男女边摸边吃奶| av线在线观看网站| 91久久精品国产一区二区三区| 欧美最新免费一区二区三区|