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

    單元測(cè)試方法在GIS開發(fā)中的應(yīng)用研究

    2012-12-21 01:18:08尤曉洺蔡先華
    科技視界 2012年1期
    關(guān)鍵詞:單元測(cè)試多邊形許可

    尤曉洺 蔡先華

    (東南大學(xué)交通學(xué)院地理信息工程系 江蘇 南京 210096)

    單元測(cè)試方法在GIS開發(fā)中的應(yīng)用研究

    尤曉洺 蔡先華

    (東南大學(xué)交通學(xué)院地理信息工程系 江蘇 南京 210096)

    單元測(cè)試是在軟件測(cè)試中要進(jìn)行的最低級(jí)別的測(cè)試活動(dòng),是保證軟件質(zhì)量的第一環(huán)。然而由于GIS開發(fā)的一些復(fù)雜特征,很多GIS開發(fā)者放棄了編寫單元測(cè)試。本文針對(duì)GIS開發(fā)的特點(diǎn),探討了GIS開發(fā)中的編寫單元測(cè)試的一些問題。包括如何在單元測(cè)試中加載第三方GIS組件許可,如何改善設(shè)計(jì)使單元測(cè)試易于編寫,如何在單元測(cè)試中和復(fù)雜組件對(duì)象交互等。通過對(duì)這些方法的應(yīng)用,解決GIS開發(fā)中編寫單元測(cè)試的一些問題。

    單元測(cè)試;GIS開發(fā);NUnit

    0 引言

    隨著社會(huì)對(duì)GIS的需求越來越多,GIS軟件規(guī)模的不斷擴(kuò)大,GIS軟件設(shè)計(jì)的復(fù)雜程度不斷提高,軟件開發(fā)中出現(xiàn)錯(cuò)誤或缺陷的幾率也越來越大,如何保證GIS軟件的質(zhì)量,使GIS軟件為社會(huì)提供穩(wěn)定而且正確的服務(wù),是一個(gè)值得研究的問題。軟件測(cè)試是驗(yàn)證軟件質(zhì)量的有效手段,而單元測(cè)試是保證軟件質(zhì)量的第一環(huán)。然而據(jù)2008年的一份統(tǒng)計(jì),超過48%的GIS開發(fā)者不編寫任何單元測(cè)試,這所導(dǎo)致的是他們的項(xiàng)目有超過50%成本都消耗在了系統(tǒng)維護(hù)上[1]。本文就如何在GIS開發(fā)中編寫單元測(cè)試進(jìn)行討論。

    1 單元測(cè)試簡介

    單元測(cè)試是開發(fā)者編寫的一段可以自動(dòng)執(zhí)行的代碼,用于證明被測(cè)試代碼的行為和開發(fā)者所期望的一致[2]。所以單元測(cè)試應(yīng)該是由程序員自己來完成的,它往往是對(duì)一個(gè)個(gè)基本的功能單元進(jìn)行的測(cè)試。

    舉一個(gè)簡單的例子,現(xiàn)在有一個(gè)編寫好的函數(shù),函數(shù)的接受一個(gè)整型數(shù)組作為參數(shù),返回這個(gè)數(shù)組中值最大的數(shù)??梢跃帉戇@樣一個(gè)單元測(cè)試用例:把數(shù)組{1,2,3,4}作為參數(shù)傳遞給這個(gè)函數(shù),判斷這個(gè)函數(shù)的返回值的是否等于4,如果不是,就說明這個(gè)函數(shù)的代碼是錯(cuò)誤的??梢允褂脝卧獪y(cè)試框架,如NUnit[3],編寫單元測(cè)試,斷言(Assert)這個(gè)函數(shù)在接受上述參數(shù)時(shí)的返回值為4,單元測(cè)試框架可以使這個(gè)測(cè)試和其它的單元測(cè)試自動(dòng)執(zhí)行,并報(bào)告哪些測(cè)試用例沒有通過。

    好的單元測(cè)試測(cè)試應(yīng)該是自動(dòng)的、全面的、可重復(fù)的、獨(dú)立的和專業(yè)的[2]。正確的使用單元測(cè)試可以起到如下作用:驗(yàn)證代碼行為;通過編寫單元測(cè)試,解除代碼中的耦合;單元測(cè)試可以作為軟件開發(fā)的文檔,它是可編譯、可運(yùn)行的,與代碼同步;自動(dòng)化的單元測(cè)試避免了代碼出現(xiàn)回歸。

    本文以使用ArcGIS Engine for.Net進(jìn)行GIS開發(fā)為例,使用為. Net開發(fā)而設(shè)計(jì)的自動(dòng)測(cè)試框架NUnit,探討一下GIS開發(fā)中單元測(cè)試編寫的一些問題。如果使用Visual Studio進(jìn)行開發(fā),結(jié)合使用免費(fèi)的TestDriven.Net Personal Version,可以非常方便快捷地在開發(fā)環(huán)境中執(zhí)行和調(diào)試單元測(cè)試,幫助提高開發(fā)效率[5]。

    2 在單元測(cè)試中加載第三方組件許可

    在使用ArcGIS Engine中的對(duì)象(可以看作是ArcObjects的子集)時(shí)是需要加載許可的。同樣,在使用到ArcObjects的單元測(cè)試,也是需要加載許可的。單元測(cè)試不同于普通的應(yīng)用程序,沒有顯式的程序入口,沒有明確的執(zhí)行順序,它是被Test Runner加載并執(zhí)行的,那如何在單元測(cè)試中加載許可是GIS開發(fā)中編寫單元測(cè)試所要解決的一個(gè)問題。如果只有少數(shù)幾個(gè)Test Fixture使用到了ArcObjects,可以在這些Test Fixture中標(biāo)記了TestFixtureSetUp屬性的方法中加載許可,在標(biāo)記了TestFixtureTearDown中卸載ArcObjects,如下:

    如果有很多Text Fixture中都使用到了ArcObjects,這樣做會(huì)降低測(cè)試執(zhí)行的效率,可以采用另外一種更通用的方法,在標(biāo)注了SetUpFixture屬性的類中的SetUp方法加載許可,TearDown方法中卸載ArcObjects,如下:

    在上述代碼中,標(biāo)記了SetUp屬性的LoadLicense方法會(huì)在執(zhí)行這個(gè)類AeLicenseLoader所在的命名空間中所有測(cè)試前執(zhí)行,而標(biāo)記了TearDown屬性的UnloadAoObjects方法會(huì)在執(zhí)行完這個(gè)類所在的命名空間中所有的測(cè)試后執(zhí)行。如果要為整個(gè)程序集(Assamble)提供運(yùn)行許可,把類AeLicenseLoader置于全局命名空間即可,這樣在執(zhí)行這個(gè)程序集任何測(cè)試前,會(huì)加載許可,執(zhí)行完測(cè)試后,卸載ArcObjects。

    3 優(yōu)化設(shè)計(jì)使便于測(cè)試

    有時(shí)候會(huì)發(fā)現(xiàn)很難對(duì)一些功能代碼編寫單元測(cè)試,這往往暗示著設(shè)計(jì)需要修改,不應(yīng)該放棄編寫單元測(cè)試,需要做的是修改設(shè)計(jì),分離代碼的關(guān)注點(diǎn),直到代碼易于測(cè)試。易于測(cè)試的代碼往往有更好的結(jié)構(gòu)和可維護(hù)性[2]。

    例如有些程序員習(xí)慣將業(yè)務(wù)邏輯的代碼混雜在用戶界面的代碼中,這本身并不是一種優(yōu)秀的設(shè)計(jì),也使單元測(cè)試編寫起來變得非常困難。應(yīng)該將業(yè)務(wù)邏輯的代碼和用戶界面的代碼進(jìn)行分離,使用諸如三層架構(gòu)(表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層三層架構(gòu))或MVC(模型、視圖和控制器)模式等方法對(duì)代碼進(jìn)行重構(gòu)。這樣既改善了設(shè)計(jì),也使單元測(cè)試的編寫變得容易。類似的,要避免編寫出職能過多的類,這樣的類不僅很難測(cè)試,也很難維護(hù),是違背面向?qū)ο笤O(shè)計(jì)的原則的,應(yīng)用一些模式,改善設(shè)計(jì),使之易于測(cè)試。也可以通過實(shí)踐驅(qū)動(dòng)測(cè)試開發(fā),改善代碼的設(shè)計(jì)。

    4 在單元測(cè)試中和復(fù)雜對(duì)象交互

    然而ArcObjects是一個(gè)龐大而且復(fù)雜的系統(tǒng),ArcObjects中的很多對(duì)象甚至是很難構(gòu)建的,如果在功能代碼中使用到這些對(duì)象,真的需要為了編寫單元測(cè)試而構(gòu)建這些對(duì)象嗎?

    首先需要注意的是單元測(cè)試所測(cè)試的目標(biāo)。編寫的單元測(cè)試是要測(cè)試自己編寫的功能代碼,而不是ESRI的ArcObjects。比如對(duì)一個(gè)面的緩沖區(qū)操作,對(duì)兩個(gè)幾何對(duì)象求交,或者是修改了Geodatabase中的一個(gè)要素的屬性值,這些類似的代碼只是對(duì)ArcObjects的簡單調(diào)用,如果對(duì)這些代碼的行為不確定,需要做的是參考ArcObjects的幫助文檔,當(dāng)然如果對(duì)這些代碼的行為還是不確定,也可以編寫單元測(cè)試進(jìn)行驗(yàn)證,但是這樣做的代價(jià)往往會(huì)很高。

    如果確定了ArcObjects對(duì)象的行為,要測(cè)試和ArcObjects中復(fù)雜對(duì)象進(jìn)行交互的功能代碼時(shí),我們可以使用Mock對(duì)象的技術(shù)[6],對(duì)功能模塊進(jìn)行測(cè)試。這種測(cè)試方法的思想是用模擬的對(duì)象替代真實(shí)的對(duì)象,模擬出一個(gè)測(cè)試環(huán)境,對(duì)功能代碼進(jìn)行測(cè)試,Mock對(duì)象就是真實(shí)對(duì)象在調(diào)試期的替代品。而且由于ArcObjects是基于接口的架構(gòu),正適合使用這種技術(shù)??梢宰约壕帉慚ock對(duì)象,也可以使用現(xiàn)有的Mock對(duì)象框架,如NMock2、DotNetMock和RhinoMocks。

    ArcObjects中一個(gè)經(jīng)常到對(duì)象的類型是Feature類,而它的對(duì)象又是很難用代碼從頭構(gòu)建的。下文中的CountyFeature類就使用到了表示一個(gè)縣域要素的對(duì)象,它對(duì)一個(gè)縣域要素進(jìn)行了強(qiáng)類型化的封裝。部分代碼如下:

    CountyFeature類的構(gòu)造方法接受一個(gè)表示縣域要素的參數(shù),縣域要素有一個(gè)字段的值是該縣域的政區(qū)代碼,這個(gè)代碼是符合中華人民共和國行政區(qū)劃代碼標(biāo)準(zhǔn)(GB2260-1995)的。根據(jù)這個(gè)縣域的政區(qū)代碼可以判斷這個(gè)要素是否是省直轄縣級(jí)市,CountyFeature類的一個(gè)屬性就實(shí)現(xiàn)了這個(gè)功能,它返回該縣域是否是省直轄縣級(jí)市?,F(xiàn)在編寫單元測(cè)試對(duì)這個(gè)功能代碼進(jìn)行測(cè)試。那么就需要實(shí)例化CountyFeature類的對(duì)象,而CountyFeature類的構(gòu)造方法需要一個(gè)IFeature類型的縣域要素作為參數(shù)。編寫測(cè)試時(shí)需要這個(gè)參數(shù),獲得這個(gè)參數(shù)可以使用真實(shí)的數(shù)據(jù),也就是說,使用包含縣域要素類的Geodatabase,假設(shè)這個(gè)數(shù)據(jù)是容易獲取的,但是仍然需要在單元測(cè)試代碼中編寫許多根本不是這個(gè)測(cè)試所需要關(guān)注的代碼,而且由于這些代碼訪問外部資源,測(cè)試運(yùn)行的速度也會(huì)變慢,所以不應(yīng)該使用這種方法。

    使用Mock對(duì)象就可以解決上述這個(gè)問題。判斷這個(gè)縣域是否是省直轄縣級(jí)市的功能代碼關(guān)注的只是縣域要素區(qū)域政區(qū)代碼字段的值,所以可以編寫一個(gè)帶有政區(qū)代碼的仿真縣域要素的對(duì)象,其他至于縣域要素到底有沒有其它字段等都不是這個(gè)測(cè)試所關(guān)心的內(nèi)容。IFeature接口有9個(gè)屬性,4個(gè)方法,如果自己編寫這個(gè)Mock對(duì)象的話同樣會(huì)浪費(fèi)很多時(shí)間,解決方法就是使用動(dòng)態(tài)Mock對(duì)象,動(dòng)態(tài)Mock對(duì)象會(huì)在運(yùn)行時(shí)構(gòu)建一個(gè)指定類型的 Mock對(duì)象。本文以NMock2中的動(dòng)態(tài)Mock對(duì)象為例,編寫的對(duì)上述功能的測(cè)試代碼如下:

    測(cè)試方法的第三行代碼表示,使當(dāng)以指定參數(shù)調(diào)用 feature.get_Value方法時(shí),返回regionCode的值。上述測(cè)試代碼隔離了和測(cè)試目標(biāo)無關(guān)的內(nèi)容,使測(cè)試專注于需要測(cè)試的功能。

    Mock對(duì)象是一項(xiàng)很實(shí)用的技術(shù),但由于需要編寫更多的代碼,特別是自己編寫Mock對(duì)象,無疑會(huì)加重項(xiàng)目的負(fù)擔(dān),有時(shí)我們可以通過一些重構(gòu)消除對(duì)Mock對(duì)象的依賴。

    盡管使用了如上所述的方法,但在GIS開發(fā)中還是不可避免地需要使用到一些復(fù)雜的對(duì)象。典型的例子是ArcObjects中的幾何數(shù)據(jù)類型。例如需要自己實(shí)現(xiàn)兩個(gè)多邊形求交的功能,那么如何對(duì)這個(gè)功能進(jìn)行測(cè)試。在測(cè)試代碼中需要構(gòu)建兩個(gè)多邊形對(duì)象,還有這兩個(gè)多邊形求交后的正確結(jié)果,然后將真實(shí)的求交結(jié)果和正確望的結(jié)果進(jìn)行比較,如果不相同,就說明我自己實(shí)現(xiàn)的這個(gè)功能是錯(cuò)誤的。按照單元測(cè)試應(yīng)該是全面的原則,需要編寫多個(gè)測(cè)試用例。對(duì)于那些簡單的多邊形對(duì)象,可以編寫代碼進(jìn)行構(gòu)建(新建一個(gè)多邊形對(duì)象,定義它的空間參考和所有節(jié)點(diǎn))。如果是復(fù)雜的多邊形對(duì)象,這種方法會(huì)給編寫單元測(cè)試帶來較大的負(fù)擔(dān),我們可以從一個(gè)文件中(如Shapefile)讀取一個(gè)多邊形,但是這樣做會(huì)牽扯到更多的與測(cè)試不相關(guān)的對(duì)象(如工作空間,要素類等對(duì)象),降低了單元測(cè)試編寫和執(zhí)行的效率。ArcObjects中有個(gè)IXMLSerialize接口,ArcObjects中有超過340個(gè)類實(shí)現(xiàn)了這個(gè)接口,其中也包括幾何數(shù)據(jù)類,實(shí)現(xiàn)了這個(gè)接口的類,可以將這些類的對(duì)象序列化為xml,也可以從xml中構(gòu)建這些對(duì)象??梢允褂眠@個(gè)功能在編寫單元測(cè)試時(shí)從xml中構(gòu)建一些復(fù)雜的對(duì)象。一個(gè)名為ArcUnit的開源項(xiàng)目,實(shí)現(xiàn)了一個(gè)ArcMap的工具擴(kuò)展,它可以將選中要素的Shape保存成xml文件,方便在編寫單元測(cè)試時(shí)構(gòu)建復(fù)雜的幾何對(duì)象[7]。

    5 結(jié)論

    編寫單元測(cè)試本身是需要時(shí)間的,但是從長遠(yuǎn)角度來看,單元測(cè)試對(duì)提高團(tuán)隊(duì)開發(fā)的效率和軟件質(zhì)量都有較大的作用,同時(shí)還能改善設(shè)計(jì),提升bug修復(fù)的效率。因此,很有必要在GIS開發(fā)中編寫單元測(cè)試。在發(fā)現(xiàn)很難對(duì)一些功能代碼編寫單元測(cè)試時(shí),優(yōu)先考慮改善設(shè)計(jì),再考慮使用Mock對(duì)象等其他技術(shù)方法,編寫單元測(cè)試。解決了GIS開發(fā)中編寫單元測(cè)試這些細(xì)節(jié)問題,實(shí)踐測(cè)試驅(qū)動(dòng)開發(fā),以單元測(cè)試作為開發(fā)過程的開端并且將測(cè)試引入到系統(tǒng)開發(fā)的全過程,保證了代碼的階段正確性,避免了沒有單元測(cè)試的GIS開發(fā)中后期集中測(cè)試產(chǎn)生問題時(shí)的舉步維艱,同時(shí)單元測(cè)試代碼這份可以運(yùn)行的文檔可以指導(dǎo)其他開發(fā)者如何使用相應(yīng)的功能代碼。

    [1]Dave Bouwman.Developer Survey[EB/OL].http://blog.davebouwman.com/2008/ 06/04/developer-survey-unit-testing-other-tools/,2008.

    [2]Andy Hunt,Dave Thomas,Matt Hargett.Pragmatic Unit Testing in C#with Nunit,Second Edition[M].The Pragmatic Bookshelf,2007.

    [3]NUnit.org.NUnit Documentation[EB/OL].http://www.nuint.org/.

    [4]NCover LLC[EB/OL].http://www.ncover.com/.

    [5]TestDriven.Net.Quickstart[EB/OL].http://www.testdriven.net/quickstart.aspx.

    [6]Roy Osherove.The Art of Unit Testing with Examples in.NET[M].Greenwich:Manning,2009.

    [7]Brian Noyle,David Bouwman.Unit Testing for Esri Developers[J].ArcUser,2010,Winter:38-41.

    王靜]

    猜你喜歡
    單元測(cè)試多邊形許可
    多邊形中的“一個(gè)角”問題
    版權(quán)許可聲明
    版權(quán)許可聲明
    版權(quán)許可聲明
    本期作者介紹
    多邊形的藝術(shù)
    解多邊形題的轉(zhuǎn)化思想
    多邊形的鑲嵌
    一年級(jí)上冊(cè)第五單元測(cè)試
    一年級(jí)上冊(cè)一、二單元測(cè)試
    国产片特级美女逼逼视频| 蜜桃国产av成人99| 精品亚洲成a人片在线观看| 亚洲精品一二三| 欧美激情高清一区二区三区| 国产黄频视频在线观看| 久久久精品国产亚洲av高清涩受| 亚洲一卡2卡3卡4卡5卡精品中文| 各种免费的搞黄视频| 丝袜美足系列| 嫩草影视91久久| 一二三四社区在线视频社区8| 日韩av在线免费看完整版不卡| 少妇的丰满在线观看| 精品卡一卡二卡四卡免费| 飞空精品影院首页| 久久鲁丝午夜福利片| 亚洲精品日韩在线中文字幕| 久久久国产一区二区| 亚洲中文日韩欧美视频| 老汉色∧v一级毛片| 考比视频在线观看| 18在线观看网站| 久久久久国产一级毛片高清牌| av天堂久久9| 777久久人妻少妇嫩草av网站| 精品亚洲成a人片在线观看| 亚洲av日韩精品久久久久久密 | 中文欧美无线码| 午夜久久久在线观看| 久久热在线av| 久久ye,这里只有精品| 亚洲欧洲精品一区二区精品久久久| 亚洲国产中文字幕在线视频| 欧美精品av麻豆av| 操美女的视频在线观看| 操美女的视频在线观看| 多毛熟女@视频| 成人国语在线视频| 最新在线观看一区二区三区 | 欧美日韩视频高清一区二区三区二| 啦啦啦视频在线资源免费观看| av电影中文网址| 亚洲精品第二区| 成年av动漫网址| 男女午夜视频在线观看| 丁香六月天网| 国产欧美日韩一区二区三 | 国产精品国产三级国产专区5o| 晚上一个人看的免费电影| 亚洲av成人不卡在线观看播放网 | 国产又爽黄色视频| 久久毛片免费看一区二区三区| 免费在线观看完整版高清| 大香蕉久久网| 成年美女黄网站色视频大全免费| 免费看十八禁软件| 别揉我奶头~嗯~啊~动态视频 | 欧美黄色淫秽网站| √禁漫天堂资源中文www| 成人18禁高潮啪啪吃奶动态图| 91精品国产国语对白视频| 热99国产精品久久久久久7| 国产无遮挡羞羞视频在线观看| 极品少妇高潮喷水抽搐| kizo精华| 一级毛片黄色毛片免费观看视频| 国产精品国产三级专区第一集| 日韩制服骚丝袜av| 青春草亚洲视频在线观看| 天堂8中文在线网| 精品高清国产在线一区| 一区二区av电影网| 成人黄色视频免费在线看| 桃花免费在线播放| 国产人伦9x9x在线观看| 一级毛片我不卡| 777久久人妻少妇嫩草av网站| 国产欧美日韩一区二区三区在线| 精品一品国产午夜福利视频| 五月开心婷婷网| 久久人妻熟女aⅴ| 香蕉国产在线看| 大码成人一级视频| 亚洲,一卡二卡三卡| 下体分泌物呈黄色| 天天躁夜夜躁狠狠躁躁| 一区二区日韩欧美中文字幕| 国产精品.久久久| 久久免费观看电影| 国产麻豆69| 一级黄色大片毛片| 午夜日韩欧美国产| 国产视频一区二区在线看| 亚洲少妇的诱惑av| 亚洲av美国av| 成年美女黄网站色视频大全免费| 亚洲天堂av无毛| 午夜久久久在线观看| 中文字幕av电影在线播放| a级毛片黄视频| 精品亚洲乱码少妇综合久久| a级片在线免费高清观看视频| 精品国产乱码久久久久久男人| 欧美成狂野欧美在线观看| 777米奇影视久久| 国产免费视频播放在线视频| 国产黄色视频一区二区在线观看| 女人高潮潮喷娇喘18禁视频| 精品少妇黑人巨大在线播放| cao死你这个sao货| 日本vs欧美在线观看视频| 国产精品一区二区在线不卡| 超碰成人久久| 欧美+亚洲+日韩+国产| 欧美激情 高清一区二区三区| 亚洲七黄色美女视频| 99香蕉大伊视频| 多毛熟女@视频| 丝袜美足系列| 婷婷色av中文字幕| avwww免费| 国产男女超爽视频在线观看| 大香蕉久久成人网| 成人三级做爰电影| 久久国产亚洲av麻豆专区| 午夜激情av网站| 韩国精品一区二区三区| 亚洲男人天堂网一区| 国产精品久久久久久人妻精品电影 | 久久久久久亚洲精品国产蜜桃av| 久久久精品94久久精品| 啦啦啦啦在线视频资源| 久久精品aⅴ一区二区三区四区| 99热网站在线观看| 大片免费播放器 马上看| 丰满饥渴人妻一区二区三| 一级黄片播放器| 精品视频人人做人人爽| 视频在线观看一区二区三区| 大片电影免费在线观看免费| 国产日韩欧美视频二区| videosex国产| 一级黄片播放器| 国产在线一区二区三区精| 大陆偷拍与自拍| 国产一区二区在线观看av| 高清欧美精品videossex| 久久亚洲精品不卡| 婷婷色综合大香蕉| 色婷婷久久久亚洲欧美| 亚洲av美国av| 日本wwww免费看| 不卡av一区二区三区| 国产精品久久久av美女十八| 久久性视频一级片| 亚洲欧美清纯卡通| 成人午夜精彩视频在线观看| 国产欧美日韩综合在线一区二区| 亚洲自偷自拍图片 自拍| 欧美黑人精品巨大| 又大又黄又爽视频免费| 啦啦啦视频在线资源免费观看| 精品福利观看| 99国产精品免费福利视频| 最近最新中文字幕大全免费视频 | 一区二区三区精品91| 久久99热这里只频精品6学生| 91字幕亚洲| 少妇裸体淫交视频免费看高清 | 高清不卡的av网站| 男人添女人高潮全过程视频| 国产熟女午夜一区二区三区| 久久久久网色| 国产欧美亚洲国产| 欧美日韩亚洲国产一区二区在线观看 | 人人妻人人添人人爽欧美一区卜| 亚洲成人免费av在线播放| 欧美精品人与动牲交sv欧美| 日日摸夜夜添夜夜爱| 久久国产精品男人的天堂亚洲| 视频在线观看一区二区三区| 亚洲精品国产av成人精品| 午夜免费观看性视频| 国产精品一国产av| 亚洲欧美中文字幕日韩二区| 美女高潮到喷水免费观看| 一本—道久久a久久精品蜜桃钙片| a 毛片基地| 久久精品国产亚洲av涩爱| 国产成人91sexporn| 女性被躁到高潮视频| 1024香蕉在线观看| 日韩大片免费观看网站| 婷婷色av中文字幕| 国产女主播在线喷水免费视频网站| 两个人看的免费小视频| 国产免费又黄又爽又色| 波多野结衣一区麻豆| 免费在线观看视频国产中文字幕亚洲 | 亚洲国产精品999| 99精品久久久久人妻精品| 热99国产精品久久久久久7| 久久久欧美国产精品| 免费在线观看黄色视频的| 亚洲 欧美一区二区三区| 波多野结衣av一区二区av| 男女边摸边吃奶| 亚洲色图综合在线观看| 久久精品aⅴ一区二区三区四区| 大香蕉久久成人网| 在现免费观看毛片| 精品久久久久久久毛片微露脸 | 亚洲,一卡二卡三卡| 国产精品麻豆人妻色哟哟久久| 国产精品偷伦视频观看了| 亚洲中文日韩欧美视频| 人妻一区二区av| av片东京热男人的天堂| 999精品在线视频| 国产伦人伦偷精品视频| 91精品伊人久久大香线蕉| avwww免费| 别揉我奶头~嗯~啊~动态视频 | 国产在线一区二区三区精| 中国美女看黄片| 精品少妇内射三级| 国产伦理片在线播放av一区| 中文字幕色久视频| 好男人电影高清在线观看| 国产亚洲精品久久久久5区| www.熟女人妻精品国产| tube8黄色片| 国产精品一国产av| 一级黄片播放器| 国产有黄有色有爽视频| 亚洲 欧美一区二区三区| 青春草视频在线免费观看| 视频在线观看一区二区三区| 老司机影院成人| 国产在线视频一区二区| 久久影院123| 97在线人人人人妻| 婷婷色综合大香蕉| 性色av一级| 中文字幕人妻丝袜制服| 大片免费播放器 马上看| 国产又色又爽无遮挡免| 91麻豆av在线| av天堂在线播放| 日韩大码丰满熟妇| 中文乱码字字幕精品一区二区三区| 老汉色av国产亚洲站长工具| 男女国产视频网站| 久久国产精品男人的天堂亚洲| 在线观看免费午夜福利视频| 啦啦啦啦在线视频资源| 1024视频免费在线观看| 免费日韩欧美在线观看| 十八禁网站网址无遮挡| 男女边吃奶边做爰视频| av在线老鸭窝| 亚洲欧洲国产日韩| 亚洲精品国产区一区二| 久久免费观看电影| 老司机亚洲免费影院| 在线天堂中文资源库| 亚洲国产中文字幕在线视频| 日本91视频免费播放| 亚洲熟女精品中文字幕| 侵犯人妻中文字幕一二三四区| 成在线人永久免费视频| 亚洲中文日韩欧美视频| 国产在线免费精品| 亚洲av电影在线观看一区二区三区| 日本91视频免费播放| 最黄视频免费看| 一二三四在线观看免费中文在| 90打野战视频偷拍视频| 国产精品一区二区免费欧美 | 你懂的网址亚洲精品在线观看| 亚洲av电影在线观看一区二区三区| 亚洲第一av免费看| av片东京热男人的天堂| 亚洲精品一区蜜桃| 国产精品秋霞免费鲁丝片| 午夜两性在线视频| 麻豆乱淫一区二区| 中文字幕人妻丝袜制服| av电影中文网址| 国产在线免费精品| 一区二区三区四区激情视频| 捣出白浆h1v1| 黑人欧美特级aaaaaa片| 亚洲第一青青草原| 亚洲精品国产一区二区精华液| 国产日韩欧美亚洲二区| 亚洲人成电影免费在线| 欧美 日韩 精品 国产| 色精品久久人妻99蜜桃| 国产精品久久久久久精品电影小说| 亚洲av电影在线进入| 国产成人啪精品午夜网站| 亚洲伊人色综图| 日本av免费视频播放| 久久国产精品影院| 伊人亚洲综合成人网| 美国免费a级毛片| 性高湖久久久久久久久免费观看| 看免费av毛片| 国产欧美日韩精品亚洲av| 欧美中文综合在线视频| 丝袜在线中文字幕| 久久精品国产亚洲av高清一级| 王馨瑶露胸无遮挡在线观看| 国产av一区二区精品久久| 午夜av观看不卡| 亚洲欧美激情在线| 亚洲精品日韩在线中文字幕| 九色亚洲精品在线播放| av网站免费在线观看视频| 一级毛片我不卡| 波野结衣二区三区在线| 丝袜美足系列| 午夜福利免费观看在线| 啦啦啦视频在线资源免费观看| 亚洲,欧美,日韩| 伦理电影免费视频| 男女无遮挡免费网站观看| 日韩大片免费观看网站| 国产在线观看jvid| 中文字幕色久视频| 久久国产精品男人的天堂亚洲| 十分钟在线观看高清视频www| 18禁观看日本| 操出白浆在线播放| 纯流量卡能插随身wifi吗| 免费观看a级毛片全部| 日韩一区二区三区影片| 亚洲人成电影观看| 亚洲三区欧美一区| 一区二区三区精品91| 99热全是精品| 国产精品国产三级专区第一集| 狂野欧美激情性bbbbbb| 1024视频免费在线观看| 亚洲熟女毛片儿| 久久天躁狠狠躁夜夜2o2o | 国产精品偷伦视频观看了| 国产亚洲av高清不卡| 伊人亚洲综合成人网| 国产精品久久久久久精品电影小说| 高清黄色对白视频在线免费看| 不卡av一区二区三区| 色网站视频免费| 91精品国产国语对白视频| 日本黄色日本黄色录像| 精品一区二区三区av网在线观看 | 亚洲中文字幕日韩| 91国产中文字幕| 秋霞在线观看毛片| 只有这里有精品99| 亚洲国产欧美日韩在线播放| 18禁黄网站禁片午夜丰满| 悠悠久久av| 国产色视频综合| 亚洲熟女毛片儿| 免费高清在线观看视频在线观看| 韩国高清视频一区二区三区| 亚洲精品久久久久久婷婷小说| 一级a爱视频在线免费观看| 交换朋友夫妻互换小说| 国产精品免费视频内射| 又大又爽又粗| 激情视频va一区二区三区| 国产黄频视频在线观看| 欧美日韩亚洲高清精品| 国产极品粉嫩免费观看在线| 亚洲图色成人| 一级毛片 在线播放| 亚洲成人免费av在线播放| 18禁裸乳无遮挡动漫免费视频| tube8黄色片| 大码成人一级视频| 精品人妻在线不人妻| √禁漫天堂资源中文www| 国产午夜精品一二区理论片| 天堂8中文在线网| 一本一本久久a久久精品综合妖精| 制服人妻中文乱码| 在线精品无人区一区二区三| 国产免费视频播放在线视频| 免费高清在线观看日韩| 欧美人与性动交α欧美软件| 伊人亚洲综合成人网| 97精品久久久久久久久久精品| 一级,二级,三级黄色视频| 亚洲欧美一区二区三区国产| 超色免费av| 热re99久久精品国产66热6| 中文欧美无线码| 超碰97精品在线观看| 欧美成狂野欧美在线观看| 精品国产超薄肉色丝袜足j| 成人手机av| 午夜视频精品福利| 久久这里只有精品19| 国产亚洲av片在线观看秒播厂| 精品久久蜜臀av无| 国产精品久久久人人做人人爽| 男女高潮啪啪啪动态图| 人人妻人人爽人人添夜夜欢视频| av在线播放精品| 女性生殖器流出的白浆| 少妇猛男粗大的猛烈进出视频| 女性生殖器流出的白浆| 欧美日韩国产mv在线观看视频| 久久中文字幕一级| 男人爽女人下面视频在线观看| 欧美在线一区亚洲| 欧美成人午夜精品| 麻豆国产av国片精品| 成人国产一区最新在线观看 | 日韩欧美一区视频在线观看| 中文字幕最新亚洲高清| 国产欧美日韩精品亚洲av| 国产成人a∨麻豆精品| 波野结衣二区三区在线| 女性被躁到高潮视频| 中国美女看黄片| 亚洲精品国产区一区二| 精品久久久久久电影网| 一个人免费看片子| 夫妻午夜视频| 人人妻人人爽人人添夜夜欢视频| 精品高清国产在线一区| 男女免费视频国产| 国产亚洲av高清不卡| 麻豆国产av国片精品| av线在线观看网站| 亚洲国产欧美在线一区| 宅男免费午夜| 高清不卡的av网站| 国产伦人伦偷精品视频| 99热全是精品| 视频区图区小说| 涩涩av久久男人的天堂| 国产男女内射视频| 欧美黄色片欧美黄色片| 黄色毛片三级朝国网站| 亚洲欧美一区二区三区黑人| 侵犯人妻中文字幕一二三四区| 波多野结衣一区麻豆| 亚洲av在线观看美女高潮| 成人国语在线视频| 一区二区日韩欧美中文字幕| 久久人人爽av亚洲精品天堂| 国产在线免费精品| 色婷婷久久久亚洲欧美| 成人手机av| 亚洲av在线观看美女高潮| 啦啦啦在线观看免费高清www| 亚洲美女黄色视频免费看| 国产国语露脸激情在线看| 天天躁狠狠躁夜夜躁狠狠躁| 夫妻午夜视频| 九草在线视频观看| 亚洲欧美清纯卡通| 日韩大码丰满熟妇| 欧美+亚洲+日韩+国产| 欧美黄色淫秽网站| kizo精华| 啦啦啦在线免费观看视频4| 久久精品人人爽人人爽视色| 一本大道久久a久久精品| 亚洲激情五月婷婷啪啪| 999久久久国产精品视频| 亚洲av男天堂| 人妻 亚洲 视频| 50天的宝宝边吃奶边哭怎么回事| 波野结衣二区三区在线| 天天躁日日躁夜夜躁夜夜| 伊人亚洲综合成人网| 美女视频免费永久观看网站| 免费在线观看黄色视频的| 亚洲欧美色中文字幕在线| 一级毛片电影观看| 黄色视频不卡| 夜夜骑夜夜射夜夜干| 国产精品久久久久久人妻精品电影 | 精品久久蜜臀av无| 亚洲男人天堂网一区| 男男h啪啪无遮挡| 亚洲欧美一区二区三区黑人| 性色av一级| 日本wwww免费看| h视频一区二区三区| 成人18禁高潮啪啪吃奶动态图| 久久精品人人爽人人爽视色| 美女国产高潮福利片在线看| 亚洲一区二区三区欧美精品| 国产成人欧美| 欧美黄色淫秽网站| 国产伦理片在线播放av一区| 国语对白做爰xxxⅹ性视频网站| 母亲3免费完整高清在线观看| 妹子高潮喷水视频| 两人在一起打扑克的视频| 男人添女人高潮全过程视频| 亚洲 欧美一区二区三区| 51午夜福利影视在线观看| 日韩一区二区三区影片| 亚洲av男天堂| 黄片小视频在线播放| 丝袜美足系列| 天天躁夜夜躁狠狠久久av| 亚洲精品成人av观看孕妇| 欧美精品一区二区免费开放| 国产亚洲精品第一综合不卡| 亚洲欧洲精品一区二区精品久久久| www.av在线官网国产| 国产片特级美女逼逼视频| 国产一区二区三区av在线| 新久久久久国产一级毛片| 亚洲欧洲精品一区二区精品久久久| 色94色欧美一区二区| 亚洲欧美中文字幕日韩二区| 国产欧美日韩综合在线一区二区| 久久亚洲精品不卡| 中文字幕高清在线视频| 中国美女看黄片| 国产在线一区二区三区精| 日本猛色少妇xxxxx猛交久久| 岛国毛片在线播放| 欧美精品亚洲一区二区| 日本wwww免费看| 久久毛片免费看一区二区三区| 精品卡一卡二卡四卡免费| 伊人亚洲综合成人网| 成年av动漫网址| 美女扒开内裤让男人捅视频| 在线天堂中文资源库| 亚洲国产精品成人久久小说| 免费在线观看黄色视频的| 久久精品aⅴ一区二区三区四区| 国产免费视频播放在线视频| 1024视频免费在线观看| 男女午夜视频在线观看| 精品一区二区三区av网在线观看 | 欧美在线黄色| 黄色怎么调成土黄色| 国产福利在线免费观看视频| 欧美成人精品欧美一级黄| 亚洲国产欧美在线一区| 岛国毛片在线播放| 一二三四在线观看免费中文在| 日本wwww免费看| 18禁国产床啪视频网站| 亚洲自偷自拍图片 自拍| 久9热在线精品视频| 搡老岳熟女国产| 一区二区三区四区激情视频| 老鸭窝网址在线观看| 蜜桃国产av成人99| 亚洲国产欧美在线一区| 岛国毛片在线播放| 老司机在亚洲福利影院| 亚洲伊人久久精品综合| 一本一本久久a久久精品综合妖精| av电影中文网址| 最新的欧美精品一区二区| 黑人巨大精品欧美一区二区蜜桃| 丰满人妻熟妇乱又伦精品不卡| 国产一区二区激情短视频 | 久久久精品免费免费高清| netflix在线观看网站| 亚洲av国产av综合av卡| 亚洲av在线观看美女高潮| 丰满迷人的少妇在线观看| 少妇裸体淫交视频免费看高清 | 男人添女人高潮全过程视频| 美女福利国产在线| 麻豆av在线久日| 午夜免费成人在线视频| 丰满迷人的少妇在线观看| 在线看a的网站| www.自偷自拍.com| 亚洲精品国产色婷婷电影| 叶爱在线成人免费视频播放| 美女视频免费永久观看网站| 夫妻午夜视频| 久久中文字幕一级| 亚洲国产欧美日韩在线播放| 黑人猛操日本美女一级片| 国产有黄有色有爽视频| 欧美日韩亚洲高清精品| 亚洲精品国产色婷婷电影| 性色av乱码一区二区三区2| 悠悠久久av| 精品一区在线观看国产| 男女之事视频高清在线观看 | 免费人妻精品一区二区三区视频| av在线老鸭窝| 少妇猛男粗大的猛烈进出视频| 嫁个100分男人电影在线观看 | 久久久久久久精品精品| 欧美精品一区二区大全| 乱人伦中国视频| 久久国产精品人妻蜜桃| 日本a在线网址| 日韩制服丝袜自拍偷拍| 欧美大码av| 日本a在线网址| 99久久人妻综合| 久久人人爽av亚洲精品天堂|