《電子技術應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > 基于QTP的數據驅動測試開發
基于QTP的數據驅動測試開發
來源:微型機與應用2014年第2期
王 敏,高 霞,王智超
(武昌理工學院 信息工程學院,湖北 武漢430223)
摘要: 提出采用面向自動化測試的測試用例設計格式,通過QTP的編程功能,使用外部數據源來實現較復雜的數據驅動測試。具體方法是采用Excel作為測試數據源,制定Excel中測試數據的設計格式,建立專用的函數庫來操作Excel數據,實現以數據為驅動的自動化測試。這一方法能有效地實現測試數據與測試腳本的分離,同時,測試數據的設計操作變得方便,數據的可讀性增強,提高了測試效率和測試數據的維護效率。
Abstract:
Key words :

摘  要: 提出采用面向自動化測試的測試用例設計格式,通過QTP的編程功能,使用外部數據源來實現較復雜的數據驅動測試。具體方法是采用Excel作為測試數據源,制定Excel中測試數據的設計格式,建立專用的函數庫來操作Excel數據,實現以數據為驅動的自動化測試。這一方法能有效地實現測試數據與測試腳本的分離,同時,測試數據的設計操作變得方便,數據的可讀性增強,提高了測試效率和測試數據的維護效率。
關鍵詞: QTP;函數庫;測試腳本;測試用例;測試報告

    近年來,軟件測試工具逐步得到應用和普及,在軟件測試的各個領域發揮著應有的作用[1]。但也有不少軟件企業耗巨資購買了軟件測試工具而被閑置,其主要原因是人們對測試工具本身提供的功能抱以了過高的期望值,如果對測試人員缺乏必要的自動化測試的理論培訓和測試工具的使用培訓,一旦遇到困難就容易放棄測試工具,回歸到人工測試狀態。實際上,大多數測試工具只是提供了一個測試平臺,要使測試工具給項目帶來效率,必須通過長期的經驗積累和資源積累才能實現,其中資源積累主要是基于測試工具的可重用測試腳本的開發[2-3]。
    功能測試工具QTP是目前比較流行的測試工具之一,它可以通過錄制操作步驟、在關鍵字視圖參數化數據、設置各類檢查點來實現自動化測試[4]。但對于較為復雜的測試過程,僅僅通過關鍵字視圖的簡單操作很難實現測試過程的自動化,QTP提供了專家視圖來進行測試腳本的開發,通過這種方式能開發更強大和更靈活的測試腳本。在腳本開發中采用數據驅動方式進行腳本開發能提高測試腳本的靈活性,增加測試覆蓋面。因此,腳本開發與數據驅動測試常常是相輔相成的技術。
    數據驅動的測試方法解決的核心問題是把數據從測試腳本中分離出來。QTP可以通過Data Table參數化和環境變量參數化來實現數據驅動,但Data Table中只包含兩個工作表,且Data Table工作表的參數化數據只能通過列標題來識別,這樣設計的測試數據可讀性欠佳,雖然可以將外部Excel工作表的數據導入到Data Table來變向地增加工作表,但由于只能通過列標題識別數據,故仍然存在數據可讀性和靈活性問題,不便于測試數據的維護;采用環境變量來參數化數據的方法,每一個變量只能對應一個取值,只適合少量的參數化數據,不便于對同一變量不同取值的循環測試。因此,要使數據驅動測試的方法在較復雜的測試過程中發揮作用,上述兩種方法均不能較圓滿地實現,這就需要采用其他外部數據源,并針對數據源進行腳本開發。
1 面向自動化測試的測試用例設計
    軟件工程提出了很多文檔、圖形設計和代碼規范,其目的是便于維護和實現對這些對象的自動化操作,即通過編程來處理這些對象。同樣,制定一個較為規范的測試用例設計格式,用于實現以數據為驅動的測試腳本開發,可以降低測試腳本開發的復雜程度,也可省略將測試用例向測試腳本轉化這一步驟。
    在實際項目中,測試用例設計人員一般選用表格化的Excel來進行測試用例的設計[5],這里,也沿用這一方式并以常用的管理信息系統設計模式為例來制定測試用例的設計格式。
    測試用例由測試輸入、執行條件和預期結果構成[6],因此,測試用例設計應包含這3個要素。由于軟件類型千差萬別,目前尚無一個較好的形式化語言來定義測試用例,通常采用的是自然語言,而對于數據量較多的測試用例,往往采用描述和附加數據的方式來進行測試用例設計。采用Excel進行測試用例設計時,一個測試實體通常用兩個工作表來進行設計,即測試用例設計工作表和測試數據工作表,測試用例設計工作表以表格形式呈現,用自然語言對測試用例的三要素進行描述,測試數據工作表以數據為主體呈現數據。另外,為了方便確認測試結果和測試管理,還會增加一個測試結果工作表用來保存實際執行的結果,采用QTP進行GUI相關的軟件測試時,它能錄制執行界面,因此測試結果無需人工截圖,只需要保留測試執行中QTP不便捕獲的數據(如數據庫中的數據)。該工作表不屬于測試用例設計范圍,但與測試用例設計工作表和測試數據工作表保存于同一工作簿文件中,便于在測試執行過程中即時保留相關數據。
    本研究主要針對測試數據工作表的格式進行設計,目標是使測試數據既具有較好的可讀性又便于編程實現數據驅動測試。以學生信息管理模塊為例來說明測試用例設計格式。這里,主要以一般管理信息系統常用的增刪改查功能來說明。測試對象界面如圖1所示。

    對圖1所示的界面進行功能測試,測試的主要功能為界面操作與數據庫數據是否吻合,為了使測試過程通過數據驅動在QTP上自動完成,設計了如圖2所示的測試數據設計格式(限于篇幅,圖2中只包含修改功能的用例)。其中,測試用例編號Case002、執行前數據標志BeforeTest、數據庫數據標志DataBase、執行動作標志【Delete】和【Insert】、數據結束標志***END***、界面數據標志Form、測試執行后標志AfterTest均為設計格式中的關鍵字,其中,測試用例編號不能重復。在后續的數據驅動測試腳本開發中,將根據這些關鍵字查找數據自動完成測試。
    圖2所示為對學生基本信息管理界面的修改功能進行測試的測試用例。測試用例執行前,由于界面中的“所屬”顯示的內容來自Department表,因此需要制作該表的數據,同時還需要制作Student中用于修改操作的對象數據。為簡化數據制作的實現,統一采用刪除后再插入數據的方式來制作數據庫測試數據。測試用例執行后,需要驗證數據庫中Student表的數據是否按界面設定內容發生改變,AfterTest中為數據庫數據的預期結果值,用于與實際執行結果相比較來判斷結果的正確性。

 

 

2 數據驅動測試的設計與實現
    為便于重用,將用于數據驅動測試的過程和函數設計在一個函數庫中。同時,為了減少Excel文件數據讀取的I/O次數,首先將工作表中的數據一次讀入二維數組,然后采用二維數組的數據來驅動測試執行。
2.1 函數庫的設計
    對圖1所示界面進行功能測試,一條測試用例執行的基本步驟為:數據庫環境設定→界面操作→結果保留和判斷→測試報告生成。因此,庫函數主要圍繞上述步驟的實現進行設計,其中主要實現的功能為用例執行前數據庫環境的設定、用例執行后數據庫結果的保留以及測試結果判斷,其中作為測試結果的界面部分由QTP的Active Screen功能自動保存。另外,測試用例執行及測試報告生成功能在各個測試對象的測試腳本中實現。為減少測試腳本與函數庫過程和函數間的參數傳遞,將二維數組作為公共變量(arrRange)定義在函數庫中,函數庫中定義的主要過程和函數如下:
    (1)測試數據讀入過程
    ReadExcelData(strPath,strSheet),參數順次為Excel文件保存路徑、工作表名,其功能是將工作表中的數據保存于二維數組(arrRange)中,供后續測試使用,實現代碼如下:
Sub ReadExcel(strFileName,strSheetName)
    Dim objExcel
    Dim objRange
    '打開Excel指定工作表
    On error Resume Next
    Set objExcel=CreateObject("Excel.Application")
    objExcel.Workbooks.Open(strFileName)
    Set objRange=objExcel.Worksheets(strSheetName).UsedRange
    If  err.Number<>0  Then
        Exit Sub
    End If
    On error Goto 0
    '將Excel轉成二維數組
    arrRange=objRange.Value
    objExcel.WorkBooks.Item(1).close
    Set objRange=nothing
    objExcel.quit
    Set objExcel=nothing
End Sub
    (2)數據查找過程SearchData (strKey,Byref m,Byref n),參數依次為查找關鍵字、行編號、列編號。功能為查找關鍵字在二維數組中的位置,參數m、n既帶入查找開始位置,又將查找結果帶回到主調腳本中,實現代碼如下:
Sub Search(strKey,Byref m,Byref n)
    Dim blnLoop
    blnLoop=True
    On error Goto 0
    For i=m to UBound(arrRange)
        For  j=1 to UBound(arrRange,2)
        If  cstr(arrRange(i,j))=strKey  Then
          m=i
          n=j
          blnLoop=False
          Exit for
        End If
      Next
      If blnLoop=False Then
        Exit for
      End If
    Next
End Sub
    (3)數據庫環境構建過程
    CreateDbData(strCaseNo,Byref m,Byref n),參數依次為測試用例編號、行編號和列編號,該過程的功能是對指定用例執行前的數據庫環境進行設定,將工作表中對應用例編號下面DataBase與/DataBase之間的數據按順序先刪除再插入,該過程將調用SearchData過程來定位數據位置。其處理流程如圖3所示。

    (4)測試結果保留過程
    SaveDbData(strCaseNo,strResultSheet),參數為測試用例編號,功能為從測試數據工作表中讀取AfterTest中的SQL語句,將數據庫中查詢的數據結果依次保存到測試結果工作表中。
    (5)測試結果判斷函數
    JudgeResult(strCaseNo,ByRef strMsg),參數為測試用例編號和測試結果信息,比較預期結果與實際執行結果是否一致,若抽選出的數據量或對應數據值一致則返回True;若不一致,則返回值為False,同時將比較結果的詳細信息通過strMsg變量帶回到主調測試腳本中。為簡化數據比較操作,要求預期結果與實際結果按同樣方式排序,因此查詢結果的SQL語句必須用ORDER BY語句對抽選結果進行排序。
2.2 測試腳本設計
    在編寫測試腳本前,先通過QTP錄制一段簡單的界面操作,錄制過程中,將測試中需要捕獲的對象用鼠標拖選,以便將其添加到對象庫中,然后停止錄制,最后根據測試流程在專家視圖中編寫測試腳本。以下為圖2所示的測試用例Case002對應的測試腳本:
Dim i,j
Dim strCaseNo,strMsg
Dim strPath,strTestDesign,strResultSheet
i=1
j=1
strPath="D:\QTP\Student.xls"
strTestDesign="TestDesign"
strResultSheet ="TestResult"
Call ReadExcel(strPath, strTestDesign)
'Case001
strCaseNo="Case001"
……(略)
'Case002
strCaseNo="Case002"
Call CreateDbData (strCaseNo,i,j)
Call Search("Form",i,j)
i=i+2
VbWindow("frmStudent").VbRadioButton("修改").Set
VbWindow("frmStudent").VbEdit("txtNo").Set GetValue(i,j)
VbWindow("frmStudent").VbButton("檢索").Click
VbWindow("frmStudent").VbEdit("txtName").Set GetValue(i,j)
VbWindow("frmStudent").VbComboBox("cobSex").Select GetValue(i,j)
VbWindow("frmStudent").VbEdit("txtBirthday").Set GetValue(i,j)
VbWindow("frmStudent").VbComboBox("cobDept").Select GetValue(i,j)
VbWindow("frmStudent").VbEdit("txtTel").Set GetValue(i,j)
VbWindow("frmStudent").VbEdit("txtYou").Set GetValue(i,j)
VbWindow("frmStudent").VbEdit("txtAddress").Set GetValue(i,j)
VbWindow("frmStudent").VbButton("執行").Click
Call SaveDbData(strCaseNo,strResultSheet)
If  JudgeResult(strCaseNo,strMsg)=false  then
    reporter.ReportEvent 1,strCaseNo ,strMsg  ' 失敗
else
    reporter.ReportEvent  0,strCaseNo,strMsg  '成功
end if
……(略)
    腳本中調用了函數GetValue來動態獲取輸入界面的數據,該函數定義在函數庫中,用來獲取行列為i、j的數組值,由于是按列依次獲取數據,在函數中將j值自動加1來實現。
2.3 測試結果
    對圖1的界面設計增刪查改4個測試用例,并在應用程序的修改操作中人為制造一個Bug,使Update語句漏掉一個字段的修改,運行測試腳本,測試報告如圖4所示。

    軟件測試工具給自動化測試提供了一個實用的平臺,但要對應各種復雜的測試,基于測試工具的二次開發是必不可少的。本研究主要針對一般管理信息系統的基本功能設計了一個測試數據設計格式,并基于這一格式建立了一個能通用于類似系統的函數庫。后續研究中將繼續在QTP測試平臺對實際項目中常用的一些測試模式進行可重用函數庫的開發研究,以提升QTP的自動化測試能力和效率。
參考文獻
[1] 陳技能.QTP自動化測試進階[M].北京:電子工業出版社,2011:153-179.
[2] 張鶴.基于QTP的自動化功能測試研究與實現[D].哈爾濱:哈爾濱工業大學,2011.
[3] 杜麗潔.基于QTP自動化測試框架的開發與應用[D].武漢:武漢理工大學,2012.
[4] 區立斌.基于層次關鍵字驅動的自動化測試框架設計與應用[D].廣州:中山大學,2012.
[5] 王敏,陳亞光.數據庫系統輔助測試工具[J].微型機與應用,2013,32(3):13-15.
[6] 佟偉光.軟件測試[M].北京:人民郵電出版社,2008.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美激情片在线观看| 模特精品在线| 99国产精品视频免费观看一公开| 欧美国产日本高清在线| 免费在线一区二区| 欧美主播一区二区三区美女 久久精品人| 久久综合999| 今天的高清视频免费播放成人| 国一区二区在线观看| 国产精品久久国产三级国电话系列| 欧美成人免费视频| 亚洲欧美日韩一区二区三区在线观看| 一个色综合av| 亚洲二区三区四区| 久久精品一区二区国产| 欧美色图五月天| 亚洲福利视频一区| 欧美午夜精彩| 亚洲二区在线观看| 欧美大胆a视频| 欧美在线二区| 午夜视频一区| 国产欧美日韩亚洲| 国产精品女人毛片| 久久精品亚洲一区二区三区浴池| 国产欧美精品一区aⅴ影院| 欧美日韩国产一级| 久久精品国产清自在天天线| 欧美日韩影院| 久久精品国产99精品国产亚洲性色| 亚洲欧美精品一区| 亚洲精品1234| 欧美调教视频| 亚洲国产精品久久人人爱蜜臀| 欧美日韩在线视频一区二区| 欧美影视一区| 欧美日韩中文字幕日韩欧美| 欧美成人精品一区二区三区| 国产在线精品自拍| 亚洲品质自拍| 欧美日韩午夜在线视频| 久久综合狠狠综合久久综合88| 亚洲国内高清视频| 国产精品日韩欧美| 国产精品免费区二区三区观看| 一区二区三区精品国产| 久久在线视频在线| 欧美成人在线影院| 国产精品免费看久久久香蕉| 一区二区在线观看视频在线观看| 在线亚洲伦理| 亚洲国产岛国毛片在线| 一区二区三区黄色| 国产日韩在线亚洲字幕中文| 欧美高清视频免费观看| 在线综合亚洲欧美在线视频| 国产一区二区成人| 欧美精品大片| 精品成人一区二区三区| 欧美性猛交xxxx乱大交蜜桃| 亚洲精品永久免费精品| 亚洲综合视频网| 欧美精品v日韩精品v国产精品| 欧美91大片| 欧美精品九九99久久| 欧美a一区二区| 欧美先锋影音| 欧美日韩1区2区| 欧美成人午夜视频| 欧美午夜在线| 欧美精品成人91久久久久久久| 国产日韩欧美不卡| 国产精品区免费视频| 欧美日韩国产小视频| 亚洲美女中文字幕| 99国产精品自拍| 国产婷婷色一区二区三区在线| 亚洲欧美资源在线| 亚洲韩国日本中文字幕| 欧美1区2区3区| 一区二区激情| 欧美日韩高清免费| 欧美精品在线视频观看| 欧美精品成人| 欧美午夜视频在线观看| 日韩视频在线观看一区二区| 亚洲免费在线看| 精品成人免费| 永久免费精品影视网站| 日韩图片一区| 国产午夜亚洲精品理论片色戒| 亚洲精选一区二区| 国产午夜精品理论片a级探花| 亚洲电影欧美电影有声小说| 欧美日韩精品一本二本三本| 亚洲欧美www| 亚洲激情欧美激情| 亚洲日本乱码在线观看| 亚洲一区在线看| 亚洲一区二区动漫| 亚洲欧美日韩精品综合在线观看| 蜜臀91精品一区二区三区| 国内精品久久久| 国产一区二区三区视频在线观看| 国产精品一区二区久久精品| 国产女主播一区二区三区| 狠狠狠色丁香婷婷综合久久五月| 在线观看av不卡| 久久久久久久一区二区三区| 国产精品二区在线观看| 麻豆成人av| 91久久久一线二线三线品牌| 99综合视频| 亚洲欧美国产高清va在线播| 久久久亚洲人| 国产精品啊v在线| 亚洲视频1区2区| 欧美激情精品久久久久久大尺度| 日韩一级视频免费观看在线| 久久影院亚洲| 欧美一区二区大片| 一区二区国产精品| 欧美va日韩va| 亚洲欧美激情视频在线观看一区二区三区| 国产精品综合网站| 亚洲欧美日韩成人高清在线一区| 在线观看成人一级片| 国产一区二区三区不卡在线观看| 欧美日韩三级一区二区| 久久福利精品| 亚洲精品欧美| 亚洲自拍啪啪| 久久精品主播| 亚洲国产一区二区三区a毛片| 久久免费视频这里只有精品| 一区二区三区视频观看| 欧美日韩国产成人| 夜夜爽夜夜爽精品视频| 中文在线资源观看视频网站免费不卡| 欧美成人性生活| 91久久精品网| 亚洲国产成人porn| 欧美中文在线视频| 国产美女高潮久久白浆| 久久久最新网址| 国产伦精品一区二区三| 欧美一区二区成人6969| 欧美—级a级欧美特级ar全黄| 欧美午夜精品久久久久免费视| 欧美日韩一区二区免费视频| 日韩亚洲在线观看| 国产精品一级| 国产精品毛片a∨一区二区三区| 美国成人毛片| 久久精品国产视频| 亚洲欧美日韩网| 国产精品视频最多的网站| 欧美日韩国产成人精品| 欧美日韩国产一区二区三区| 国产欧美日韩精品一区| 国产精品久久国产三级国电话系列| 欧美精品www在线观看| 久久黄色影院| 欧美亚洲成人网| 久久免费精品日本久久中文字幕| 亚洲国产日韩欧美在线图片| 亚洲精品少妇| 亚洲一区二区三区精品视频| 欧美日韩免费高清一区色橹橹| 一区二区在线不卡| 亚洲欧洲视频在线| 久久人人爽人人爽爽久久| 亚洲欧美日韩一区二区| 国产日韩在线看片| 国产精品揄拍一区二区| 国外成人在线视频| 欧美另类99xxxxx| 国产日韩精品视频一区| 欧美一区不卡| 亚洲欧洲综合另类在线| 午夜综合激情| 欧美电影免费观看高清| 国产精品国产三级国产aⅴ入口| 亚洲精品日韩在线观看| 久久久99国产精品免费| 一区二区在线观看视频| 欧美一区二区性| 欧美激情视频在线播放| av不卡在线观看| 狠狠综合久久av一区二区小说| 欧美在线视频日韩| 欧美影院精品一区| 欧美视频精品在线观看| 久久久噜噜噜久久中文字免| 国产精品高潮呻吟久久av黑人| 国产一区二区三区av电影| 欧美在线综合视频| 国产精品hd| 国产伦精品一区二区三区视频孕妇| 欧美午夜激情小视频| 欧美三级第一页| 亚洲精选视频在线| 欧美黄免费看| 欧美日韩调教| 亚洲精品一区二区在线观看| 国产亚洲一本大道中文在线| 国产精品xxx在线观看www| 国产精品电影观看| 欧美激情综合在线| 久久麻豆一区二区| 欧美日韩国产精品一区二区亚洲| 国产毛片一区| 在线成人www免费观看视频| 黑丝一区二区三区| 久久久久九九九| 毛片av中文字幕一区二区| 欧美精品18videos性欧美| 制服诱惑一区二区| 先锋影音国产精品| 亚洲欧美综合网| 亚洲性线免费观看视频成熟| 久久成人国产| 午夜精品福利一区二区蜜股av| 国产麻豆视频精品| 国产三级精品三级| av成人免费在线观看| 国产精品护士白丝一区av| 亚洲精品在线三区| 另类专区欧美制服同性| 久久爱91午夜羞羞| 亚洲一区免费视频| 国产日韩久久| 国产专区欧美专区| 欧美激情网站在线观看| 亚洲一线二线三线久久久| 亚洲日本一区二区三区| 国产精品久久久久999| 欧美成黄导航| 国产精品一级久久久| 久久综合久久久| 国产一区视频观看| 久久黄色网页| 亚洲欧洲日产国码二区| 亚洲综合99| 亚洲美女在线一区| 亚洲女同性videos| 国产精品久久久久久久午夜片| 欧美日韩成人激情| 一区二区高清视频| 亚洲第一精品夜夜躁人人爽| 国产欧美日韩中文字幕在线| 国产精品亚洲一区| 亚洲免费一级电影| 国产曰批免费观看久久久| 欧美日韩高清不卡| 亚洲人成亚洲人成在线观看图片| 亚洲激情二区| 欧美三级电影一区| 欧美成人激情视频免费观看| 韩国av一区二区三区四区| 欧美日韩精品二区| 欧美一区二区三区视频在线观看| 国产精品日韩欧美大师| 久久综合五月天婷婷伊人| 国产精品国产成人国产三级| 韩国一区二区在线观看| 欧美成人免费大片| 女女同性女同一区二区三区91| 亚洲电影中文字幕| 这里只有精品电影| 欧美精品一区在线播放| 一本一本久久a久久精品综合麻豆| 欧美18av| 久久伊人一区二区| 一区精品在线播放| 欧美三级视频| 亚洲欧美日韩天堂一区二区| 在线视频日本亚洲性| 在线观看欧美亚洲| 亚洲视频中文| 国产精品一区二区久激情瑜伽| 午夜精品一区二区在线观看| 麻豆av一区二区三区| 激情五月婷婷综合| 国产精品一区二区你懂得| 亚洲午夜伦理| 久久久久99精品国产片| 免费一级欧美片在线观看| 午夜免费电影一区在线观看| 亚洲免费中文字幕| 国产亚洲一区二区在线观看| 欧美肉体xxxx裸体137大胆| 国产日韩欧美麻豆| 亚洲理论在线观看| 午夜久久黄色| 欧美日韩免费高清| 国产综合色产在线精品| 国产一区二区日韩精品欧美精品| 国产精品久久久久一区二区三区共| 国产精品国产三级国产专区53| 亚洲免费在线视频一区 二区| 亚洲国产成人在线| 久久精品在线观看| 亚洲国产精品黑人久久久| 国产亚洲成av人在线观看导航| 亚洲欧洲综合另类| 亚洲欧美精品在线| 在线看日韩欧美| 亚洲国产欧美日韩另类综合| 亚洲理论在线| 一区二区久久久久久| 国产精品视频最多的网站| 国产精品一区二区在线观看| 久久夜色精品国产亚洲aⅴ| 在线观看一区欧美| 欧美视频一区二区在线观看| 国产日韩高清一区二区三区在线| 国产农村妇女精品一区二区| 极品少妇一区二区三区精品视频| 亚洲私人影院| 精品动漫av| 国产精品久久久久9999| 欧美日韩国产va另类| 亚洲人成在线播放网站岛国| 国产精品色午夜在线观看| 国内精品模特av私拍在线观看| 国产一区二区三区四区在线观看| 欧美freesex交免费视频|