日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS 覆盖率检测原理与增量代码测试覆盖率工具实现

發布時間:2024/7/5 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS 覆盖率检测原理与增量代码测试覆盖率工具实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

對蘋果開發者而言,由于平臺審核周期較長,客戶端代碼導致的線上問題影響時間往往比較久。如果在開發、測試階段能夠提前暴露問題,就有助于避免線上事故的發生。代碼覆蓋率檢測正是幫助開發、測試同學提前發現問題,保證代碼質量的好幫手。

對于開發者而言,代碼覆蓋率可以反饋兩方面信息:

  • 自測的充分程度。
  • 代碼設計的冗余程度。
  • 盡管代碼覆蓋率對代碼質量有著上述好處,但在 iOS 開發中卻使用的不多。我們調研了市場上常用的 iOS 覆蓋率檢測工具,這些工具主要存在以下四個問題:

  • 第三方工具有時生成的檢測報告文件會出錯甚至會失敗,開發者對覆蓋率生成原理不了解,遇到這類問題容易棄用工具。
  • 第三方工具每次展示全量的覆蓋率報告,會分散開發者的很多精力在未修改部分。而在絕大多數情況下,開發者的關注重點在本次新增和修改的部分。
  • Xcode 自帶的覆蓋率檢測只適用于單元測試場景,由于需求變更頻繁,業務團隊開發單元測試的成本很高
  • 已有工具很難和現有開發流程結合起來,需要額外進行測試,運行覆蓋率腳本才能獲取報告文件。
  • 為了解決上述問題,我們深入調研了覆蓋率報告的生成邏輯,并結合團隊的開發流程,開發了一套嵌入在代碼提交流程中、基于單次代碼提交(git commit)生成報告、對開發者透明的增量代碼測試覆蓋率工具。開發者只需要正常開發,通過模擬器測試開發代碼,commit 本次代碼(commit 和測試順序可交換),推送(git push)到遠端,就可以在本地看到這次提交代碼的詳細覆蓋率報告了。

    本文分為兩部分,先從介紹通用覆蓋率檢測的原理出發,讓讀者對覆蓋率的收集、解析有直觀的認識。之后介紹我們增量代碼測試覆蓋率工具的實現。

    覆蓋率檢測原理

    生成覆蓋率報告,首先需要在 Xcode 中配置編譯選項,編譯后會為每個可執行文件生成對應的 .gcno 文件;之后在代碼中調用覆蓋率分發函數,會生成對應的 .gcda 文件。

    其中,.gcno 包含了代碼計數器和源碼的映射關系, .gcda 記錄了每段代碼具體的執行次數。覆蓋率解析工具需要結合這兩個文件給出最后的檢測報表。接下來先看看 .gcno 的生成邏輯。

    .gcno

    利用 Clang 分別生成源文件的 AST 和 IR 文件,對比發現,AST 中不存在計數指令,而 IR 中存在用來記錄執行次數的代碼。搜索 LLVM 源碼可以找到覆蓋率映射關系生成源碼。覆蓋率映射關系生成源碼是 LLVM 的一個 Pass,(下文簡稱 GCOVPass)用來向 IR 中插入計數代碼并生成 .gcno 文件(關聯計數指令和源文件)。

    下面分別介紹IR插樁邏輯和 .gcno 文件結構。

    IR 插樁邏輯

    代碼行是否執行到,需要在運行中統計,這就需要對代碼本身做一些修改,LLVM 通過修改 IR 插入了計數代碼,因此我們不需要改動任何源文件,僅需在編譯階段增加編譯器選項,就能實現覆蓋率檢測了。

    從編譯器角度看,基本塊(Basic Block,下文簡稱 BB)是代碼執行的基本單元,LLVM 基于 BB 進行覆蓋率計數指令的插入,BB 的特點是:

  • 只有一個入口。
  • 只有一個出口。
  • 只要基本塊中第一條指令被執行,那么基本塊內所有指令都會順序執行一次
  • 覆蓋率計數指令的插入會進行兩次循環,外層循環遍歷編譯單元中的函數,內層循環遍歷函數的基本塊。函數遍歷僅用來向 .gcno 中寫入函數位置信息,這里不再贅述。

    一個函數中基本塊的插樁方法如下:

  • 統計所有 BB 的后繼數 n,創建和后繼數大小相同的數組 ctr[n]。
  • 以后繼數編號為序號將執行次數依次記錄在 ctr[i] 位置,對于多后繼情況根據條件判斷插入。
  • 舉個例子,下面是一段猜數字的游戲代碼,當玩家猜中了我們預設的數字10的時候會輸出Bingo,否則輸出You guessed wrong!。這段代碼的控制流程圖如圖1所示(猜數字游戲 )。

    - (void)guessNumberGame:(NSInteger)guessNumber {NSLog(@"Welcome to the game");if (guessNumber == 10) {NSLog(@"Bingo!");} else {NSLog(@"You guess is wrong!");} }

    這段代碼如果開啟了覆蓋率檢測,會生成一個長度為 6 的 64 位數組,對照插樁位置,方括號中標記了樁點序號,圖 1 中代碼前數字為所在行數。

    .gcno計數符號和文件位置關聯

    .gcno 是用來保存計數插樁位置和源文件之間關系的文件。GCOVPass 在通過兩層循環插入計數指令的同時,會將文件及 BB 的信息寫入 .gcno 文件。寫入步驟如下:

  • 創建 .gcno 文件,寫入 Magic number(oncg+version)。
  • 隨著函數遍歷寫入文件地址、函數名和函數在源文件中的起止行數(標記文件名,函數在源文件對應行數)。
  • 隨著 BB 遍歷,寫入 BB 編號、BB 起止范圍、BB 的后繼節點編號(標記基本塊跳轉關系)。
  • 寫入函數中BB對應行號信息(標注基本塊與源碼行數關系)。
  • 從上面的寫入步驟可以看出,.gcno 文件結構由四部分組成:

    • 文件結構
    • 函數結構
    • BB 結構
    • BB 行結構

    通過這四部分結構可以完全還原插樁代碼和源碼的關聯,我們以 BB 結構 / BB 行結構為例,給出結構圖 2 (a) BB 結構,(b) BB 行信息結構,在本章末尾覆蓋率解析部分,我們利用這個結構圖還原代碼執行次數(每行等高格代表 64bit):

    .gcda

    入口函數

    關于 .gcda 的生成邏輯,可參考覆蓋率數據分發源碼。這個文件中包含了 __gcov_flush() 函數,這個函數正是分發邏輯的入口。接下來看看 __gcov_flush() 如何生成 .gcda 文件。

    通過閱讀代碼和調試,我們發現在二進制代碼加載時,調用了 llvm_gcov_init(writeout_fn wfn, flush_fn ffn) 函數,傳入了 _llvm_gcov_writeout(寫 gcov 文件),_llvm_gcov_flush(gcov 節點分發)兩個函數,并且根據調用順序,分別建立了以文件為節點的鏈表結構。(flush_fn_node * ,writeout_fn_node *)

    __gcov_flush() 代碼如下所示,當我們手動調用 __gcov_flush()進行覆蓋率分發時,會遍歷flush_fn_node *這個鏈表(即遍歷所有文件節點),并調用分發函數_llvm_gcov_flush(curr->fn 正是__llvm_gcov_flush函數類型)。

    void __gcov_flush() {struct flush_fn_node *curr = flush_fn_head;while (curr) {curr->fn();curr = curr->next;} }

    具體的分發邏輯

    觀察__llvm_gcov_flush的 IR 代碼,可以看到:

  • __llvm_gcov_flush先調用了__llvm_gcov_writeout,來向 .gcda 寫入覆蓋率信息。
  • 最后將計數數組清零__llvm_gcov_ctr.xx。
  • 而 __llvm_gcov_writeout 邏輯為:

  • 生成對應源文件的 .gcda 文件,寫入 Magic number。
  • 循環執行
    • llvm_gcda_emit_function: 向 .gcda 文件寫入函數信息。
    • llvm_gcda_emit_arcs: 向 .gcda 文件寫入BB執行信息,如果已經存在 .gcda 文件,會和之前的執行次數進行合并。
  • 調用llvm_gcda_summary_info,寫入校驗信息。
  • 調用llvm_gcda_end_file,寫結束符。
  • 感興趣的同學可以自己生成 IR 文件查看更多細節,這里不再贅述。

    .gcda 的文件/函數結構和 .gcno 基本一致,這里不再贅述,統計插樁信息結構如圖 4 所示。定制化的輸出也可以通過修改上述函數完成。我們的增量代碼測試覆蓋率工具解決代碼 BB 結構變動后合并到已有 .gcda 文件不兼容的問題,也是修改上述函數實現的。

    覆蓋率解析

    在了解了如上所述 .gcno ,.gcda 生成邏輯與文件結構之后,我們以例 1 中的代碼為例,來闡述解析算法的實現。

    例 1 中基本塊 B0,B1 對應的 .gcno 文件結構如下圖所示,從圖中可以看出,BB 的主結構完全記錄了基本塊之間的跳轉關系。

    B0,B1 的行信息在 .gcno 中表示如下圖所示,B0 塊因為是入口塊,只有一行,對應行號可以從 B1 結構中獲取,而 B1 有兩行代碼,會依次把行號寫入 .gcno 文件。

    在輸入數字 100 的情況下,生成的 .gcda 文件如下:

    通過控制流程圖中節點出邊的執行次數可以計算出 BB 的執行次數,核心算法為計算這個 BB 的所有出邊的執行次數,不存在出邊的情況下計算所有入邊的執行次數(具體實現可以參考 gcov 工具源碼),對于 B0 來說,即看 index=0 的執行次數。而 B1 的執行次數即 index=1,2 的執行次數的和,對照上圖中 .gcda 文件可以推斷出,B0 的執行次數為 ctr[0]=1,B1 的執行次數是 ctr[1]+ctr[2]=1, B2 的執行次數是 ctr[3]=0,B4 的執行次數為 ctr[4]=1,B5 的執行次數為 ctr[5]=1。

    經過上述解析,最終生成的 HTML 如下圖所示(利用 lcov):

    以上是 Clang 生成覆蓋率信息和解析的過程,下面介紹美團到店餐飲 iOS 團隊基于以上原理做的增量代碼測試覆蓋率工具。

    增量代碼覆蓋率檢測原理

    方案權衡

    由于 gcov 工具(和前面的 .gcov 文件區分,gcov 是覆蓋率報告生成工具)生成的覆蓋率檢測報告可讀性不佳,如圖 9 所示。我們做的增量代碼測試覆蓋率工具是基于 lcov 的擴展,報告展示如上節末尾圖 8 所示。

    比 gcov 直接生成報告多了一步,lcov 的處理流程是將 .gcno 和 .gcda 文件解析成一個以 .info 結尾的中間文件(這個文件已經包含全部覆蓋率信息了),之后通過覆蓋率報告生成工具生成可讀性比較好的 HTML 報告。

    結合前兩章內容和覆蓋率報告生成步驟,覆蓋率生成流程如下圖所示??紤]到增量代碼覆蓋率檢測中代碼增量部分需要通過 Git 獲取,比較自然的想法是用 git diff 的信息去過濾覆蓋率的內容。根據過濾點的不同,存在以下兩套方案:

  • 通過 GCOVPass 過濾,只對修改的代碼進行插樁,每次修改后需重新插樁。
  • 通過 .info 過濾,一次性為所有代碼插樁,獲取全部覆蓋率信息,過濾覆蓋率信息。
  • 分析這兩個方案,第一個方案需要自定義 LLVM 的 Pass,進而會引入以下兩個問題:

    • 只能使用開源 Clang 進行編譯,不利于接入正常的開發流程。
    • 每次重新插樁會丟失之前的覆蓋率信息,多次運行只能得到最后一次的結果。

    而第二個方案相對更加輕量,只需要過濾中間格式文件,不僅可以解決我們在文章開頭提到的問題,也可以避免上述問題:

    • 可以很方便地加入到平常代碼的開發流程中,甚至對開發者透明。
    • 未修改文件的覆蓋率可以疊加(有修改的那些控制流程圖結構可能變化,無法疊加)。

    因此我們實際開發選定的過濾點是在 .info 。在選定了方案 2 之后,我們對中間文件 .info 進行了一系列調研,確定了文件基本格式(函數/代碼行覆蓋率對應的文件的表示),這里不再贅述,具體可以參考 .info 生成文檔。

    增量代碼測試覆蓋率工具的實現

    前一節是實現增量代碼覆蓋率檢測的基本方案選擇,為了更好地接入現有開發流程,我們做了以下幾方面的優化。

    降低使用成本

    在接入方面,接入增量代碼測試覆蓋率工具只需一次接入配置,同步到代碼倉庫后,團隊中成員無需配置即可使用,降低了接入成本。

    在使用方面,考慮到插樁在編譯時進行,對全部代碼進行插樁會很大程度降低編譯速度,我們通過解析 Podfile(iOS 開發中較為常用的包管理工具 CocoaPods 的依賴描述文件),只對 Podfile 中使用本地代碼的倉庫進行插樁(可配置指定倉庫),降低了團隊的開發成本。

    對開發者透明

    接入增量代碼測試覆蓋率工具后,開發者無需特殊操作,也不需要對工程做任何其他修改,正常的 git commit 代碼,git push 到遠端就會自動生成并上傳這次 commit 的覆蓋率信息了。

    為了做到這一點,我們在接入 Pod 的過程中,自動部署了 Git 的 pre-push 腳本。熟悉 Git 的同學知道,Git 的 hooks 是開發者的本地腳本,不會被納入版本控制,如何通過一次配置就讓這個倉庫的所有使用成員都能開啟,是做好這件事的一個難點。

    我們考慮到 Pod 本身會被納入版本控制,因此利用了 CocoaPods 的一個屬性 script_phase,增加了 Pod 編譯后腳本,來幫助我們把 pre-push 插入到本地倉庫。利用 script_phase 插入還帶來了另外一個好處,我們可以直接獲取到工程的緩存文件,也避免了 .gcno / .gcda 文件獲取的不確定性。整個流程如下:

    覆蓋率累計

    在實現了覆蓋率的過濾后,我們在實際開發中遇到了另外一個問題:修改分支/循環結構后生成的 .gcda 文件無法和之前的合并。 在這種情況下,__gcov_flush會直接返回,不再寫入 .gcda 文件了導致覆蓋率檢測失敗,這也是市面上已有工具的通用問題

    而這個問題在開發過程中很常見,比如我們給例 1 中的游戲增加一些提示,當輸入比預設數字大時,我們就提示出來,反之亦然。

    - (void)guessNumberGame:(NSInteger)guessNumber {NSInteger targetNumber = 10;NSLog(@"Welcome to the game");if (guessNumber == targetNumber) {NSLog(@"Bingo!");} else if (guessNumber > targetNumber) {NSLog(@"Input number is larger than the given target!");} else {NSLog(@"Input number is smaller than the given target!");} }

    這個問題困擾了我們很久,也推動了對覆蓋率檢測原理的調研。結合前面覆蓋率檢測的原理可以知道,不能合并的原因是生成的控制流程圖比原來多了兩條邊( .gcno 和舊的 .gcda 也不能匹配了),反映在 .gcda 上就是數組多了兩個數據。考慮到代碼變動后,原有的覆蓋率信息已經沒有意義了,當發生邊數不一致的時候,我們會刪除掉舊的 .gcda 文件,只保留最新 .gcda 文件(有變動情況下 .gcno 會重新生成)。如下圖所示:

    整體流程圖

    結合上述流程,我們的增量代碼測試覆蓋率工具的整體流程如圖 13 所示。

    開發者只需進行接入配置,再次運行時,工程中那些作為本地倉庫進行開發的代碼庫會被自動插樁,并在 .git 目錄插入 hooks 信息;當開發者使用模擬器進行需求自測時,插樁統計結果會被自動分發出去;在代碼被推到遠端前,會根據插樁統計結果,生成僅包含本次代碼修改的詳細增量代碼測試覆蓋率報告,以及向遠端推送覆蓋率信息;同時如果測試覆蓋率小于 80% 會強制拒絕提交(可配置關閉,百分比可自定義),保證只有經過充分自測的代碼才能提交到遠端。

    總結

    以上是我們在代碼開發質量方面做的一些積累和探索。通過對覆蓋率生成、解析邏輯的探究,我們揭開了覆蓋率檢測的神秘面紗。開發階段的增量代碼覆蓋率檢測,可以幫助開發者聚焦變動代碼的邏輯缺陷,從而更好地避免線上問題。

    作者介紹

    • 丁京,iOS 高級開發工程師。2015 年 2 月校招加入美團到店餐飲事業群,目前負責大眾點評 App 美食頻道的開發維護。
    • 王穎,iOS 開發工程師。2017 年 3 月校招加入美團到店餐飲事業群,目前參與大眾點評 App 美食頻道的開發維護。

    招聘信息

    到店餐飲技術部交易與信息技術中心,負責點評美食用戶端業務,服務于數以億計用戶,通過更好的榜單、真實的評價和完善的信息為用戶提供更好的決策支持,致力于提升用戶體驗;同時承載所有餐飲商戶端線上流量,為餐飲商戶提供多種營銷工具,提升餐飲商戶營銷效率,最終達到讓用戶“Eat Better、Live Better”的美好愿景!我們的團隊包含且不限于 Android、iOS、FE、Java、PHP 等技術方向,已完備覆蓋前后端技術棧。只要你來,就能點亮全棧開發技能樹。誠摯歡迎投遞簡歷至 wangkang@meituan.com。

    參考資料

    • 覆蓋率數據分發源碼
    • 覆蓋率映射關系生成源碼
    • 基本塊介紹
    • gcov 工具源碼
    • 覆蓋率報告生成工具
    • .info 生成文檔

    總結

    以上是生活随笔為你收集整理的iOS 覆盖率检测原理与增量代码测试覆盖率工具实现的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产中文字幕亚洲 | 高清不卡一区二区在线 | 精品欧美在线视频 | 国产成人精品aaa | 99热这里只有精品8 久久综合毛片 | 国产亲近乱来精品 | 日韩精品电影在线播放 | 欧美aaa视频 | 亚洲成人黄色在线 | 日本巨乳在线 | 黄色片网站大全 | 国产精品 中文字幕 亚洲 欧美 | 亚洲国产中文在线观看 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 色偷偷88欧美精品久久久 | 欧美精品在线观看免费 | 亚洲一级免费观看 | a成人v在线 | www.亚洲激情.com | 免费情缘| 特级免费毛片 | 最新中文字幕在线资源 | av在线看片 | 婷婷激情综合网 | 在线观看成人毛片 | 99久久久国产免费 | 欧美日韩国产综合一区二区 | 免费视频你懂的 | 精品国产一区二区三区久久影院 | 天堂素人在线 | 在线视频黄 | 亚洲精品欧美视频 | 欧美日本中文字幕 | 狠狠操综合网 | 九九欧美视频 | 成年人电影免费在线观看 | 黄av免费 | 99精品国产免费久久久久久下载 | 国产精品美女久久久久久久久久久 | 久久精品欧美一区 | 蜜臀av夜夜澡人人爽人人 | 国产成人免费在线 | 人人干人人添 | 欧美日韩电影在线播放 | www.色婷婷.com | 婷婷亚洲综合五月天小说 | 婷婷综合电影 | 国产视频中文字幕在线观看 | 五月婷婷婷婷婷 | 久久黄色美女 | 香蕉视频在线观看免费 | 99久久精品免费看国产麻豆 | 又黄又刺激 | 麻豆视频免费在线播放 | 国产精品九九九九九九 | 九九爱免费视频在线观看 | 国产视频黄| 久久久久久久久久久久久久av | 成人国产精品久久久 | 欧美精品九九99久久 | 日韩av免费在线看 | 中文字幕在线色 | 91亚洲精品国产 | 美女国产 | 日本激情视频中文字幕 | 亚洲视频网站在线观看 | 久久久久久综合 | 中国一级片在线播放 | 日韩视频免费看 | 在线欧美最极品的av | 天天色官网 | 国产成人精品一区二区三区福利 | 在线观看中文字幕亚洲 | 亚洲精品综合欧美二区变态 | av大全免费在线观看 | 91最新网址在线观看 | 日本特黄特色aaa大片免费 | 在线 视频 一区二区 | 久久免费黄色大片 | 国产精品久久久久久久久久久久久 | 激情五月婷婷 | 黄色a大片| av网站在线观看免费 | 国产精品第 | 在线观看成人一级片 | 亚洲乱码中文字幕综合 | 日韩中文字幕第一页 | 久久久久久美女 | 午夜久久久久久久久久久 | 久久综合免费视频影院 | 成人午夜免费剧场 | 久久久国产网站 | 久久久久久久久久久久久9999 | 在线一级片| av网在线观看| 久久影院午夜论 | 国产日本亚洲高清 | 黄色免费网站下载 | 91桃色在线观看视频 | 国产成人精品电影久久久 | 亚洲 欧美日韩 国产 中文 | 精品国产综合区久久久久久 | 国产精品美女久久久久久久久 | 日韩有码中文字幕在线 | 欧美精品一区在线发布 | 91精品国产综合久久久久久久 | 亚洲精品视频在线观看网站 | 日韩电影中文字幕在线观看 | 免费观看国产精品视频 | 999久久国精品免费观看网站 | 中文字幕欲求不满 | 日日夜夜狠狠干 | 婷婷久久一区二区三区 | 国产一区二区三区四区大秀 | 亚洲激精日韩激精欧美精品 | 国产精品午夜免费福利视频 | 正在播放国产一区 | 99亚洲精品视频 | 国产精品永久在线 | 在线免费黄色 | 日韩色视频在线观看 | 欧美精品一区二区在线观看 | 久久国产电影院 | 福利久久久 | 五月色丁香 | 日日爱网站 | 国产精品a久久久久 | 中文字幕av有码 | 久精品在线 | 少妇高潮流白浆在线观看 | 在线观看视频免费播放 | 亚洲国产中文字幕在线 | 日韩av看片 | 亚洲国产精品第一区二区 | 亚洲精品视频免费观看 | 日韩美女av在线 | 日韩电影中文字幕在线观看 | 日韩欧美在线视频一区二区 | 国产精品久久久久久久久搜平片 | v片在线看 | 国产亚洲精品久久久久久久久久 | 成人a免费 | 国产精品99免视看9 国产精品毛片一区视频 | 99久久久久久国产精品 | 国产精品1024 | 99精品免费 | 99爱国产精品 | 五月天,com| 韩国精品视频在线观看 | 日韩欧美高清一区二区 | 婷婷久月 | 97人人澡人人添人人爽超碰 | 天天干,天天射,天天操,天天摸 | 久久久久久国产精品免费 | 91毛片在线观看 | 国产一区二区三区视频在线 | 亚洲欧美999 | 国产精品视频 | 狠狠操天天操 | 亚洲精品高清视频在线观看 | 色视频网站在线观看一=区 a视频免费在线观看 | 天天爱天天射天天干天天 | 久久精品综合视频 | 五月天婷亚洲天综合网精品偷 | 美女久久99 | 日韩视频免费观看高清 | 免费亚洲成人 | 99久久精品国产毛片 | 中文字幕亚洲不卡 | 最近更新的中文字幕 | 摸阴视频 | 日韩大片在线看 | 国产精品免费观看在线 | 密桃av在线 | 国产又粗又猛又爽又黄的视频免费 | 91精品久久久久久久久久入口 | 亚洲精品美女久久17c | 97视频网址 | 成人国产综合 | av网站播放 | 操操操人人 | 999久久国精品免费观看网站 | 欧美日韩国产色综合一二三四 | 毛片播放网站 | 最新久久免费视频 | 久久久久久久影院 | 国产精品久久久久久爽爽爽 | 国产成人三级 | 亚洲精品视频在线观看免费视频 | 手机色站 | 亚洲黄色在线免费观看 | 天天天天色综合 | 天天操夜夜看 | 免费看片亚洲 | 97av在线 | 国产三级午夜理伦三级 | 91福利在线导航 | 亚洲精品乱码久久久久久久久久 | 国产亚洲精品女人久久久久久 | 色噜噜色噜噜 | 久草.com| 久久国产精品一国产精品 | 免费在线一区二区三区 | 久久观看免费视频 | 国产色a在线观看 | 黄色大片入口 | 亚洲国产操 | 国产一区欧美日韩 | 午夜婷婷综合 | 五月亚洲婷婷 | 国产福利在线 | 又黄又刺激视频 | 91大神免费在线观看 | 国产精品24小时在线观看 | 日韩精品视频在线免费观看 | 超碰97人 | 精品久久综合 | 亚洲黄色成人 | 欧美日韩一区二区在线观看 | 91精品小视频 | 久久新| 日韩av免费一区 | www.夜夜骑.com | 四虎成人免费观看 | 成人h在线| 日本黄色免费在线观看 | 五月婷婷欧美 | 日韩aa视频 | 91精品免费视频 | 日韩理论视频 | 一区二区三区在线免费 | 国产xx在线 | 天堂在线成人 | 中文超碰字幕 | 麻豆91在线看 | 五月婷综合 | 性色av免费看| 天天干夜夜 | 久久tv视频| 久久午夜视频 | 久久激五月天综合精品 | 国产成人一区二区啪在线观看 | 久久国产精品99国产精 | 人人爽人人av | 久草在线费播放视频 | 成人a视频片观看免费 | 福利区在线观看 | 精品欧美乱码久久久久久 | 国产一区二区久久精品 | 免费观看v片在线观看 | 国产精品99久久免费观看 | 81国产精品久久久久久久久久 | 亚洲小视频在线观看 | 日韩亚洲精品电影 | 精品国产一区二区三区四区在线观看 | 亚洲第一区在线观看 | 免费视频久久久久久久 | 黄在线免费看 | 最新日韩在线观看视频 | 欧美成人精品在线 | 国产精品中文字幕在线播放 | www.操.com | 97成人啪啪网 | 日韩在线观看你懂的 | av超碰在线 | 色诱亚洲精品久久久久久 | 久久久久黄 | 97在线播放 | 在线观看亚洲精品 | 国产一级片视频 | 日韩网站在线播放 | 69精品| 69久久夜色精品国产69 | 亚洲爱av | 99热 精品在线 | 精品国产成人av在线免 | 精品免费视频 | 久久久国产精品成人免费 | 国产一级精品在线观看 | 天天干天天操天天爱 | 97免费在线观看视频 | 日日夜夜天天综合 | 日韩精品aaa| av成人免费在线看 | 91精品黄色| 中文字幕中文字幕在线中文字幕三区 | 狠狠干天天色 | 亚洲欧洲中文日韩久久av乱码 | 五月婷婷在线观看 | 黄色视屏免费在线观看 | 不卡的av电影在线观看 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 成人亚洲免费 | 999成人精品 | 久草在线免费资源站 | 日韩黄色在线观看 | 午夜影院一级片 | 欧美va在线观看 | 国产一级一级国产 | 91视频亚洲 | 最近2019中文免费高清视频观看www99 | 亚洲va男人天堂 | a级国产毛片 | 欧美日韩高清一区二区三区 | 最新国产在线 | 国产专区欧美专区 | 色婷婷狠狠| av在线最新 | 成年人电影免费在线观看 | 激情视频一区二区三区 | 91视频成人免费 | av在线a | 国产精品久久久久久久久久久免费 | 蜜臀久久99静品久久久久久 | 蜜臀aⅴ国产精品久久久国产 | 免费av的网站 | 国产白浆视频 | 在线观看91久久久久久 | 99久久精品免费看国产免费软件 | 国产精品99久久久久久人免费 | 婷婷激情综合网 | 国产精品婷婷 | 国产精品刺激对白麻豆99 | 在线成人一区二区 | 91网站在线视频 | 国产一级高清 | 国产精品久久久久久久久久久久久 | www.色婷婷| 亚洲精品九九 | 国内毛片毛片 | 日韩免费成人 | 最近免费中文字幕大全高清10 | 国产综合久久 | 免费亚洲精品 | 免费av黄色| 成人国产精品免费 | 99这里只有久久精品视频 | 天天草天天操 | 四虎永久免费在线观看 | 国产一二三区在线观看 | 久久精品123| 天天操福利视频 | 婷婷五月在线视频 | 国产成人亚洲精品自产在线 | 国产精品麻豆免费版 | 成人香蕉视频 | 狠狠操狠狠干天天操 | 日韩com| 青草草在线视频 | 成人一区在线观看 | 91免费的视频在线播放 | av在线a | mm1313亚洲精品国产 | www日日 | 久久综合狠狠综合久久综合88 | 色99久久| 一级成人网 | 91麻豆免费版 | 色婷婷激情综合 | 天天操夜夜曰 | 国产黄在线免费观看 | 国内成人精品2018免费看 | 99久久婷婷国产综合精品 | 亚洲国产精品女人久久久 | 狠狠色狠狠综合久久 | 最新日韩精品 | 91av在线看 | 久久午夜影视 | 精品国产一区二区三区四区vr | 欧美电影在线观看 | 麻豆91在线观看 | www.97色.com | 成人午夜片av在线看 | av官网在线 | 欧美视频18 | 久久成熟| 国产精品高清在线观看 | 久久影视网 | 久久精品香蕉视频 | 婷婷丁香激情综合 | 国产精品久久久久久久久久不蜜月 | 丁五月婷婷 | 国产精品成人av在线 | 97精品国产97久久久久久粉红 | 中文字幕免费播放 | 激情视频91 | 免费av在线| 激情文学综合丁香 | 一级免费黄视频 | 天天干天天草 | 久草在线免费看视频 | 中文字幕在线观看三区 | 97超级碰碰碰碰久久久久 | 丁香婷婷综合色啪 | 国产亚洲精品久久久久久电影 | 亚洲精品大全 | 国产精品18久久久久久久 | 日韩欧美69 | 国产一级淫片在线观看 | 日韩精品一区二区在线观看 | 狠狠操导航 | 国产美女视频一区 | 日韩精品中文字幕av | 中文字幕在线影院 | 国产 精品 资源 | 最近中文国产在线视频 | 97成人在线视频 | www日| 日韩精品久久久久久久电影竹菊 | 国产成人亚洲在线电影 | 人人干天天干 | 欧美日韩天堂 | 日韩黄色一级电影 | 激情网在线视频 | 色天天 | 国产亚洲精品久久久久久无几年桃 | 99久久精品久久亚洲精品 | 亚洲黄色大片 | 久久久久久蜜桃一区二区 | 不卡精品视频 | 久视频在线 | 日韩免费三区 | 日韩av男人的天堂 | 久久激情电影 | 国产精品伦一区二区三区视频 | 成年一级片 | 国产在线观看你懂的 | 波多野结衣视频一区二区 | 久久经典国产 | 久久亚洲专区 | 51久久成人国产精品麻豆 | 日韩日韩日韩日韩 | 精品久久久免费视频 | www色片 | 中文字幕资源在线 | 97视频在线免费 | 玖玖精品在线 | 免费高清在线视频一区· | 欧美日韩一区二区视频在线观看 | 亚洲人在线 | 国产黄色网 | 新av在线 | 99久久99| 日韩一区二区三区视频在线 | 99久久久久久 | 国产精品精品国产婷婷这里av | 久草资源在线 | 日韩电影一区二区在线观看 | 成人午夜精品久久久久久久3d | 很黄很黄的网站免费的 | 精品欧美一区二区精品久久 | 黄色特一级片 | 色综合久久久久久久 | 亚洲日本va中文字幕 | 国产精品一区二区在线播放 | 久久精品国产久精国产 | 日韩电影一区二区三区在线观看 | 亚洲区色 | 欧美日韩伦理在线 | 亚在线播放中文视频 | 久久久精品网站 | 欧美日韩视频一区二区三区 | 国产精品video爽爽爽爽 | 亚洲欧美日韩国产 | 中文字幕一区二区三区久久蜜桃 | 免费色网站 | 超级碰碰碰免费视频 | 亚洲专区在线 | 激情视频国产 | 99理论片| 国产精品午夜免费福利视频 | 欧美色图视频一区 | 少妇精69xxtheporn | 69精品久久久 | 日本aaa在线观看 | 欧美日韩国产二区三区 | 亚洲欧美综合精品久久成人 | 国产亚洲日 | 激情网站网址 | 久久精品欧美视频 | 久久成人欧美 | 天天草av| 中文字幕在线播出 | 深爱五月激情网 | 国产精品久久久久久久99 | 九九免费在线观看 | 色欧美日韩| 国产免费区 | 在线视频国产区 | 欧美日高清视频 | 国产精品成人一区二区三区吃奶 | 成人a视频片观看免费 | 少妇搡bbbb搡bbb搡aa | 美女一区网站 | 国产成人久久精品77777综合 | 四虎在线视频免费观看 | 亚洲最大免费成人网 | 9热精品 | 日韩精品一区二区免费 | 色福利网 | 久久经典视频 | 日韩中文字幕免费视频 | 2019精品手机国产品在线 | 国产精品免费av | 亚洲精品在线观看的 | 日本不卡123区 | 999色视频| 日韩高清激情 | 97视频免费播放 | 亚洲天堂网在线视频观看 | 婷婷色中文 | 婷婷免费在线视频 | 亚洲成人午夜av | 中文字幕第一 | 日本深夜福利视频 | 亚洲人人爱 | 亚洲激情国产精品 | 丰满少妇对白在线偷拍 | 免费日韩一区二区 | 成人国产精品 | 日本黄色a级大片 | 亚洲特级毛片 | 午夜视频在线观看一区二区三区 | 亚洲成人免费在线 | 日本xxxxav| 麻豆91在线看 | 亚洲国产福利视频 | 99爱在线观看 | 日本精品中文字幕在线观看 | 精品国产日本 | 亚洲激色 | 免费成人av电影 | 狠狠色狠狠色综合日日92 | 欧美在线视频一区二区三区 | 亚洲精品视频偷拍 | 91av资源网| 91黄色免费看 | 免费看黄的| 97日日碰人人模人人澡分享吧 | 国产精品久久久久久一二三四五 | 日韩视频一 | 成人毛片在线视频 | 色五丁香 | 欧美成亚洲 | 亚洲欧美在线视频免费 | 亚洲精品国产成人 | 五月天综合网站 | 久久久久久久久久久免费 | 午夜.dj高清免费观看视频 | 国产一区在线观看视频 | 蜜桃视频精品 | 狠狠色网 | 9999免费视频| 人人添人人澡 | 久久久国产精品成人免费 | 一区二区三区日韩在线 | 精品专区一区二区 | 日日操网站 | 91在线播放视频 | 波多野结衣一区二区 | 91色综合| 中文视频在线 | 五月综合激情 | 日韩视频在线不卡 | 视频福利在线观看 | 91丨九色丨首页 | 久久国产精品99久久久久久进口 | 欧美日韩精品在线观看视频 | 最新成人在线 | 麻豆久久久久久久 | 手机看片国产日韩 | ww亚洲ww亚在线观看 | 日本精品一 | 婷婷色网址 | 国产福利在线不卡 | 激情欧美在线观看 | 国产永久免费高清在线观看视频 | 久久久精品国产免费观看一区二区 | 最近免费在线观看 | 国产精品永久在线 | 日韩三级久久 | 国产精品白浆 | 婷婷综合电影 | 欧美日韩色婷婷 | 国产亚洲精品久久久网站好莱 | 久草资源在线 | 成年人免费看的视频 | 国产不卡免费av | 在线播放 日韩专区 | av观看在线观看 | 日韩精品专区在线影院重磅 | 亚洲伦理电影在线 | 成年美女黄网站色大片免费看 | 在线免费中文字幕 | 欧美小视频在线 | 波多野结衣一区二区三区中文字幕 | 国产精品热视频 | 久精品视频免费观看2 | 国产精品手机看片 | 在线视频a | 黄色小说在线观看视频 | 91精品国产92久久久久 | 日韩色区 | 久青草影院 | 国产精品资源网 | 欧美成人精品三级在线观看播放 | 91亚洲永久精品 | 久久久国产一区 | v片在线播放 | 热久精品| 国产精品99久久久久久有的能看 | 夜夜爽www | 中文字幕一区二区三区乱码在线 | 日韩国产精品一区 | 探花视频免费在线观看 | 欧美久久久久久久久 | 婷色| 依人成人综合网 | 在线观看一级视频 | 欧美极品在线播放 | 成人黄色片免费看 | 久久综合网色—综合色88 | 欧美日韩不卡在线 | 国产精品成人自产拍在线观看 | 日本乱码在线 | 国产免费又粗又猛又爽 | 久久精品9 | 丁香激情网 | 西西人体4444www高清视频 | 四虎成人精品 | 久久久蜜桃一区二区 | 亚洲无吗视频在线 | 日日婷婷夜日日天干 | 在线免费观看视频一区二区三区 | 国产美女精品视频 | 久久婷婷精品视频 | 成人精品国产 | 97中文字幕| 五月婷婷电影网 | 久久成人资源 | 在线视频中文字幕一区 | 91视频 - v11av | 国产精品久久片 | 国产精品视频你懂的 | 97超在线| 91精品夜夜 | 成人免费共享视频 | 欧美日韩破处 | 91在线免费播放 | 69国产精品视频免费观看 | 日韩久久一区二区 | 色91在线| 亚洲午夜久久久久 | 中文字幕在线观看1 | 久久久久伊人 | 国产成人一区二区三区 | 日韩激情免费视频 | 成人精品99 | 中文字幕乱偷在线 | 国产精品嫩草影院9 | 永久精品视频 | 欧美久久九九 | 在线99视频 | 日日干美女 | 久久综合精品国产一区二区三区 | 黄色影院在线观看 | 91av在线看| 韩国精品一区二区三区六区色诱 | 激情丁香婷婷 | 婷婷六月中文字幕 | 超碰在线免费福利 | 日本公乱妇视频 | 日本高清免费中文字幕 | 亚洲婷久久 | 欧美aa级| 亚洲综合五月 | 美女网站一区 | 成人动漫精品一区二区 | 国产超碰在线观看 | 黄色亚洲精品 | 91九色成人| 亚洲精品网站 | 91视频专区| 玖玖在线看 | 久久国产精品视频 | 日韩电影一区二区在线 | 国产成人精品久久久久蜜臀 | 91理论片午午伦夜理片久久 | 中文字幕中文字幕 | 国产色拍拍拍拍在线精品 | 欧美一级免费在线 | av在线电影播放 | 激情丁香月| 国产精品视频一二三 | 国产精品精品久久久久久 | 婷婷丁香视频 | 91成年视频 | 91插插视频 | 日夜夜精品视频 | 欧美一区二区三区四区夜夜大片 | 久久精品欧美 | 亚洲一区美女视频在线观看免费 | 黄网站免费久久 | 日韩性久久 | 久久久久免费电影 | 五月婷婷一级片 | 在线观看日本高清mv视频 | 中文字幕在线日本 | 综合色在线观看 | 国产精品久久久久久久久久久免费看 | 国产精品久久久久久久久久久久冷 | 欧美一二三区在线播放 | 欧美大片在线观看一区 | 成人av午夜 | 久操久 | 久久人人添人人爽添人人88v | 乱子伦av | 永久免费av在线播放 | 麻豆成人小视频 | 人人干97| 99在线精品免费视频九九视 | 超碰97中文| 国产一线二线三线在线观看 | 天天操狠狠操夜夜操 | 欧美乱大交 | 亚洲欧美日韩一级 | 中文字幕视频一区 | 亚洲激情小视频 | 国产一级片一区二区三区 | 337p西西人体大胆瓣开下部 | 五月天丁香视频 | 亚洲精品国产精品国自产观看 | 国产午夜亚洲精品 | 亚洲欧美国产精品va在线观看 | 超碰精品在线观看 | 999日韩 | 91免费视频网站在线观看 | 狠狠天天| 日韩视频一 | 国产中文在线播放 | 九九精品视频在线观看 | 综合久久久久 | 亚洲精品午夜久久久 | 国产91在线 | 美洲 | 亚洲国产黄色片 | 在线导航av | 波多野结衣久久资源 | 美女网站黄在线观看 | 精品麻豆入口免费 | 久久爱影视i | 黄污视频大全 | www.国产精品 | 99精品视频网 | 婷婷色视频 | www中文在线 | 亚洲精品欧美精品 | 国产一区二区手机在线观看 | 97超碰中文 | 久久久精选 | 91精品资源 | 不卡精品 | 成年人电影免费看 | 国产成人精品av在线 | 一区二三国产 | 日韩av美女 | 一级片视频在线 | 狠狠久久 | 久久中文精品视频 | 免费a视频在线观看 | 中文字幕区 | 国产人成一区二区三区影院 | 人人玩人人爽 | 五月婷婷中文 | 91污视频在线观看 | 日韩网站在线观看 | 精品国产一区二区三区在线观看 | 少妇bbr搡bbb搡bbb | 国产免费a | 九九免费在线观看视频 | 国产成人一区二区三区 | 97天天干| 西西人体www444 | 午夜影院一级片 | 超碰在线人 | 午夜精品剧场 | 99久久婷婷国产综合精品 | 国产成人精品av在线观 | 成人免费中文字幕 | 又黄又爽又湿又无遮挡的在线视频 | 国产成人一区三区 | 久久久福利 | 99热最新网址 | 免费黄色网址网站 | 久久手机精品视频 | 日韩高清免费观看 | 在线色视频小说 | a黄色| 日日综合网 | 欧美日韩有码 | 国产剧在线观看片 | 免费视频18| 黄色免费在线视频 | 国产一级免费在线观看 | 欧美精品免费在线 | 亚洲精品久久久久中文字幕m男 | 中文字幕九九 | 国产精品九九九 | 久久久久女人精品毛片九一 | 午夜视频久久久 | 久久九九免费视频 | 精品国产伦一区二区三区观看说明 | www.狠狠| 国产成人精品女人久久久 | 日韩欧美一区二区三区在线 | 精品免费视频. | 日韩精品一区二区三区丰满 | 9999在线观看 | 中文字幕色网站 | 一区二区三区电影大全 | 99久久精品久久久久久动态片 | www.久久免费 | 欧美日韩一区三区 | 日韩激情久久 | 国产区在线视频 | 91av视频在线播放 | 国产一线二线三线性视频 | 日韩免费视频在线观看 | 国产精品一区二 | 久草香蕉在线视频 | 久久1电影院 | 国产精品第2页 | 国产精品毛片久久久久久久 | 亚洲日本韩国一区二区 | 午夜在线观看影院 | 国产精品都在这里 | 久久亚洲福利视频 | 808电影免费观看三年 | 99热在线精品观看 | 91精品国产综合久久福利不卡 | 99久久99久久精品免费 | 欧美人人爱| 一本一本久久a久久精品综合小说 | 国产精品美女久久久久久久 | 成人a毛片| 国产精品破处视频 | 波多野结衣在线观看一区二区三区 | 福利视频一区二区 | av大片网址 | 中文字幕一区二区三区在线视频 | 激情综合久久 | 在线有码中文字幕 | 97在线视频免费 | 正在播放日韩 | 91福利试看 | 人人草人人草 | 在线中文字幕网站 | 中日韩免费视频 | 香蕉久久久久 | www.亚洲精品| 天天玩天天操天天射 | 911国产 | 日韩欧美精品在线视频 | 色网站在线看 | 中文在线最新版天堂 | 最新在线你懂的 | 丁香花在线视频观看免费 | 97人人模人人爽人人喊网 | 久久香蕉一区 | 久久久亚洲成人 | www.日日日.com| 免费视频99 | 天天干天天操天天搞 | 亚洲午夜精品电影 | 亚洲精品国 | 欧美日本不卡 | 国产1区2区3区精品美女 | 中日韩欧美精彩视频 | a v在线观看 | 免费a v在线 | 国产1级视频 | 五月激情姐姐 | 久久99在线视频 | 久久精品—区二区三区 | 91九色视频在线 | 在线性视频日韩欧美 | 久久精品国产免费看久久精品 | 国产亚洲欧美一区 | 久久久鲁 | 在线观看自拍 | 狠狠色狠狠综合久久 | 亚洲精品美女在线观看播放 | 精品国产免费一区二区三区五区 | 色综合在 | 婷婷在线精品视频 | 亚洲一区二区三区在线看 | 久久久久久久久久久免费av | 草在线视频 | 日韩av一区二区三区四区 | 丝袜网站在线观看 | 国内视频一区二区 | www.com久久久 | 日日干日日色 | 亚洲精品乱码久久久久久按摩 | 麻花豆传媒mv在线观看网站 | 18久久久久| 国产精品欧美在线 | 二区在线播放 | 最近能播放的中文字幕 | 成人在线视频免费看 | 久久综合久色欧美综合狠狠 | 国产在线国偷精品产拍 | 国产色黄网站 | 国产精品久久久久久久久久ktv | 亚洲美女精品视频 | 久久精品99久久久久久 | 日日夜夜精品免费视频 | 在线观看国产区 | 久久国产一区二区三区 | 婷婷夜夜| 国产流白浆高潮在线观看 | 国产精品人成电影在线观看 | 国产韩国精品一区二区三区 | 国产亚洲精品久久久久久移动网络 | 日韩在线观看你懂的 | 国产字幕在线播放 | a特级毛片 | 日日夜夜天天久久 | 视频在线播放国产 | 奇米网444| 亚洲欧美日韩国产精品一区午夜 | 久久综合色一综合色88 | 亚洲成a人片77777kkkk1在线观看 | 婷香五月 | 亚洲天堂网视频 | 不卡视频在线看 | 青青河边草观看完整版高清 | 亚洲成a人片在线www | 偷拍福利视频一区二区三区 | 五月花激情 | 国产精品免费不卡 | 97国产精品一区二区 | 在线观看日韩精品 | 国产一及片 | 成人精品一区二区三区中文字幕 | 久久试看 | 免费在线日韩 | 免费视频a | 国产精品密入口果冻 | 日韩精品久久久久久中文字幕8 | 成人一级免费视频 | 亚洲一区二区麻豆 | 免费在线观看日韩欧美 | 亚洲永久精品国产 | 超碰在线成人 | 日韩欧美高清在线 | 日韩电影一区二区在线 | 欧美一级视频在线观看 | 99久视频 | 国产毛片久久久 | 精品亚洲午夜久久久久91 | 久久久91精品国产一区二区精品 | 国产伦精品一区二区三区无广告 | 人人搞人人爽 | 欧美精品一区二区免费 | 免费看成人a | 国产美女网站在线观看 | 久久久久免费精品国产 | 在线不卡中文字幕播放 | 99久久日韩精品免费热麻豆美女 | av三级av| 久久综合成人 | 色噜噜狠狠狠狠色综合 | 激情欧美丁香 | 精品国产一区二区三区不卡 | 色91在线视频 | av成人在线电影 | 91人人干| 一区二区三区观看 | 久久黄色影视 | 欧美精品久久久久久久久老牛影院 | 中文字幕一区二区三区在线观看 | 日韩动漫免费观看高清完整版在线观看 | 91精品天码美女少妇 | 国产精品综合久久久久久 | 九九热免费视频在线观看 | 亚洲电影网站 | 久久夜靖品 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 精品国产一二三 | 九九免费视频 | 久久精品国产精品 | 日韩免费一级a毛片在线播放一级 | 天天爽天天碰狠狠添 | 欧美日韩国产一区二区在线观看 | www.99久久.com| 亚洲精品在线免费观看视频 | 91在线视频免费 | 97视频免费观看2区 亚洲视屏 |