亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于MVC模式的Web系統(tǒng)自動(dòng)化單元測試方案

        2016-03-25 08:55:02張敏陳靜王娟
        微型電腦應(yīng)用 2016年2期
        關(guān)鍵詞:自動(dòng)化

        張敏,陳靜,王娟

        ?

        基于MVC模式的Web系統(tǒng)自動(dòng)化單元測試方案

        張敏,陳靜,王娟

        摘 要:隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,Web應(yīng)用的質(zhì)量和可靠性變得越來越重要,如何對Web應(yīng)用提出一套完整的測試方案保證Web應(yīng)用的質(zhì)量成為當(dāng)前迫切需要解決的問題。針對基于MVC模式的Web應(yīng)用系統(tǒng),提出了一套全面的自動(dòng)化單元測試方案,確定了一套實(shí)用的單元測試流程,并按照提出的方案和流程對系統(tǒng)進(jìn)行測試,通過重構(gòu)解決發(fā)現(xiàn)的問題,改善了系統(tǒng)的性能。

        關(guān)鍵詞:單元測試;自動(dòng)化;JUnit

        0 引言

        隨著網(wǎng)絡(luò)技術(shù)的不斷成熟以及人們對網(wǎng)絡(luò)需求的多樣化發(fā)展,Web應(yīng)用越來越普及并日益復(fù)雜,如何構(gòu)建快速、安全、健壯的Web應(yīng)用系統(tǒng)已經(jīng)成為亟待解決的問題。

        在快速開發(fā)Web應(yīng)用時(shí),測試作為軟件工程中極為重要的一個(gè)角色常被忽視。由于單純地認(rèn)為測試工作耗費(fèi)時(shí)間,商業(yè)效益不顯著,許多開發(fā)人員甚至企業(yè)摒棄了寶貴的軟件工程原則,在完成了項(xiàng)目的分析、設(shè)計(jì)、開發(fā)后才考慮開展測試工作。盡管開發(fā)人員在編碼過程中煞費(fèi)苦心,代碼質(zhì)量卻往往和預(yù)期相反,系統(tǒng)不穩(wěn)定、不健壯,這些因素又減緩了開發(fā)過程,增加了開發(fā)成本。因此如何用高效率創(chuàng)造高質(zhì)量的Web應(yīng)用系統(tǒng),保證系統(tǒng)的正確性和可靠性已經(jīng)受到重視;Web測試作為Web應(yīng)用系統(tǒng)開發(fā)過程中的一個(gè)重要環(huán)節(jié),如何有效、系統(tǒng)地開展該項(xiàng)工作是保障系統(tǒng)可靠性的關(guān)鍵。

        單元測試在Web測試中發(fā)揮著至關(guān)重要的作用,由于單元測試的對象是可獨(dú)立編譯或匯編的程序模塊,單元測試的目的是檢查每個(gè)軟件單元能否正確地實(shí)現(xiàn)設(shè)計(jì)說明中的功能、性能、接口和其他設(shè)計(jì)約束等要求,發(fā)現(xiàn)模塊內(nèi)可能存在的各種差錯(cuò),因此及早地進(jìn)行單元測試可以快速適應(yīng)需求變化,避免產(chǎn)生大量錯(cuò)誤,提高系統(tǒng)性能。針對目前常用的基于MVC模式的Web應(yīng)用系統(tǒng),本文提出了一套通用的自動(dòng)化單元測試解決方案,并以該方案為指導(dǎo),構(gòu)建了針對Web應(yīng)用系統(tǒng)的自動(dòng)化單元測試系統(tǒng),發(fā)現(xiàn)了系統(tǒng)在開發(fā)過程中存在的問題,通過對系統(tǒng)部分重要功能的重構(gòu)有效地解決了問題,改善了系統(tǒng)性能。

        1 單元測試方案

        單元測試包括程序邏輯性測試、集成測試、功能測試??傮w測試方案從局部到整體展開,是一個(gè)典型的MVC交互的結(jié)構(gòu)圖,如圖1所示:

        圖1 整體結(jié)構(gòu)圖

        用戶可以通過MVC模式實(shí)現(xiàn)查詢、修改等交互操作。MVC模式分為3個(gè)模塊,分別是模型(Model)、控制器(Controller)、視圖(View),并通過模型模塊和數(shù)據(jù)庫模塊進(jìn)行交互,因此測試方案相應(yīng)地劃分為模型測試模塊,使用Junit對Java Bean進(jìn)行測試;控制器測試模塊,使用Cactus和HttpUnit對Servlet進(jìn)行測試;視圖測試模塊,使用HtmlUnit和JsUnit對Html,Jsp和JS進(jìn)行測試;數(shù)據(jù)庫測試模塊,在對數(shù)據(jù)庫模塊進(jìn)行測試時(shí),常使用模擬連接、構(gòu)造數(shù)據(jù)和驗(yàn)證數(shù)據(jù)等方法。

        在對每一模塊進(jìn)行測試時(shí),根據(jù)模塊中的源文件構(gòu)造相對應(yīng)的測試文件,通常為一對一的關(guān)系,即一個(gè)源文件對應(yīng)一個(gè)測試文件,在一個(gè)測試文件中,按測試粒度由小到大的規(guī)則,首先進(jìn)行程序邏輯性測試,粒度大小為一個(gè)函數(shù),針對文件中每一個(gè)函數(shù)編寫對應(yīng)測試函數(shù);功能測試關(guān)注的是程序某一功能的實(shí)現(xiàn)是否正確,相對函數(shù)的測試粒度增大,因此在程序邏輯性測試之后進(jìn)行;在集成測試時(shí)采用增量式方法,由若干函數(shù)增加至一個(gè)文件,由一個(gè)文件增加至若干文件,最終將所有的測試文件進(jìn)行集成測試。增量式集成測試最好伴隨程序邏輯性測試和功能測試進(jìn)行,通過不斷地集成測試,從總體上提高了測試的質(zhì)量和效率。

        因此,本文提出的測試思想和方案具有一定的通用性,測試的整體思路是首先由大到小劃分測試模塊為若干測試文件,最終劃分到函數(shù)粒度,在函數(shù)粒度級別完成邏輯性測試,覆蓋代碼及功能分支,再由小到大增量完成集成測試,覆蓋功能性測試。通過這樣的測試思想,使得系統(tǒng)由代碼分支到系統(tǒng)功能被充分測試,及早充分發(fā)現(xiàn)系統(tǒng)中存在的問題,提高開發(fā)效率,有效地降低開發(fā)和后期維護(hù)成本。

        1.1 用JUnit實(shí)現(xiàn)單元測試

        JUnit是由Erich Gamma和Kent Beck共同為編寫單元測試發(fā)布的框架,用于編寫和運(yùn)行可重復(fù)的測試用例。它提供了豐富的斷言機(jī)制測試期望結(jié)果,可方便地組織和運(yùn)行測試套件,在極限編程和重構(gòu)實(shí)現(xiàn)中發(fā)揮著重要作用。在實(shí)際測試中,對每一個(gè)Class編寫對應(yīng)的測試文件,Class中每一個(gè)方法對應(yīng)一個(gè)測試函數(shù)。當(dāng)Class的功能變動(dòng)時(shí),只需修改對應(yīng)的測試函數(shù),如果是對Class中的代碼進(jìn)行重構(gòu),即改變代碼不改變功能,則不需修改測試文件的內(nèi)容,通過不斷重構(gòu)和執(zhí)行測試用例來改善代碼質(zhì)量。在編碼和測試的過程中,必須確保所有重要代碼都被測試,有多種測試覆蓋策略,例如按代碼行數(shù)覆蓋、按分支覆蓋等。

        1.2 對數(shù)據(jù)庫進(jìn)行測試

        采用JUnit對數(shù)據(jù)庫進(jìn)行測試時(shí),檢查相關(guān)輸入數(shù)據(jù),傳統(tǒng)且簡單的方法就是用if語句與期望值進(jìn)行比較,在JUnit中,用斷言來代替大量的if語句。斷言是另一種將期望值與實(shí)際值比較的方式,如果比較的結(jié)果相等,則測試用例通過,否則失敗。在JUnit中,將初始的變量或者對象放在setUp()中,它是獨(dú)立于斷言的,因此同一個(gè)變量或者對象可以服務(wù)于多個(gè)測試用例;當(dāng)測試結(jié)束,將銷毀變量或者對象放在tearDown()中實(shí)現(xiàn)。

        在對數(shù)據(jù)庫進(jìn)行測試時(shí),首先驗(yàn)證是否正確建立連接,該過程需要連接真實(shí)的數(shù)據(jù)庫完成;由于在真實(shí)環(huán)境中進(jìn)行測試易產(chǎn)生錯(cuò)誤、降低測試效率,因此最好模擬Connection、Statement、Resultset測試訪問語句是否正確,可以用工具EasyMock實(shí)現(xiàn)模擬過程;開發(fā)人員在編寫代碼對數(shù)據(jù)庫進(jìn)行操作時(shí),經(jīng)常忘記釋放資源,而JDBC API不自動(dòng)回收資源,會(huì)導(dǎo)致由資源泄漏引起的眾多問題,因此需要測試JDBC資源是否釋放。

        數(shù)據(jù)庫測試最常見的方式是向表中插入一條記錄,然后進(jìn)行驗(yàn)證,最后刪除該條記錄。若多個(gè)測試共享同一個(gè)數(shù)據(jù)庫,在這種并發(fā)狀態(tài)下,數(shù)據(jù)庫處于變動(dòng)之中,導(dǎo)致多個(gè)測試之間相互影響,可采用以下方法解決該問題:一是使用回滾技術(shù),將從插入到刪除的過程作為一個(gè)整體,如果被中斷或出錯(cuò)就進(jìn)行回滾;二是在setUp()中實(shí)現(xiàn)數(shù)據(jù)庫連接和數(shù)據(jù)初始化,然后在測試函數(shù)中插入記錄并進(jìn)行斷言,最后在teardown()中刪除記錄并釋放JDBC資源。

        1.3 對服務(wù)器組件進(jìn)行測試

        Cactus是JUnit的擴(kuò)展,可方便地實(shí)現(xiàn)對服務(wù)器端組件的測試,包括Servlet,EJB,Taglib,F(xiàn)ilter等。Http Unit是一個(gè)集成測試工具,要有兩個(gè)功能,一是作為提供發(fā)送請求和接收響應(yīng)功能的客戶端,通過模擬瀏覽器的行為與服務(wù)器端進(jìn)行交互并處理返回的表格表單等;二是簡化了驗(yàn)證響應(yīng)內(nèi)容的方法、簡化斷言。

        在本文提出的方法中,采用Cactus與Http Unit相結(jié)合的方式對服務(wù)器進(jìn)行測試,用Cactus實(shí)現(xiàn)模擬服務(wù)器操作過程,用Http Unit進(jìn)行斷言可以精確定位表單返回值。在MVC模式中,基礎(chǔ)服務(wù)器組件是Servlet,常見測試方法是對Servlet的doGet()和doPost()方法進(jìn)行測試,此外,還需對Request進(jìn)行測試,驗(yàn)證接收的值和預(yù)期的值是否相等。為了測試Servlet是否跳轉(zhuǎn)至正確的頁面,可通過抓取目標(biāo)頁面的內(nèi)容和預(yù)期的相比較來確定。

        1.4 對視圖進(jìn)行測試

        View的測試包括驗(yàn)證JSP頁面的正確性以及對JavaScript文件的測試。本文分別采用HtmlUnit和JsUnit完成。如同在瀏覽器中的操作一樣,HtmlUnit提供了一個(gè)接口允許調(diào)用網(wǎng)頁,填寫表單,點(diǎn)擊鏈接等。JsUnit是一個(gè)支持客戶端JavaScript腳本的單元測試框架,使用它對JavaScript編寫的函數(shù)進(jìn)行行為測試。在驗(yàn)證JSP頁面的正確性時(shí)需要查找空鏈接,本部分詳細(xì)介紹一種用HtmlUnit實(shí)現(xiàn)的算法(算法名稱:checkLink),可以有效地查找到存在的空鏈接,算法的關(guān)鍵步驟如下:

        第一步:調(diào)用WebClient.getPage(URL root)進(jìn)行頁面檢索,root為主頁地址,本系統(tǒng)中為典型案例的主頁地址。

        第二步:如果該頁面是HtmlPage,將得到所有的<a>標(biāo)記,并遞歸跟蹤每一個(gè)鏈接,使用HtmlAnchor中的click方法判斷鏈接是否有效,如果有效,將已檢查過且有效的鏈接添加至一個(gè)ArrayList中并繼續(xù)跟蹤,否則跳轉(zhuǎn)至第三步或第四步。

        第三步:如果鏈接到一個(gè)域外的頁面,則終止該級的鏈接檢查,返回上一級頁面繼續(xù)。

        第四步:當(dāng)跟蹤某個(gè)鏈接出錯(cuò)時(shí),則判定該鏈接失效,將失效的鏈接添加到一個(gè)ArrayList中,終止該級的鏈接檢查,返回上一級繼續(xù)執(zhí)行。

        為了提高程序執(zhí)行的效率,需要增加判斷方法,對已經(jīng)檢查過的url地址和本頁中的鏈接即以“#”開頭的地址,不做重復(fù)性的檢查,否則就會(huì)產(chǎn)生循環(huán)遞歸的問題,最終導(dǎo)致資源耗盡。對不同參數(shù)但指向同一頁面的地址,采用“?”作為判定條件。

        2 實(shí)驗(yàn)研究

        本文提出的單元測試方案適用于基于MVC模式的Web應(yīng)用系統(tǒng),并已有效地應(yīng)用在實(shí)際系統(tǒng)的測試中,通過對一系列Web應(yīng)用系統(tǒng)進(jìn)行測試,發(fā)現(xiàn)系統(tǒng)中存在的問題并通過重構(gòu)解決,提高代碼質(zhì)量,使系統(tǒng)更加高效穩(wěn)定運(yùn)行。

        2.1 Web系統(tǒng)存在的問題

        在對實(shí)際系統(tǒng)進(jìn)行單元測試的過程中,除了發(fā)現(xiàn)各系統(tǒng)實(shí)際存在的Bug外,還發(fā)現(xiàn)Web系統(tǒng)在開發(fā)過程中通常會(huì)出現(xiàn)的一些問題。這些問題雖然本身不是Bug,但它們的存在會(huì)帶來比Bug更嚴(yán)重的問題,多數(shù)Bug可以快速修復(fù),使得系統(tǒng)功能恢復(fù)正常,但是在開發(fā)過程中,由于不良設(shè)計(jì)、不良開發(fā)習(xí)慣和水平低下的開發(fā)人員等原因?qū)е碌膯栴}不僅嚴(yán)重影響系統(tǒng)的功能和性能,還使測試模塊難以編寫,影響測試效率,從而降低系統(tǒng)開發(fā)效率,提高開發(fā)和維護(hù)成本,降低系統(tǒng)可靠性?,F(xiàn)將開發(fā)過程中最容易出現(xiàn)的幾類問題歸納如下:

        1)源文件中單個(gè)函數(shù)實(shí)現(xiàn)功能過多。這樣會(huì)導(dǎo)致測試不靈活,函數(shù)中的所有測試點(diǎn)只能同時(shí)進(jìn)行,由于測試粒度大,不利于定位出錯(cuò)地方,還會(huì)增加對環(huán)境的依賴。例如,一般在實(shí)現(xiàn)Servlet功能的初始階段,可能會(huì)把所有功能都放在一個(gè)函數(shù)中,隨著Servlet功能的增多,函數(shù)功能及函數(shù)代碼相應(yīng)增多,這樣就導(dǎo)致單元測試函數(shù)功能復(fù)雜且單元測試代碼粒度過大、難于維護(hù)和定位錯(cuò)誤、可讀性差等問題。在具體實(shí)現(xiàn)時(shí),如果doPost()函數(shù)功能過多,代碼過長,不利于編寫測試用例,即使測出問題也難以確定錯(cuò)誤模塊,降低開發(fā)效率。

        因此,通過函數(shù)單元測試發(fā)現(xiàn)的問題可以總結(jié)出,在開發(fā)時(shí),函數(shù)功能的設(shè)計(jì)及開發(fā)尤為重要,開發(fā)首要的原則就是功能獨(dú)立,函數(shù)粒度不宜過大,可以通過減少單個(gè)函數(shù)功能、提取公共代碼等方法實(shí)現(xiàn)。

        2)源文件代碼冗余,包括變量冗余和函數(shù)冗余。這不僅使編碼容易出錯(cuò),修改不方便,同時(shí)也增加測試難度和測試量。例如,數(shù)據(jù)庫的連接和釋放的代碼多次出現(xiàn)在不同的方法中,或者實(shí)現(xiàn)對數(shù)據(jù)庫進(jìn)行插入、刪除時(shí),由于表名等名稱不同而導(dǎo)致冗余,在這種情況下,如果需要調(diào)試錯(cuò)誤(如將沒有釋放的數(shù)據(jù)庫連接關(guān)閉),則會(huì)涉及到多個(gè)方法,漏改的情況容易出現(xiàn)。因此導(dǎo)致代碼可維護(hù)性和可讀性差,在開發(fā)階段如出現(xiàn)需求變更或者人員變更,則代碼的維護(hù)工作會(huì)變得異常復(fù)雜。

        3)過于依賴框架。除了對數(shù)據(jù)庫的依賴之外,還存在對Web容器的緊密耦合。這樣的設(shè)計(jì)會(huì)使代碼邏輯不清晰,降低代碼質(zhì)量,給閱讀、修改帶來困難,且無法進(jìn)行模擬測試,導(dǎo)致測試只能在真實(shí)環(huán)境下進(jìn)行,在測試過程中需要反復(fù)調(diào)用數(shù)據(jù)庫、Web服務(wù)器,浪費(fèi)資源,且在大數(shù)據(jù)量的情況下,效率非常底下。

        2.2 通過重構(gòu)解決問題

        針對在測試中發(fā)現(xiàn)的系統(tǒng)存在的問題,提出了以下解決方法,并通過重構(gòu)完成。

        1)明確函數(shù)的功能,拆分較大模塊函數(shù)成為大小適中的函數(shù),粒度過大不利于測試,粒度過小會(huì)使得開發(fā)和測試過程變得繁瑣,增加開發(fā)和測試成本。例如在對Servlet重構(gòu)時(shí),本著極限編程及測試驅(qū)動(dòng)開發(fā)的思想,應(yīng)針對不同的功能編寫測試函數(shù),將doPost()函數(shù)拆分成若干函數(shù)以實(shí)現(xiàn)不同功能,盡量保證各函數(shù)之間低耦合高內(nèi)聚的特性,當(dāng)所有測試用例通過時(shí),每一個(gè)函數(shù)實(shí)現(xiàn)了預(yù)期的功能,在保障功能正確的同時(shí)提高了代碼質(zhì)量。

        2)針對程序中存在的大量冗余代碼,分析代碼功能,將相同功能的代碼通過重構(gòu)抽取成公共方法封裝在類中,供其他程序調(diào)用。例如,可以寫一個(gè)數(shù)據(jù)庫操作類,對數(shù)據(jù)庫操作進(jìn)行合理的封裝,避免數(shù)據(jù)庫操作的重復(fù)代碼,實(shí)現(xiàn)了代碼的重用性。

        3)為減少對框架的依賴,業(yè)務(wù)邏輯盡量從容器中抽取出來,例如,針對業(yè)務(wù)邏輯依賴數(shù)據(jù)庫訪問層接口的問題,可以創(chuàng)建另一個(gè)類實(shí)現(xiàn)這個(gè)接口,實(shí)現(xiàn)與數(shù)據(jù)庫交互。通過業(yè)務(wù)邏輯與持久框架的分離,可以使用預(yù)定義的數(shù)據(jù)對業(yè)務(wù)邏輯測試。

        按照高耦合、低內(nèi)聚的原則,根據(jù)上述發(fā)現(xiàn)的問題及相應(yīng)的解決方法,通過對系統(tǒng)中重要功能進(jìn)行重構(gòu),減少了代碼冗余,改善了代碼質(zhì)量,提高了系統(tǒng)性能和穩(wěn)定性。

        3 總結(jié)

        本文提出了一套單元測試方案,系統(tǒng)地建立了針對MVC模式的Web應(yīng)用的測試流程,發(fā)現(xiàn)了開發(fā)中的問題,提出了有效的解決方法,并將測試方案以及重構(gòu)思想有效地應(yīng)用到實(shí)際系統(tǒng)中,探索了單元測試在測試驅(qū)動(dòng)開發(fā)中的應(yīng)用,總結(jié)了寶貴的經(jīng)驗(yàn)。本文的特點(diǎn)在于針對一類特定問題提煉出測試思想,形成了一套通用的測試方案,重點(diǎn)總結(jié)了測試技巧以及在測試中發(fā)現(xiàn)的問題,并通過不斷地重構(gòu),提高效率,對以后的開發(fā)和測試均有指導(dǎo)意義。

        參考文獻(xiàn)

        [1] Edward Hieatt,Robert Mee. Going Faster:Testing The

        Web Application [J].IEEE SOFTWARE,2002,19(2):60-65

        [2] Gamma E. and Beck K., "JUnit," http://junit.org, 2005.

        [3] 徐雯,高建華. 基于Spring MVC及MyBatis的Web應(yīng)用框架研究[J] 微型電腦應(yīng)用,2012.7

        [4] EasyMock home page. http://www.easymock.org.

        [5] Louridas.P JUnit: Unit Testing and Coding in Tandem [J].IEEE SOFTWARE,2005,22(4):12-15

        [6] 申華.基于MVC的光照度智能控制監(jiān)測平臺(tái)研發(fā)[J]信息與電腦,2015.12

        [7] 周立力,極限編程的質(zhì)量保證分析[J]. 計(jì)算機(jī)應(yīng)用與軟件,2010,27(4):167-168

        [8] S Freeman,《測試驅(qū)動(dòng)的面向?qū)ο筌浖_發(fā)》[M] 北京:電子工業(yè)出版社,2010

        Automated Unit Testing Solution of Web System Based on MVC

        Zhang Min, Chen Jing, Wang Juan
        (Xi'an FANYI University, Xi’an 710105, China)

        Abstract:With the development of network technology, the quality and reliability of Web application was more and more important. How to make a complete testing solution for Web applications to ensure the quality was an urgent problem which needs to solve. The article gave a comprehensive automated testing solution for Web application system based on MVC. It made a simple and practical testing process, and did testing for web systems according to the proposed solution and procedure. It could not only find system error, but also summarize problems found in system developing period. And it could solve problems according to reconstruct in order to improve system performance.

        Key words:Unit Testing; Automation; JUnit

        收稿日期:(2015.12.03)

        作者簡介:張 敏(1980-),女,赤峰市,西安翻譯學(xué)院,講師,碩士,研究方向:數(shù)據(jù)庫與知識庫,西安,710105 陳 靜(1986-),女,西安翻譯學(xué)院,助教,碩士,研究方向:信息處理,西安,710105

        文章編號:1007-757X(2016)02-0078-03

        中圖分類號:TP311

        文獻(xiàn)標(biāo)志碼:A

        猜你喜歡
        自動(dòng)化
        國內(nèi)焊接設(shè)備市場現(xiàn)狀及發(fā)展趨勢研究
        供電企業(yè)電力自動(dòng)化主站系統(tǒng)研究
        錦界煤礦連采膠帶機(jī)集控系統(tǒng)的介紹
        供熱站自動(dòng)控制系統(tǒng)中PLC的應(yīng)用
        AGV小車在白酒行業(yè)自動(dòng)化立體倉庫中的應(yīng)用
        中國市場(2016年36期)2016-10-19 03:40:15
        電氣工程及其自動(dòng)化問題與對策
        我國機(jī)械設(shè)計(jì)制造及其自動(dòng)化的現(xiàn)狀及發(fā)展趨勢
        淺論節(jié)能設(shè)計(jì)理念在機(jī)械制造與自動(dòng)化中的應(yīng)用
        簡析火力發(fā)電廠熱工自動(dòng)化儀表應(yīng)用及故障排除方法
        配網(wǎng)自動(dòng)化實(shí)用化模式建設(shè)及系統(tǒng)運(yùn)行
        午夜天堂精品一区二区| 日韩高清在线观看永久| 日本高清一区二区三区水蜜桃 | 精品国产精品国产偷麻豆| 久久午夜伦鲁片免费无码| 亚洲色图视频在线观看网站 | 无遮挡网站| 国内自拍视频在线观看h| 免费亚洲老熟熟女熟女熟女| 人妻少妇精品无码专区动漫| 亚洲影院丰满少妇中文字幕无码| 免费观看成人稀缺视频在线播放| 国产亚洲精品视频一区二区三区| 国产精品无码无片在线观看3d| 国产精品视频永久免费播放| 欧美成人午夜精品久久久| 欧美国产日本精品一区二区三区| 亚洲色图少妇熟女偷拍自拍| 国产欧美va欧美va香蕉在线| 亚洲处破女av日韩精品| av深夜福利在线| 亚洲天堂一区二区三区 | 干出白浆视频在线观看| 免费国产成人肉肉视频大全| 久久久久无码精品亚洲日韩| 国产人成在线成免费视频 | 婷婷色香五月综合缴缴情| 黄色成人网站免费无码av| 曰本亚洲欧洲色a在线| 亚洲一区二区三区偷拍女| 国产精品乱码一区二区三区| 国产在线美女| 一区二区三区日本久久| 性做久久久久久免费观看| 天天做天天躁天天躁| 亚洲色图视频在线播放| 国产精品亚洲三级一区二区三区| 大陆极品少妇内射aaaaaa| 久久国产成人午夜av影院| 成人av资源在线观看| 乱子伦在线观看|