《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 面向集控嵌入式實時軟件的單元測試方法研究
面向集控嵌入式實時軟件的單元測試方法研究
2014年電子技術應用第12期
裴承艷
(中國船舶重工集團公司第七一〇研究所,湖北 宜昌443003)
摘要: 針對集控嵌入式實時軟件的組成和特點,搭建了適合該軟件的仿真單元測試平臺,并詳細介紹了基于Testbed對該軟件進行單元測試的過程。依據靜態分析輸出的質量度量模型值定量地評價了軟件內在源碼的質量,并基于圈復雜度度量值提出了一種優先級的動態分析測試策略,用監控到的控制流信息來分析程序的覆蓋率,從而確保單元測試的充分性和有效性,提高測試效率,保證軟件的質量。
中圖分類號: TP311.5
文獻標識碼: A
文章編號: 0258-7998(2014)12-0125-04
Research on unit test methods of centralized control for embedded real-time software
Pei Chengyan
The 710 Research Institute,CSIC,Yichang 443003,China
Abstract: According to the characteristics and constitution of control console embedded real-time system software, a kind of simulating unit test platform about this system is built,and then the process of conducting unit test with testbed is detailed.Based on the value of quality output model of static analysis,we quantitatively evaluate the internal quality of the source code. Meanwhile, priority-based dynamic analysis testing strategy is properly proposed on the foundation of cyclomatic complexity.Monitored control flow information is used to analyze the coverage of programs, which is able to ensure adequacy and validity of unit test, and can improve test efficiency as well as software quality.
Key words : embedded real-time software;Testbed;static analysis;dynamic analysis;coverage

0 引言

  隨著信息化軍事技術的不斷深入,嵌入式實時軟件已在工業控制、電子信息以及武器裝備等系統中發揮著越來越重要的作用;同時隨著嵌入式軟件的規模和復雜性的不斷提高,作為有效保證和驗證軟件質量的重要環節和依據,軟件測試已逐漸成為軟件研制成本最高的階段[1]。如何采用有效的嵌入式軟件工程化測試方法提高嵌入式軟件的質量和可靠性以及增強軟件組織自身的軟件測試能力具有極其重要的意義。

  錯誤越早發現,項目付出的代價就越少,單元測試作為軟件項目中最早介入的測試活動[2],易于發現程序的錯誤和缺陷,也易于實現代碼測試的完全覆蓋,因此單元測試的好壞對于軟件質量的保證起著非常關鍵的作用。然而由于嵌入式軟件的特殊性,如實時性強、與硬件緊密相關、訪問硬件麻煩,在開發環境下模擬整個系統存在困難性,這使得測試一直是個難點,特別是單元測試,由于項目周期不允許,一些嵌入式軟件沒有進行單元測試或單元測試不徹底;有些嵌入式軟件代碼具有較高的耦合性,使單元測試難以進行;測試人員對于嵌入式軟件單元測試過于依賴自動化測試工具,使測試效果不能令人滿意,測試不規范,效率低[3],且無法確保嵌入式軟件單元測試的充分性和有效性。

  針對上述問題,本文以集控嵌入式軟件為例,重點研究了基于Testbed軟件測試工具的靜態分析和動態測試方法,提出了一種較為完整和可操作的單元測試解決方法。研究分析了靜態分析輸出的度量模型值對嵌入式軟件的影響,并根據度量值提出了提高軟件代碼質量的措施;介紹了基于Tornado編譯環境的動態測試過程,并基于圈復雜度[4]提出了一種優先級的動態分析測試策略,以確保單元測試的充分性和有效性,提高軟件測試方法的效率和規范性,確保軟件的質量。

1 被測系統概述

  被測系統集控軟件是一個實時嵌入式系統,運行在集控模塊控制單元內,控制單元由底板、CPU板和AD/DA板組成。板卡之間采用CPCI總線,通過CPU板上的兩路LAN接口與通信集控柜連接,完成與操舵臺、數采站、交流主配電柜、遙控操縱臺、綜控柜和顯控臺的網絡信息交換。CPU板上的一路RS422A接口與通信集控柜中的導航定位分機連接,完成導航定位信息的讀取;另一路RS422A接口與集控臺內手控模塊連接,完成指令的轉發和手控狀態的傳輸??刂茊卧械腁D/DA板與左/右主機齒輪箱執行器連接,完成速度調整。軟件的總體結構圖如圖1所示。

001.jpg

  集控軟件使用C++/C語言編寫,程序基于模塊化思想設計,在實時多任務操作系統VxWorks上實現,基于Tornado的開發環境。按功能劃分模塊,采用多任務下的同步機制,通過消息實現各個模塊之間的通信。

  在該軟件的單元測試中,采用靜態分析和動態測試相結合的方法來評估和完成軟件的充分性和測試的完備程度。

2 集控軟件測試關鍵步驟及實現

  2.1 基于Tornado的仿真單元測試環境搭建

  集控軟件單元測試工具采用的是Testbed,它是英國LDRA公司開發的一種軟件代碼測試及分析工具,主要用在軟件測試和軟件維護階段以便提高軟件產品的質量,該工具可提供編碼規則檢查、軟件度量分析、數據流分析、覆蓋率分析等功能[5]。在Testbed /Tbrun工具下配置集控嵌入式軟件的仿真單元測試環境,需滿足在Tornado2.2集成開發環境下成功編譯、執行測試驅動程序,具體步驟如下:

  (1)借助Tbconfig工具完成Tornado2.2編譯環境的配置,并指定該開發環境的和測試工具的路徑;

  (2)配置生成被測函數的驅動模板C:\LDRA_Toolsuite\

  Vxworks 路徑下的vxworks_Cshlayout_663.dat,該模板用于生成被測函數的測試驅動;

  (3)配置函數的插樁模板C:\Testbed760\Vxworks\Vxworks_

  cinstr.dat,插樁模板的作用是對被測函數的入口、出口、控制流進行插樁,在單元測試結束時,用于分析單元測試的覆蓋率,以確定測試用例是否滿足覆蓋率需求。

  2.2 集控實時嵌入式軟件的靜態分析

  靜態分析是通過工具在非運行狀態下對程序結構、數據結構、代碼質量的分析,提取代碼大量的靜態內部信息,為代碼審查以及動態測試提供輔助參考的信息[5]。下面以集控軟件的網絡通信模塊UdpSocket.cpp為例,對其靜態測試過程和結果進行詳細說明。

  2.2.1 靜態分析過程

002.jpg

003.jpg

  運行測試工具Testbed,打開UdpSocket.cpp源程序,選擇MISRA編碼規則,然后在Select Analysis窗口下選擇分析菜單對該文件進行靜態分析,通過該項分析,為測試人員提供了該文件中各函數之間的調用關系模型,圖2幫助測試人員簡單明了地以顏色區分來顯示模塊間的調用關系,紅色為自定義函數,綠色為系統函數。圖3是UdpSocket.cpp中各子函數通過度量的比例分析數,可得出總函數的度量為91%,清晰性為 93%,可維護性為91%,測試性為100%。圖4是UdpSocket.cpp基于MaCabe的軟件度量模型對程序分析的Kiviat圖,每一軸代表一類度量元,被測試源代碼以扇形的結構顯示出來,綠色表示符合質量標準。圖5是UdpSocket.cpp基本節點數和基本圈復雜度數據分析柱狀圖。通過這些圖可以幫助測試人員了解代碼的靜態內部信息,發現缺陷。

  2.2.2 靜態測試分析

  靜態分析的結果能夠幫助測試人員從代碼內部結構信息中開展工作,幫助質量管理人員從軟件質量度量中進行質量監督[5]。通過對軟件靜態分析的總結,可以從降低代碼的圈復雜度和提高代碼的注釋率兩方面提高軟件代碼質量。

  (1)降低代碼的圈復雜度

  圈復雜度是應用最廣泛的靜態度量之一,用來衡量一個函數判定結構的復雜程度,圈復雜度公式V(G)=P+1,P是代碼中判定結點的數量[6]。程序的可能存在錯誤數和圈復雜度有著很大的相關性,圈復雜度越大代表程序代碼的質量低并且難以維護和測試[6]。

  當代碼中遇到判定條件比較復雜時,可以將判定條件的表達式提前計算存儲在一個變量中,簡化判斷條件,減低代碼的圈復雜度,減少bug數。例如UdpSocket.cpp文件中有判定語句:

  If ((UNIT)(szTemp[0] == 0xA5 && (UNIT)(szTemp[1]

  == 0xA5) && (UNIT)(szTemp[2] == 0xA3))

  {

  }

  該判定條件的判定結點為3,圈復雜度即為4,將代碼優化之后如下:

  int num;

  num=(UNIT)(szTemp[0] == 0xA5 && (UNIT)(szTemp[1] == 0xA5) && (UNIT)(szTemp[2] == 0xA3);

  if (num)

  {

  }

  優化后的代碼判定結點為1,圈復雜度為2。

 ?。?)提高代碼的注釋率

  提高代碼的注釋率可增加代碼的可讀性和可維護性,為每個代碼塊添加注釋,并在每一層使用統一的注釋方法和風格,包括每個類和每個方法。

  2.3 集控實時嵌入式軟件的動態測試

  2.3.1 測試用例設計

  (1)測試用例數據的合理設計

  測試用例的設計是為了提高測試代碼的覆蓋率,動態測試中最重要的過程是如何設計測試用例,著重測試數據的輸入設計。對于一般標準類型的輸入變量(如int、char、float、double等)并沒有多大問題,當變量是數組、指針、結構體、VxWorks中的FUNCPTR、LOCAL等特殊類型時,數據輸入就需要特別注意。當數組的下標值很大時,進行手工輸入是不可能的,可以在TBrun環境中有選擇地對需要的變量進行賦值或者在插樁后的代碼中插入數組的初始化語句對整個數組進行賦值;當變量是指針時,由于不能給指針直接賦地址,輸入指針采用映射的方法將指針變量映射成相應的自定義變量作為指針的輸入值;結構體變量賦值不正確時很容易導致測試用例跑飛掉,需要從源代碼找到該變量創建的賦值函數,將該函數作為變量的輸入值,必要時還需要添加函數的參數,例如本文需測試的文件CUdpSocket.cpp中有消息隊列數據結構體:

  MSG_Q_ID  msgId//接收消息的消息隊列ID號

  其中MSG_Q_ID屬于VxWorks的系統調用,在文件中有對msgId的賦值語句:

  msgId=msgQGreate()//創建消息隊列

  在創建測試用例中對類型是MSG_Q_ID的變量輸入值應設為msgQGreate()。

 ?。?)通過盡量少的測試用例達到盡量高的代碼覆蓋率。測試用例是以程序的內部結構為基礎來設計的,需要盡可能多地覆蓋程序的內部邏輯結構。

  2.3.2 測試驅動的工作原理

  動態測試過程中無法及時提供測試運行所需的真正目標機及其操作系統,必須正確配置開啟仿真模擬器并將其作為虛擬目標機,將Testbed經過編譯環境鏈接后生成的測試驅動程序下載到仿真模擬器中運行。每執行一個測試用例需要重新編譯和執行,函數的驅動程序是由Testbed/Tbrun根據驅動模板自動生成的,驅動程序是一個基于控制臺的程序,主要完成動態測試環境初始化,當調用測試用例時要執行函數ldra_qq_execute_test_

  case_1(),該函數負責被測函數入口參數的初始化,然后再調用被測函數完成整個測試的過程。

  2.3.3 采用圈復雜度優先級的動態測試策略

  有效的測試策略可使軟件測試的效率最大化,從而滿足測試的各項要求并降低測試成本。由于基于Tornado開發環境的集控軟件代碼規模較大,功能模塊較多,結構復雜,因此為了提高測試效率,制定了一種基于優先級的動態測試策略,具體步驟如下:

 ?。?)通過Testbed測試工具對每個文件靜態分析的結果從基本節點數和基本圈復雜度數據來分析柱狀圖,得到每一個文件中被測函數的圈復雜度和節點數。

  (2)按圈復雜度進行高低排序,對圈復雜度高且重要的函數進行重點測試。圖5可看出UdpSocket.cpp文件中SocketSndData()函數的圈復雜度最高,因此首先對該函數進行重點測試。

 ?。?)編譯鏈接通過之后,執行設計好的測試用例,用監控到的控制流信息來分析程序的覆蓋率,依據分析結果不斷補充和優化測試用例。根據各模塊的語句和分支覆蓋率、已執行語句、執行路徑以及未執行的語句,判定覆蓋率并衡量是否完成動態測試活動。圖6為UdpSocket.cpp文件中SocketSndData()函數的動態測試圖,圖右上角可以得到該函數的語句分支覆蓋率都為100%,圖左下角是設計并執行通過的測試用例,右下角是用例數據的設計輸入。

005.jpg

3 結論

 ?。?)圖形界面框架類單元測試問題:由于Testbed工具自動生成的測試驅動入口是main()函數,類似于控制臺程序,當遇到圖形框架環境時無法完成測試??蚣茴悾ɡ鏜FC,NI)應用程序的執行是以事件驅動面向對象的結構,定義了很多的API,應用程序可以直接調用。兩種結構是完全不同的,當直接使用測試工具生成測試驅動時,由于缺少庫文件,編譯不能通過,無法執行測試用例進行測試。

 ?。?)被測單元代碼的必要修改:雖然大多數編譯環境和Testbed工具關聯在一起,但有一些代碼單元還是不能直接執行測試,代碼在動態測試之前必須做適當的修改,比如一些中斷函數、死循環while()以及Forever等。

 ?。?)測試人員不能過于依賴測試工具:自動化靜態分析存在一定的機械性,測試人員需逐項進行分析確認出真正的問題所在,有效的測試不能簡單的依靠測試工具。

參考文獻

  [1] 丁旭,崔吉崗,劉春裕.軍用嵌入式軟件結構覆蓋測試技術[J].指揮控制與仿真,2008,30(3):120-122.

  [2] 李金麒,徐建平.嵌入式系統軟件可靠性設計與測試方法[J].計算機系統應用,2013,22(1):74-78.

  [3] 肖波.通訊系統嵌入式平臺下的單元測試技術研究[D].上海:華東師范大學,2005.

  [4] 孫夢磷,宋曉秋,巢翌.軟件程序代碼質量度量技術研究[J].計算機工程與設計,2006,27(2):325-327.

  [5] 張大林.基于缺陷關聯的靜態分析優化[J].軟件學報,2014,25(2):386-399.

  [6] 陽凡林,康志忠.基于多維度覆蓋率的軟件測試動態評價方法[J].軟件學報,2008,21(9):2135-2146.


此內容為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>
          国产日韩欧美不卡| 亚洲激情在线视频| 欧美一区二区高清| 亚洲午夜av| 国内精品久久久| 免费观看一区| 夜夜精品视频| 久久亚洲精品伦理| 亚洲永久免费视频| 久久婷婷国产综合精品青草| 国产区二精品视| 日韩一级欧洲| 久久久久国产精品www| 亚洲视频在线视频| 亚洲欧美另类久久久精品2019| 亚洲国产人成综合网站| 国产亚洲综合在线| 欧美 亚欧 日韩视频在线| 蜜臀久久久99精品久久久久久| 久久精品一区二区三区四区| 欧美性色aⅴ视频一区日韩精品| 午夜精品视频在线观看| 国产日本亚洲高清| 欧美视频一区二| 欧美激情国产高清| 在线不卡中文字幕播放| 亚洲精品欧洲| 欧美日韩中文在线| 亚洲一区二区免费视频| 在线观看亚洲| 伊人精品视频| 亚洲欧美日韩在线播放| 欧美精品在线观看91| 狠狠色丁香婷综合久久| 精品999网站| 亚洲欧美国产高清| 亚洲视频在线观看视频| 国产日韩欧美日韩| 亚洲精品美女久久久久| 日韩小视频在线观看| 日韩亚洲视频| 亚洲男女毛片无遮挡| 国产精品乱子乱xxxx| 久久综合电影一区| 国产在线精品自拍| 亚洲欧美日本伦理| 小处雏高清一区二区三区| 永久免费精品影视网站| 亚洲午夜免费视频| 91久久久在线| 欧美成人r级一区二区三区| 99国产精品国产精品毛片| 欧美一区二区三区在线视频| 亚洲一区二区在线看| 欧美精品九九| 欧美在线视频一区二区三区| 亚洲电影视频在线| 欧美中文字幕| 亚洲欧美日韩视频二区| 国产无一区二区| 久久久精品国产99久久精品芒果| 欧美裸体一区二区三区| 午夜国产欧美理论在线播放| 亚洲欧美制服中文字幕| 欧美日韩激情小视频| 久久精品一区二区三区不卡牛牛| 久久国产精品72免费观看| av成人激情| 亚洲自拍偷拍色片视频| 亚洲天堂成人在线观看| 国内不卡一区二区三区| 国产九九视频一区二区三区| 亚洲欧美激情一区二区| 欧美国产欧美亚州国产日韩mv天天看完整| 久久久久久婷| 99re6这里只有精品视频在线观看| 亚洲永久在线| 国产精品久久一区二区三区| 欧美亚洲一区二区在线| 在线视频免费在线观看一区二区| 国产一区美女| 亚洲观看高清完整版在线观看| 永久555www成人免费| 亚洲人成网站影音先锋播放| 一区二区三区回区在观看免费视频| 国产精品免费一区豆花| 国户精品久久久久久久久久久不卡| 欧美精品福利| 亚洲国产影院| 欧美在线观看天堂一区二区三区| 黄色成人小视频| 亚洲国产欧美一区二区三区久久| 欧美一区二区性| 欧美成人网在线| 91久久久久久国产精品| 在线亚洲激情| 国产精品欧美精品| 亚洲香蕉网站| 国产精品一区二区三区久久久| 一本色道久久综合狠狠躁的推荐| 欧美视频精品在线| 欧美激情一区二区三区蜜桃视频| 一区二区三区免费在线观看| 久久精品麻豆| 91久久精品一区二区三区| 欧美国产一区在线| 欧美日韩午夜剧场| 韩国av一区二区三区四区| 亚洲美女在线国产| 亚洲国产精品一区二区第一页| 亚洲专区一二三| 午夜一区二区三视频在线观看| 午夜精品福利一区二区蜜股av| 亚洲一级黄色av| 狠狠干狠狠久久| 久久人人精品| 久久人人超碰| 欧美另类综合| 亚洲开发第一视频在线播放| 亚洲裸体俱乐部裸体舞表演av| 中文精品视频| 国产精品久久久久国产精品日日| 午夜精品三级视频福利| 99精品福利视频| 欧美激情成人在线| 国产视频一区二区在线观看| 亚洲电影免费观看高清完整版在线| 欧美日韩一区二区视频在线| 夜夜嗨一区二区三区| 在线精品在线| 国产精品乱码一区二区三区| 国产精品久久国产精品99gif| 小处雏高清一区二区三区| 久久免费偷拍视频| 国产亚洲成av人片在线观看桃| 国产精品黄色在线观看| 亚洲一区视频| 麻豆国产va免费精品高清在线| 欧美久久久久中文字幕| 亚洲国产一区二区三区高清| 亚洲图片欧美一区| 国产欧美日韩不卡| 亚洲欧美日韩国产中文| 亚洲美女黄色片| 欧美午夜宅男影院| 在线日本欧美| 亚洲综合欧美| 99riav1国产精品视频| 久久狠狠婷婷| 亚洲欧美偷拍卡通变态| 国产麻豆9l精品三级站| 欧美成年人网| 国产精品午夜春色av| 蜜臀a∨国产成人精品| 国产一区91| 午夜欧美理论片| 女人香蕉久久**毛片精品| 一本色道久久| 久久综合久色欧美综合狠狠| 国产精品三级久久久久久电影| 极品少妇一区二区三区精品视频| 欧美日韩二区三区| 国产精品欧美风情| 欧美日本在线视频| 欧美一级视频免费在线观看| 国产欧美亚洲一区| 欧美日韩国产一区二区| 欧美激情中文字幕在线| 亚洲小说春色综合另类电影| 欧美日韩国产一区二区| 欧美高清在线视频| 欧美激情日韩| 欧美午夜精品理论片a级大开眼界| 欧美成人精品一区二区三区| 欧美日韩天堂| 中日韩高清电影网| 亚洲精品一区二区三区樱花| 久久精品av麻豆的观看方式| 在线亚洲国产精品网站| 欧美日本精品在线| 国产精品狼人久久影院观看方式| 一本大道久久a久久精二百| 一区二区在线视频| 亚洲最快最全在线视频| 欧美激情精品久久久久久免费印度| 欧美国产第二页| 国产精品日韩精品欧美在线| 久久精品日产第一区二区三区| 黄色日韩网站| 日韩视频中文| 欧美视频精品在线观看| 国产嫩草影院久久久久| 国产一区自拍视频| 欧美大片一区| 欧美国产日韩xxxxx| 夜夜精品视频| 国产精品有限公司| 欧美在线观看网站| 久久影院午夜论| 米奇777在线欧美播放| 欧美一区二区三区的| 欧美日韩精品一区| 国内精品美女av在线播放| 欧美电影在线观看完整版| 亚洲巨乳在线| 亚洲社区在线观看| 午夜精品福利视频| 99国内精品| 国户精品久久久久久久久久久不卡| 亚洲视频图片小说| 欧美精品97| 国产无一区二区| 欧美高潮视频| 久久久免费观看视频| 欧美午夜视频网站| 亚洲第一在线综合网站| 亚洲精品中文字| 免费人成网站在线观看欧美高清| 亚洲欧美在线高清| 夜夜嗨av一区二区三区网站四季av| 伊人久久亚洲美女图片| 国产一区二区三区在线观看视频| 久久综合给合久久狠狠狠97色69| 一本色道久久综合狠狠躁的推荐| 亚洲第一区在线观看| 亚洲伦理久久| av成人天堂| 国产精品自在在线| 亚洲午夜一二三区视频| 欧美日韩综合视频| 美女精品国产| 欧美日韩在线观看视频| 国产自产2019最新不卡| 亚洲免费黄色| 欧美丝袜第一区| 亚洲视频精品| 国产精品福利久久久| 欧美日韩精品一区二区三区| 国产视频精品xxxx| 欧美日韩久久精品| 亚洲日本欧美日韩高观看| 国色天香一区二区| 欧美肥婆在线| 国产精品自拍三区| 欧美日韩亚洲综合| 亚洲婷婷综合色高清在线| 国产精品一卡二卡| 亚洲六月丁香色婷婷综合久久| 美女网站在线免费欧美精品| 国产一区二区三区四区| 国产一区视频在线看| 国产精品久久久久久久午夜片| 亚洲一区三区在线观看| 欧美激情乱人伦| 国产精品一区二区三区四区五区| 国产精品丝袜91| 久久av最新网址| 欧美精品久久久久久久久久| 国产精品亚洲一区| 亚洲国产日韩欧美综合久久| 一区二区三区www| 校园春色国产精品| 正在播放欧美视频| 国产一区二区三区的电影| 亚洲深夜福利网站| 欧美日本国产| 久久人人97超碰精品888| 免费看的黄色欧美网站| 亚洲黄色免费| 亚洲精品人人| 国产精品青草久久久久福利99| 亚洲成在线观看| 欧美精品免费看| 亚洲永久视频| 亚洲高清视频一区二区| 性欧美8khd高清极品| 欧美日韩成人免费| 欧美一区二区三区四区在线观看地址| 欧美日韩亚洲视频| 欧美成年网站| 国产精品久久久久影院色老大| 亚洲电影下载| 亚洲精品乱码视频| 国产精品国码视频| 免费欧美网站| 国产日韩精品在线观看| 亚洲欧洲另类国产综合| 在线中文字幕日韩| 99国内精品久久久久久久软件| 免费不卡亚洲欧美| 国产视频亚洲| 日韩亚洲国产欧美| 亚洲欧美在线播放| 欧美女激情福利| 久久国产日本精品| 一区二区三区黄色| 久久亚洲综合| 欧美日韩一区二区精品| 韩国av一区二区三区在线观看| 日韩亚洲一区在线播放| 久久久久久亚洲精品杨幂换脸| 欧美伦理91i| 久久综合色婷婷| 欧美麻豆久久久久久中文| 日韩视频精品在线观看| 欧美成人国产va精品日本一级| 亚洲欧美日韩国产综合| 亚洲综合色视频| 亚洲一区二区三区四区五区午夜| 欧美刺激午夜性久久久久久久| 在线成人av| 欧美久色视频| 国产精品第2页| 国产亚洲视频在线观看| 欧美国产精品v| 亚洲精品小视频在线观看| 久久久免费观看视频| 欧美精品一区二区视频| 欧美国产精品久久| 亚洲美女视频| 亚洲女性裸体视频| 一区二区三区四区国产| 亚洲小说欧美另类社区| 欧美精品成人一区二区在线观看| 久久亚洲私人国产精品va媚药| 中文一区二区在线观看| 国产精品男人爽免费视频1| 亚洲成人原创|