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

        ?

        面向CLI的自動化測試方法的研究與實(shí)現(xiàn)?

        2018-03-20 07:04:43徐彩霞葛華勇侯仰宇
        關(guān)鍵詞:測試人員測試用例網(wǎng)絡(luò)設(shè)備

        徐彩霞 葛華勇 侯仰宇

        (東華大學(xué)信息科學(xué)與技術(shù)學(xué)院 上海 201620)

        1 引言

        命令行界面(Command-line Interface,CLI)是管理和配置網(wǎng)絡(luò)設(shè)備的一種接口模式,幾乎所有的網(wǎng)絡(luò)設(shè)備都支持CLI接口模式[1]。由于CLI是通過基礎(chǔ)函數(shù)開發(fā)得到的,其具有功能強(qiáng)大、易使用、擴(kuò)充方便、資源占用率少等優(yōu)點(diǎn)[2],所以客戶端計(jì)算機(jī)、路由器和24小時運(yùn)作的服務(wù)器等設(shè)備通常都采用CLI操作方式進(jìn)行自動化的系統(tǒng)管理。因此,對客戶端計(jì)算機(jī)、路由器和服務(wù)器等設(shè)備進(jìn)行CLI測試必不可少。然而,目前的CLI測試方法大部分都使用手工測試,測試人員需要具備專業(yè)知識,熟悉相關(guān)操作的CLI指令。對于簡單的回歸測試,可以采用錄制生成腳本的方式來提高一定的測試效率,但腳本的維護(hù)量大,復(fù)用性低。因此,整個CLI測試過程操作繁瑣,手工輸入易錯,不易排錯,而且要求對測試人員進(jìn)行專業(yè)培訓(xùn),增加了開發(fā)成本。特別是在回歸測試中,極大地浪費(fèi)了人力、時間和金錢。

        為了改善CLI的測試現(xiàn)狀,本文運(yùn)用數(shù)據(jù)驅(qū)動腳本的方式[3],研究并實(shí)現(xiàn)了一種基于Python語言的CLI自動化測試方法。該方法包括四部分內(nèi)容:使用python的unittest測試框架完成整體的測試工作;應(yīng)用telnet協(xié)議和Python的telnetlib模塊實(shí)現(xiàn)主機(jī)的遠(yuǎn)程登錄;利用yaml的直觀、與腳本語言的易交互性,將測試用例集合在yaml文件中;在用戶界面輸出測試結(jié)果,并將結(jié)果生成日志報(bào)告。使用此方法時,若一些測試用例改變,只需要改變數(shù)據(jù)文件,不需要改變測試腳本,提高了測試腳本的復(fù)用性。而且將測試數(shù)據(jù)整合到數(shù)據(jù)文件中,不需要每次測試都進(jìn)行指令的手動輸入,避免了手動輸入指令的重復(fù)性、繁瑣性,減少了手動出錯的頻率。同時,將結(jié)果生成日志報(bào)告,便于開發(fā)、測試人員的后期檢查和調(diào)試。

        2 CLI自動化測試方法

        本方法使用Python腳本語言,運(yùn)用數(shù)據(jù)驅(qū)動腳本的測試思想,分離了測試腳本和測試用例,實(shí)現(xiàn)了沒有宏命令的腳本語言自動化,是一種黑盒自動化測試方式[4],主要用于CLI模塊的功能驗(yàn)證。該自動化測試方法如圖1所示。

        圖1 自動化測試方法流程圖

        編譯運(yùn)行腳本文件時,整個測試過程是通過Python的單元測試框架unittest實(shí)現(xiàn)的。該單元測試框架首先初始化測試環(huán)境,然后執(zhí)行測試工作流,最后,對測試結(jié)束后的測試環(huán)境進(jìn)行清理和還原[5]。其中,執(zhí)行測試工作流的具體順序是:首先通過telnet協(xié)議遠(yuǎn)程登錄主機(jī)設(shè)備;然后利用具體命令讀取yaml數(shù)據(jù)文件,同時將其中的測試數(shù)據(jù)以參數(shù)的形式傳遞給腳本;腳本在客戶端執(zhí)行接收到的測試數(shù)據(jù),即執(zhí)行CLI指令;最后將執(zhí)行結(jié)果輸出到客戶端界面和日志報(bào)告中。

        2.1 unittest測試框架

        基于Java的測試框架JUnit,Python衍生出了自身的單元測試框架unittest。利用unittest,測試人員能夠以更加結(jié)構(gòu)化的方式編寫大型且周詳?shù)臏y試集。

        unittest框架包括:測試用例(TestCase)、測試集合(TestSuite)、測試載入器(TestLoader)、測試運(yùn)行器(TestRunner)、測試結(jié)果(TestResult)和測試夾具(TestFixture)[6]。它們之間的關(guān)系為:1)測試用例:包括測試前環(huán)境的初始化,執(zhí)行測試的代碼、步驟、預(yù)期結(jié)果等,以及測試后環(huán)境的清理還原;2)測試集合:多個測試用例集合在一起構(gòu)成了測試集合;3)測試載入器:將測試用例加載到測試集合中的模塊;4)測試運(yùn)行器:用來執(zhí)行測試集合的模塊;5)測試結(jié)果:包括運(yùn)行的測試用時,測試用例數(shù)目,執(zhí)行成功的用例數(shù)目,執(zhí)行失敗的用例數(shù)目等信息;6)測試夾具:對一個測試用例環(huán)境的初始化和清理,通過覆蓋測試用例的環(huán)境初始化和環(huán)境清理還原的方法來實(shí)現(xiàn)。

        2.2 telnet協(xié)議使用方法

        telnet協(xié)議是Internet遠(yuǎn)程登錄服務(wù)的標(biāo)準(zhǔn)協(xié)議和主要方式[7]。用戶應(yīng)用telnet命令,使用戶計(jì)算機(jī)暫時成為遠(yuǎn)程主機(jī)的仿真終端,之后在仿真終端的telnet程序中輸入命令,這些命令會在主機(jī)上運(yùn)行,與直接在主機(jī)的控制臺上輸入的效果一樣。其工作原理如圖2所示。

        圖2 telnet的工作原理圖

        telnet遠(yuǎn)程登錄服務(wù)采用的是C/S(客戶/服務(wù)器)模式,用戶直接在客戶端輸入指令,仿真終端會把輸入的指令通過telnet程序傳遞給服務(wù)器等網(wǎng)絡(luò)設(shè)備,這些指令會在網(wǎng)絡(luò)設(shè)備的外殼上運(yùn)行,指令運(yùn)行后的輸出信息會通過telnet程序回顯在仿真終端的顯示界面上[8]。通常,客戶端和主機(jī)設(shè)備之間的遠(yuǎn)程連接信息是通過TCP/IP協(xié)議進(jìn)行傳輸?shù)?,在客戶端輸入的用戶名、密碼和命令字符等實(shí)際上就是向服務(wù)器端發(fā)送一個IP數(shù)據(jù);遠(yuǎn)程操作結(jié)束時,斷開telnet連接就是撤銷TCP連接。通過telnet協(xié)議遠(yuǎn)程登錄服務(wù)器需要滿足的條件是:本地計(jì)算機(jī)支持telnet服務(wù)協(xié)議;知道遠(yuǎn)程主機(jī)的IP地址、登錄標(biāo)識用戶名和密碼。

        2.3 yaml數(shù)據(jù)文件

        yaml(Yet Another Markup Language另一種標(biāo)記語言)是一種直觀的、能夠被電腦識別的數(shù)據(jù)序列化格式,是一種可讀性高、容易和腳本語言交互,用來表達(dá)資料序列的編程語言。

        本方法的測試數(shù)據(jù)是以yaml的格式進(jìn)行保存并供測試腳本調(diào)用和執(zhí)行。常見的數(shù)據(jù)存儲方式有純文本、數(shù)據(jù)庫和 XML 文檔、yaml文件等[9]。對于CLI的測試用例集合,純文本形式可讀性不高;數(shù)據(jù)庫方式浪費(fèi)資源;XML雖然易于數(shù)據(jù)交換和處理,但其語法比yaml復(fù)雜,解析成本高;yaml方式結(jié)構(gòu)簡單,實(shí)現(xiàn)方便,解析成本低,而且特別適合在腳本語語言中使用,因此本方法選擇yaml文件格式存儲CLI測試數(shù)據(jù)。

        3 CLI自動化測試方法的實(shí)現(xiàn)

        本文在Python的unittest測試框架上,運(yùn)用tel?net協(xié)議和數(shù)據(jù)驅(qū)動腳本方式實(shí)現(xiàn)了CLI的自動化測試方法。本方法涉及到的unittest、telnetlib、yaml都是Python自帶和支持的標(biāo)準(zhǔn)庫函數(shù)[10],這些標(biāo)準(zhǔn)庫的代碼可用性高、功能強(qiáng)大、速度快,而且使用方便,只需要利用import語句直接導(dǎo)入,然后再根據(jù)各模塊的使用方法分別進(jìn)行配置調(diào)用即可。

        3.1 unittest的使用

        unittest框架的基本使用方法是:首先是準(zhǔn)備測試用例,然后利用測試載入器將測試用例加載到測試集合中,之后由測試運(yùn)行器執(zhí)行測試集合,執(zhí)行結(jié)果保存在測試結(jié)果中。應(yīng)用unittest模塊實(shí)現(xiàn)CLI單元測試的部分程序代碼如圖3所示。

        圖3 unittest框架部分程序代碼

        本文首先在測試腳本中定義了一個測試用例類CLI_Test,該測試用例類繼承自unittest.Test?Case[11]。在 CLI_Test類中,定義的方法包括:1)定義了setUp()方法,在此方法中寫入了測試執(zhí)行前的準(zhǔn)備工作:初始化測試環(huán)境和創(chuàng)建日志文件;2)定義了tearDown()方法,在此方法中寫入了測試結(jié)束后的環(huán)境還原和日志文件的關(guān)閉;3)定義了測試用例文件test_1_CLI,該文件主要包含了測試的啟動、測試內(nèi)容、測試方法、測試數(shù)據(jù)的執(zhí)行、測試結(jié)果的判定及輸出等。因此,通過對unittest模塊進(jìn)行正確的參數(shù)設(shè)置和方法定義,實(shí)現(xiàn)unittest的正常使用和CLI整體測試框架的搭建。

        3.2 遠(yuǎn)程登錄的實(shí)現(xiàn)

        對服務(wù)器等網(wǎng)絡(luò)設(shè)備進(jìn)行CLI功能測試,首先要遠(yuǎn)程登錄服務(wù)器等網(wǎng)絡(luò)設(shè)備,本文利用python的telnetlib模塊實(shí)現(xiàn)主機(jī)設(shè)備的遠(yuǎn)程登錄,其代碼如圖4所示。

        圖4 telnet遠(yuǎn)程登錄網(wǎng)絡(luò)設(shè)備的代碼

        在已知遠(yuǎn)程主機(jī)的IP地址、標(biāo)識和口令的情況下,通過telnetlib模塊可以實(shí)現(xiàn)主機(jī)設(shè)備的遠(yuǎn)程登錄。一般情況下,服務(wù)器的23端口主要用于tel?net服務(wù)[12],是 Internet上普遍采用的登錄和仿真程序。因此,首先定義一個遠(yuǎn)程連接函數(shù)telnet_con?nect,它包括三個參數(shù):主機(jī)host、用戶名username和密碼password;然后,通過設(shè)置tn=telnetlib.Tel?net(host,port=23,timeout=10)來連接主機(jī)設(shè)備的telnet服務(wù),其中host可以是被測主機(jī)的IP地址或者域名;利用語句tn.write(username+“ ”)實(shí)現(xiàn)登錄用戶名的輸入;經(jīng)由語句tn.write(password+“ ”)實(shí)現(xiàn)登錄密碼的輸入;憑借語句tn.expect([“system>”])來判斷遠(yuǎn)程登錄是否成功;最后,編寫命令執(zhí)行、退出Telnet服務(wù)的相關(guān)代碼。

        3.3 測試數(shù)據(jù)集合的實(shí)現(xiàn)

        通過yaml數(shù)據(jù)文件整合所有的測試用例,文件結(jié)構(gòu)可以通過縮進(jìn)來表示,連續(xù)的項(xiàng)目可以通過減號“-”來表示[13]。部分?jǐn)?shù)據(jù)文件格式如圖5所示。

        圖5 yaml數(shù)據(jù)文件

        整個yaml文件通過縮排方式呈現(xiàn),整體結(jié)構(gòu)簡單,可讀性高。當(dāng)執(zhí)行測試腳本時,將yaml文件中的數(shù)據(jù)以參數(shù)形式載入到測試腳本中,提高了腳本的復(fù)用性。文件中的Case是測試用例的ID號,便于測試結(jié)果的審查定位;Command是測試的CLI指令;Returncode是預(yù)期的測試結(jié)果,用于與實(shí)際運(yùn)行結(jié)果作對比,從而判斷測試是否成功。Case、Command、Returncode構(gòu)成了一個簡單的測試用例,所有的測試用例以同樣的形式進(jìn)行排列、整合后,就是一個完整的數(shù)據(jù)文件。

        3.4 測試結(jié)果的判定與實(shí)現(xiàn)

        網(wǎng)絡(luò)設(shè)備的CLI模塊具備完整的功能集合,支持的功能有:SSH的連接與斷開、命令的運(yùn)行、運(yùn)行結(jié)果的反饋等[14]。通常CLI指令運(yùn)行結(jié)果的反饋情況是:執(zhí)行成功會返回ok,執(zhí)行失敗就會返回相應(yīng)的失敗信息。因此,在yaml文件中設(shè)置Return?code為ok,并將其作為腳本中的expect_returncode,即 在 腳 本 中 定 義 :expect_returncode=str(yaml?file_load[Api][l][‘Returncode’]),將屏幕輸出的實(shí)時信息作為腳本中的runtime_returncode,即在腳本中定義:runtime_returncode=output_format(screen_output,CLI_CMD),其中 CLI_CMD=Com?mand,screen_output=tn.read_very_eager(),Com?mand=str(yamlfile_load[Api][j][‘Command’])。若expect_returncode和runtime_returncode相等,則代表該條命令執(zhí)行成功,否則代表執(zhí)行失敗。同時,將測試結(jié)果輸出到終端界面。而且為了便于開發(fā)、測試人員調(diào)試CLI功能程序,將測試結(jié)果輸出打印到日志中,日志文件包含測試用時、測試結(jié)果信息、測試用例總數(shù)、執(zhí)行成功的測試用例數(shù)、執(zhí)行失敗的測試用例數(shù)等。

        4 結(jié)果與分析

        本方法主要根據(jù)returncode判斷用例的測試結(jié)果,若runtime_returncode等于expect_returncode,則該條命令執(zhí)行成功,否則執(zhí)行失敗。然后將測試結(jié)果輸出到用戶界面,并打印到日志中。用戶界面的輸出結(jié)果如圖6所示。

        圖6 用戶界面的輸出結(jié)果

        輸出到用戶界面的信息包括測試用例的基本信息:case ID、Command,Telnet情況,以及預(yù)期結(jié)果和運(yùn)行結(jié)果。但是,若只將測試結(jié)果輸出到用戶界面是不方便的。因?yàn)镃LI的測試用例很多,而且自動化測試執(zhí)行的速度很快,用戶界面不適合測試結(jié)果的統(tǒng)計(jì)、整理與審查。因此,同時將測試結(jié)果打印到日志中,便于測試結(jié)果的統(tǒng)計(jì)、整理與檢查,有利于開發(fā)、測試人員的調(diào)試。該腳本共打印了三個日志文件,包含所有測試用例信息的詳細(xì)日志和樣例日志,僅包含測試失敗用例信息的詳細(xì)日志,滿足開發(fā)、測試人員后期檢查時的不同需求。所有測試用例的詳細(xì)日志如圖7所示。

        圖7 所有測試用例信息的詳細(xì)日志

        以包含8個測試用例的yaml文件為例,在所有測試用例的詳細(xì)日志中,可以得到的信息有:測試開始時間、測試結(jié)束時間、測試用時、測試用例信息、測試結(jié)果信息、測試成功用例數(shù)、測試失敗用例數(shù)等。當(dāng)后期檢查時,依照日志中的用例ID和Command可以快速定位和獲取測試用例的具體信息;根據(jù)日志中的Runtime Returncode得到命令執(zhí)行的實(shí)時輸出信息和測試失敗用例的錯誤原因,能夠及時調(diào)試和改善功能程序的缺陷;憑借日志中的PASSED數(shù)目和FAILED數(shù)目快速統(tǒng)計(jì)測試用例的覆蓋率和成功率,從而判斷當(dāng)前build的穩(wěn)定性和有效性;通過日志中的used time可以看出每個測試用例的執(zhí)行時間都控制在10s級別,比起每次手動輸入節(jié)省時間。

        5 結(jié)語

        本文應(yīng)用數(shù)據(jù)驅(qū)動腳本方式,使用Python的單元測試框架研究并實(shí)現(xiàn)了一種面向CLI的自動化測試方法。該方法利用telnet協(xié)議實(shí)現(xiàn)主機(jī)設(shè)備的遠(yuǎn)程登錄,并將測試用例從測試腳本中分離出來存放在外部的yaml數(shù)據(jù)文件中,實(shí)現(xiàn)了沒有宏命令的腳本語言自動化,提高了腳本的復(fù)用性。而且將測試結(jié)果打印到日志文件中,便于開發(fā)、測試人員進(jìn)行檢查調(diào)試。與CLI的測試現(xiàn)狀相比,該方法有效地避免了CLI測試工作的繁瑣性、手動易錯性,增強(qiáng)了測試腳本的復(fù)用度,極大地提高了測試效率、測試覆蓋率,明顯地減少了CLI功能的開發(fā)成本。而且選用yaml,提高了數(shù)據(jù)文件的可讀性,應(yīng)用人群更廣;利用Python的強(qiáng)大功能庫進(jìn)行腳本的編寫,代碼簡潔,開發(fā)簡單。

        該測試方法主要應(yīng)用于CLI的功能測試環(huán)節(jié),下一步可以將源代碼的分析模塊、測試用例的生成模塊也集成到該方法中,并考慮提供一個用戶交互頁面便于測試人員的操作。

        [1]姚林燕.CLI中命令樹的設(shè)計(jì)和實(shí)現(xiàn)[J].信息通信,2012(1):184-186.

        YAO Linyan.Design and Implementation of Command Tree in CLI[J].Information&Communications,2012(1):184-186.

        [2]李晨.基于CLI的IPRAN網(wǎng)絡(luò)管理系統(tǒng)框架的研究和實(shí)現(xiàn)[D].武漢:武漢郵電科學(xué)研究院,2014:9-18.

        LI Chen.Research and Realization of CLI-Based IP RAN NMS Framework[D].Wuhan:Wuhan Research Institute of Posts and Telecommunications,2014:9-18.

        [3]陳琪.自動化測試平臺的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2014:5-18.

        CHEN Qi.Design and Implementation of Test Automation Platform[D].Xian:Xidian University,2014:5-18.

        [4]李鑫.基于Python的軟件測試自動化平臺[D].太原:太原科技大學(xué),2014:17-41.

        LI Xin.Software Testing Automation Platform Based on Py?thon[D].Taiyuan:Taiyuan University of Science&Tech?nology,2014:17-41.

        [5]蔣子豪.基于Appium的移動端自動化測試項(xiàng)目的設(shè)計(jì)與實(shí)現(xiàn)[D].南京:南京大學(xué),2016:43-54.

        JIANG Zihao.The Design and Implementation of Appi?um-based Automated Testing Project on Mobile Platforms[D].Nanjing:Nanjing University,2016:43-54.

        [6]江嶼.基于Junit的接口測試框架的設(shè)計(jì)與實(shí)現(xiàn)[D].南京:東南大學(xué),2015:6-13.

        JIANG Yu.Design and Realization of the Test Framework of Interface Based on Junit[D].Nanjing:Southeast Univer?sity,2015:6-13.

        [7]周開波,張治兵,倪平,等.網(wǎng)絡(luò)設(shè)備Telnet服務(wù)安全威脅及其防范措施[J].現(xiàn)代電信科技,2016,46(3):11-15.

        ZHOU Kaibo,ZHANG Zhibing,NI Ping,et al.Security threats and counter measures related to Telnet of Network devices[J].Modern Science&Technology of Telecommu?nications,2016,46(3):11-15.

        [8]胡奕,唐莉萍.嵌入式系統(tǒng)上無操作系統(tǒng)Telnet服務(wù)器的實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2014,23(10):79-84.

        HU Yi,TANG Liping.Implementation of Telnet Server for Non-OS Embedded System[J].Computer System Applica?tion,2014,23(10):79-84.

        [9]崔紅軍,饒若楠,邵培南.一種API自動化測試工具的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2007,33(4):270-274.

        CUI Hongjun,RAO Ruonan,SHAO Peinan.Design and Im?plementation of An Automated API Test Tool[J].Comput?er Engineering,2017,33(4):270-274.

        [10]Magnus Lie Hetland.Python基礎(chǔ)教程[M].司維,曾軍崴,譚穎華譯.第2版.北京:人民郵電出版社,2010:277-290.

        Magnus Lie Hetland.Basic Course of Python[M].Si Wei,ZENG Junwei,TAN Yinghua translation.The Second Edition.Beijing:Posts and Telecommunications Press,2010:277-290.

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

        BAI Kai,CUI Donghua.Research of Automatic Unit Test Based on Junit[J].Computer&Digital Engineering,2010,38(2):52-54.

        [12]張國防.基于telnet協(xié)議的Linux遠(yuǎn)程管理[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2014(10):53-54.

        ZHANG Guofang.TheremotemanagementofLinux based telent[J].Network Security Technology and Appli?cation,2014(10):53-54.

        [13]M Eriksson,V Hallberg.Comparison between JSON and YAML for data serialization[EB/OL].(2011)[2016].http://www.csc.kth.se/utbildning/kandidatexjobb/datateknik/2011/rapport/eriksson_malin_OCH_hall?berg_victor_K11047.pdf.

        [14]劉益,朱曉民.資源池中CLI模塊化網(wǎng)絡(luò)配置管理設(shè)計(jì)方案[J].電信工程技術(shù)與標(biāo)準(zhǔn)化,2016,29(1):44-48.

        LIU Yi,ZHU Xiaomin.Design scheme of network config?uration management of CLI template in resource pool[J].Telecom EngineeringTechnicsand Standardization,2016,29(1):44-48.

        猜你喜歡
        測試人員測試用例網(wǎng)絡(luò)設(shè)備
        移動應(yīng)用眾包測試人員信譽(yù)度復(fù)合計(jì)算模型研究
        基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
        一種基于C# 的網(wǎng)絡(luò)設(shè)備自動化登錄工具的研制
        基于混合遺傳算法的回歸測試用例集最小化研究
        高校分析測試中心測試隊(duì)伍建設(shè)方案初探
        山東化工(2018年20期)2018-04-02 16:30:53
        淺析軟件測試中的心理學(xué)應(yīng)用
        數(shù)據(jù)中心唯“快”不破
        基于依賴結(jié)構(gòu)的測試用例優(yōu)先級技術(shù)
        基于列車監(jiān)測網(wǎng)絡(luò)設(shè)備的射頻功放模塊設(shè)計(jì)
        基于三層交換技術(shù)架構(gòu)數(shù)字化校園網(wǎng)絡(luò)設(shè)備的配置與管理
        男女av免费视频网站| 精品一区二区av天堂| 无码人妻久久一区二区三区不卡| 久久精品国产亚洲av四虎| 国产成人亚洲日韩欧美| 人人妻人人澡人人爽人人精品电影 | 男女视频网站免费精品播放| 日韩人妻中文字幕专区| 女人18片毛片60分钟| 乱码av麻豆丝袜熟女系列| 成熟人妻av无码专区| 日本久久久| 国内精品极品久久免费看| 中文字幕女优av在线| 日韩人妻无码精品久久久不卡| 国产在线一区观看| 国产熟女精品一区二区| 久久久极品少妇刺激呻吟网站 | 亚洲级αv无码毛片久久精品 | 久久精品国产亚洲av蜜桃av| 国产亚洲精品品视频在线 | 无码人妻精品丰满熟妇区| 最新国产精品亚洲二区| 99麻豆久久精品一区二区| 玩弄少妇人妻中文字幕| 亚洲 另类 日韩 制服 无码| 国产精品亚洲成在人线| 爆乳午夜福利视频精品| 中文字幕女同人妖熟女| 国产h视频在线观看| 美女在线国产| 精品在线亚洲一区二区三区| 精品香蕉99久久久久网站| 无码熟妇人妻av在线影片| а的天堂网最新版在线| av在线天堂国产一区| 99热爱久久99热爱九九热爱| 真实国产乱视频国语| 中文字幕人妻久久一区二区三区| 在线中文字幕乱码英文字幕正常 | 欧美国产日产一区二区|