精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Fastbot 開源版技術(shù)原理與架構(gòu)

移動開發(fā)
下面將逐一介紹工具的工作流程、核心概念、算法原理、設(shè)計實現(xiàn)以及常用配置,深入了解其在提升移動應(yīng)用測試效率的能力。

問題背景

近年來,移動應(yīng)用程序的數(shù)量呈現(xiàn)爆炸性增長,隨之而來的是用戶對應(yīng)用程序質(zhì)量的高要求。確保應(yīng)用程序的質(zhì)量對于維護(hù)用戶忠誠度和業(yè)務(wù)成功至關(guān)重要。然而傳統(tǒng)的人工測試方法存在一些挑戰(zhàn),包括耗費大量時間和資源、可擴(kuò)展性和可維護(hù)性的限制等,因此移動應(yīng)用的自動化測試工具應(yīng)運而生。隨著人工智能時代的到來,軟件測試領(lǐng)域不斷向智能化發(fā)展,其中自動測試生成的能力一直是學(xué)術(shù)和工業(yè)界共同關(guān)注的研究熱點,依靠自動生成測試能較大程度減少測試腳本的編寫與維護(hù)工作量。

在實際應(yīng)用中,工業(yè)級應(yīng)用程序經(jīng)常需要進(jìn)行更新以適應(yīng)不斷變化的用戶需求,例如,工業(yè)廠商一般每周都會發(fā)布一個新的核心應(yīng)用版本,然而采用現(xiàn)有的自動化測試工具在這種情況下效果一般,它們僅僅是簡單地在移動應(yīng)用上重新運行一次測試,缺乏對人類經(jīng)驗和知識的運用。Fastbot正是一款結(jié)合了強(qiáng)化學(xué)習(xí)和基于模型決策算法的自動化安卓測試工具,它由字節(jié)跳動軟件工程實驗室(https://se-research.bytedance.com/)團(tuán)隊提出,旨在利用強(qiáng)化學(xué)習(xí)的技術(shù),通過學(xué)習(xí)和推理從之前的測試運行中獲得知識,從而達(dá)到更快更高效的測試效果。此外,F(xiàn)astbot還提供了個性化的專家系統(tǒng),用戶可以自定義各種配置去滿足不同的測試場景和需求。

下面將逐一介紹工具的工作流程、核心概念、算法原理、設(shè)計實現(xiàn)以及常用配置,深入了解其在提升移動應(yīng)用測試效率的能力。

工作流程

圖片

Fastbot 是一種利用強(qiáng)化學(xué)習(xí)的可復(fù)用的基于模型的自動化安卓測試工具。它接受一個給定的應(yīng)用程序版本,以 APK 文件的形式作為輸入,并輸出覆蓋報告和找到的崩潰。Fastbot 的工作流程包括兩個主要階段,如圖所示:

(a) 測試前的設(shè)置。a1 對 APK 文件進(jìn)行反編譯,收集控件的靜態(tài)文本信息。a2 在一組設(shè)備上安裝 APK,同時 a3 加載先前測試運行中的歷史測試數(shù)據(jù)填充模型。

(b) 引導(dǎo)式 UI 探索。b1 從被測應(yīng)用程序中獲取當(dāng)前的 GUI 頁面,b2 識別和抽象出當(dāng)前頁面上的可用 hyper-event(超事件,一組具有相同屬性的事件,將在下文具體解釋)。b3 選擇一個具體的 UI 事件,該事件有可能增加 Activity 覆蓋率,b4 執(zhí)行該事件。執(zhí)行完畢后,b5 更新歷史測試數(shù)據(jù)、概率模型,同時 b6 更新強(qiáng)化學(xué)習(xí)智能體。

這些步驟將循環(huán)迭代,直到使用完時間預(yù)算。

核心概念

技術(shù)和算法原理

Fastbot 的關(guān)鍵思想是利用存儲在概率模型中的先驗知識,去有效地指導(dǎo) GUI 測試。為了實現(xiàn)這一點,關(guān)鍵步驟是決定在當(dāng)前 GUI 頁面上選擇哪個 UI 事件,可以快速地提高 Activity 覆蓋率。具體而言,給定一個 GUI 頁面,F(xiàn)astbot 提取當(dāng)前所有可用的超事件,并采用以下兩種策略協(xié)同組合去選擇執(zhí)行的事件:(1)基于模型的事件選擇,(2)基于學(xué)習(xí)的事件選擇。

1. 基于概率模型的事件選擇

為了平衡模型對未知動作的探索和已知高回報動作的利用,避免陷入局部最優(yōu)的僵局,基于模型的事件選擇包括兩種模式:模型擴(kuò)展和模型利用。

模型擴(kuò)展: 如果當(dāng)前 GUI 頁面中的某些超事件尚未包含在概率模型??中,F(xiàn)astbot 將啟動擴(kuò)展策略,隨機(jī)選擇一個尚未執(zhí)行的超事件。在實際中有兩種可能的情況:1)先前的測試運行可能沒有覆蓋所有的超事件,2)當(dāng)前測試應(yīng)用程序版本中添加了一些新的功能。該模式可以幫助擴(kuò)展模型并優(yōu)先探索潛在的新功能。

Fastbot 的算法原理在于利用先前的知識和概率模型,通過模型擴(kuò)展和模型利用兩種策略模式選擇事件,以快速提高 GUI 測試的 Activity 覆蓋率。該算法的設(shè)計使得 GUI 測試能夠更高效地進(jìn)行,并能夠適應(yīng)不同的應(yīng)用場景。

2. 基于強(qiáng)化學(xué)習(xí)的事件選擇

前面概率模型只能表達(dá)一步的指導(dǎo)信息,而強(qiáng)化學(xué)習(xí)技術(shù)能夠?qū)⒁徊綌U(kuò)展為多步的指導(dǎo)信息。Fastbot 采用了 Sarsa N-Step 算法作為獎勵函數(shù)去計算和更新 Q 值。

3. 案例解釋

為了加深理解,下面用頭條應(yīng)用來對算法的幾種決策進(jìn)行解釋:

概率模型的探索與利用模式

通過對歷史數(shù)據(jù)記載對概率模型 M 初始化,見圖 b,啟動頭條應(yīng)用后,進(jìn)入 home Activity1,當(dāng)前頁面可以抽象為 3 個 hyper-event,這三個事件都被包含在模型中,因此 Fastbot 回啟動模型利用策略選擇事件,看圖 b 左邊部分,可以知道 e3 有 90%的概率留在 Activity1,因此更傾向于選擇 e1 和 e2,假設(shè)選擇 e1 后,到達(dá) Activity2,在 Activity2 中 e4 已經(jīng)在模型中,并且 100%回到 Activity1,同時 e5,e6 不再模型中,此時 Fastbot 將啟動探索模式,隨機(jī)選擇 e5 或者 e6,如果選擇 e5,到達(dá) Activity3,此時模型添加一條 e5-Activity3 的概率值 100%,同時由于 e1 的執(zhí)行次數(shù)加 1,因此 e1 的概率也要改變,e1-Activity2 的概率變?yōu)?0.7/1.1=63.6%,e1-Activity5 的概率變?yōu)?36.4%,更新為圖 b 右半部分。

圖片圖片

Q 表的更新利用

在圖 a 中,Activity2,e4,e6 沒有被執(zhí)行過,同時 e6 不在模型內(nèi),因此 e1 的獎勵更高,相似的,e7,e8 也是新的事件,因此 e5 的獎勵會更高,假設(shè) e1,e2,e3 都會執(zhí)行過很多次,并且 Activity2,3,4 都被覆蓋了,此時將利用 Q 表中的值去計算事件選擇的概率,在當(dāng)前 Activity1 中,由于 e1 的獎勵最高說明他能夠到達(dá)更深的 Activity,因此選擇 e1 作為下一個事件執(zhí)行。

圖片

設(shè)計實現(xiàn)

Fastbot 開源版包括客戶端和本地服務(wù)端兩部分,客戶端負(fù)責(zé)監(jiān)聽 UI 事件,接收和注入相應(yīng)的動作,服務(wù)端負(fù)責(zé)計算和決策。具體而言,在每個設(shè)備上運行 Fastbot 客戶端,通過監(jiān)控 GUI 頁面信息發(fā)送給服務(wù)端,服務(wù)端接收信息根據(jù)算法決策返回選擇的事件,客戶端接收事件并執(zhí)行操作。

客戶端使用 Java 語言編寫,用于獲取 GUI 信息,讀取服務(wù)端決策,并將決策轉(zhuǎn)化為設(shè)備可以執(zhí)行的代碼,從而操作設(shè)備;本地服務(wù)端,即與 Java 層相對應(yīng)的底層 C/C++代碼層,以動態(tài)鏈接庫(.so 文件)的形式與 Java 層通過 JNI 接口進(jìn)行交互,它用于實現(xiàn)用戶偏好的讀取,模型的學(xué)習(xí)和任務(wù)決策,并將決策結(jié)果轉(zhuǎn)化為 JSON 格式的信息傳遞給 Java 層。

Fastbot 的實現(xiàn)繼承 Monkey 原生框架,下圖展示了 Fastbot 擴(kuò)展的代碼簡要結(jié)構(gòu)圖,在 java 層新增了來自 Fastbot 算法返回的事件源 MonkeySourceApeNative 類,對 GUI 樹的獲取,以及對 Android 不同的系統(tǒng)的兼容的 Adapter 適配接口,此外,為了支持自定義操作的解析和執(zhí)行對 Monkey 的原始事件進(jìn)行了封裝。

圖片

常用配置

1. 配置自定義事件

Fastbot 支持自定義事件序列,適用于場景覆蓋不全,通過人工配置到達(dá) Fastbot 遍歷不到的場景。

配置步驟:

  1. 新建 max.xpath.actions 文件(文件名稱固定不能更改)
  2. 參照案例格式指定控件和相應(yīng)的動作。其中:
  1. prob:發(fā)生概率,"prob":1,代表發(fā)生概率為 100%
  2. activity:所屬場景
  3. times:重復(fù)次數(shù),默認(rèn)為 1 即可
  4. actions:具體需要執(zhí)行的事件序列,其中要指名每個操作對象的 xpath,對應(yīng)的動作 action,和與下一個事件間隔的時間 throttle(ms),注意 xpath 寫法
  1. 動作類型(必須大寫):
  2. CLICK:點擊,想要輸入內(nèi)容在 action 下補充 text,如果有 text 則執(zhí)行文本輸入

  3. LONG_CLICK:長按

  4. BACK:返回

  5. SCROLL_TOP_DOWN:從上向下滾動

  6. SCROLL_BOTTOM_UP:從下向上滑動

  7. SCROLL_LEFT_RIGHT:從左向右滑動

  8. SCROLL_RIGHT_LEFT:從右向左滑動

  9. 配置完成后,將配置文件推送到手機(jī)端: adb push 路徑+max.xpath.actions /sdcard


下面以 AmazeFileManager 為例:

  1. 第一種情況:當(dāng)事件執(zhí)行不涉及 Activity 的跳轉(zhuǎn)時,只需將所有的事件序列寫在一個對象中。

如圖所示,actions 字段里的 4 個動作分別對應(yīng)下圖中紅框標(biāo)出的動作,(1)點擊菜單按鈕打開菜單欄,(2)點擊 recent file 按鈕到達(dá)相應(yīng)文件目錄,(3)點擊加號按鈕,打開浮選選項,(4)點擊 File 按鈕打開新建文件對話框。

圖片

[
    {
        "prob":1,
        "activity":"com.amaze.filemanager.ui.activities.MainActivity",
        "times":1,
        "actions":[
            {
                "xpath":"http://*[@content-desc='Navigate up']",
                "action":"CLICK",
                "throttle": 2000
            },
            {
                "xpath":"http://*[@resource-id='com.amaze.filemanager:id/design_menu_item_text' and @text='Recent files']",
                "action":"CLICK",
                "throttle": 2000
            },
            {
                "xpath":"http://*[@resource-id='com.amaze.filemanager:id/sd_main_fab']",
                "action":"CLICK",
                "throttle": 2000
            },
            {
                "xpath":"http://*[@resource-id='com.amaze.filemanager:id/menu_new_file']",
                "action":"CLICK",
                "throttle": 2000
            }
        ]
    }
]
  1. 第二種情況:當(dāng)事件執(zhí)行涉及到 Activity 的跳轉(zhuǎn)時,要將對應(yīng)不同 Activity 的事件序列單獨存放。

下圖展示了從 MainActivity 跳轉(zhuǎn)到 PreferencesActivity 的例子。

圖片

可以看到在配置文件中有兩個對象,分別對應(yīng) MainActivity 和 PreferencesActivity 兩個頁面下需要執(zhí)行的事件序列。

[
    {
        "prob":1,
        "activity":"com.amaze.filemanager.ui.activities.MainActivity",
        "times":1,
        "actions":[
            {
                "xpath":"http://*[@content-desc='Navigate up']",
                "action":"CLICK",
                "throttle": 2000
            },
            {
                "xpath":"http://*[@resource-id='com.amaze.filemanager:id/design_navigation_view']",
                "action":"SCROLL_BOTTOM_UP",
                "throttle": 2000
            },
            {
                "xpath":"http://*[@text='Settings' and @resource-id=['com.amaze.filemanager:id/design_menu_item_text']",
                "action":"CLICK",
                "throttle": 2000
            }
        ]
    },
    {
         "prob":1,
         "activity":"com.amaze.filemanager.ui.activities.PreferencesActivity",
         "times":1,
         "actions":[
                 {
                     "xpath":"http://*[@resource-id='android:id/title' and @text='Appearance']",
                     "action":"CLICK",
                     "throttle": 2000
                 }
             ]
    }
]
  1. 帶文本輸入的情況

配置格式: 在 action 字段選擇“CLICK”,同時添加“text”字段存儲需要輸入的文本。

圖片

以抖音為例,使用以下配置信息可以指定完成輸入賬戶信息的操作。兩個動作,分別對應(yīng)點擊 use phone 按鈕和輸入文本。

[
    {
        "prob":1,
        "activity":"com.ss.android.ugc.aweme.account.login.auth.I18nSignUpActivityWithNoAnimation",
        "times":1,
        "actions":[
            {
                "xpath":"http://*[@resource-id='com.zhiliaoapp.musically:id/ayo' and @text='Use phone / email / username']",
                "action":"CLICK",
                "throttle": 2000
            }

        ]
    },
{
        "prob":1,
        "activity":"com.ss.android.ugc.aweme.account.login.v2.ui.SignUpOrLoginActivity",
        "times":1,
        "actions":[
            {
                "xpath":"http://*[@text='Phone number' and @resource-id=['com.zhiliaoapp.musically:id/e61']",
                "action":"CLICK",
                "text":"12341828506",
                "throttle": 2000
            }

        ]
    }
]

2. 屏蔽控件

Fastbot 支持手動配置需要屏蔽的控件或區(qū)域,比如測試過程中“半路”中途退出登錄,屏蔽退出登錄按鈕。

配置步驟:

  1. 新建 max.widget.black 文件(文件名稱固定不可更改)
  2. 參照案例格式指定需要屏蔽的控件,格式如下:
  • bounds:屏蔽某個區(qū)域,在該區(qū)域內(nèi)的控件或坐標(biāo)不會被點擊。
  • xpath:查找匹配的控件,屏蔽點擊該控件。
  • xpath+bounds:查找匹配的控件,當(dāng)控件存在時屏蔽指定的區(qū)域。
  1. activity:當(dāng) activity 與 currentactivity 一致時執(zhí)行如下匹配
  2. 屏蔽控件或區(qū)域共有三種方式:
  3. 配置完成后,將配置文件推送到手機(jī)端: adb push 路徑+max.widget.black /sdcard

下面以 AmazeFileManager 為例,展示如何進(jìn)行控件,區(qū)域以及樹剪枝屏蔽:

圖片

  1. 屏蔽控件

如圖(a)所示,紅框標(biāo)出來的黑色區(qū)域控件是手動配置的屏蔽控件。在這里,使用 xpath 來指定需要被屏蔽的控件。

[
{
    "activity":"com.ss.android.ugc.aweme.main.MainActivity",
    "xpath":"http://*[@content-desc='Navigate up']"
},
{
    "activity":"com.ss.android.ugc.aweme.main.MainActivity",
    "xpath":"http://*[@content-desc='More options']"
}

]
  1. 屏蔽區(qū)域

如圖(b)所示,紅框標(biāo)出來的黑色區(qū)域控件是手動配置的屏蔽區(qū)域。在這里使用 bounds 來配置屏蔽區(qū)域。

[
{
    "activity":"com.ss.android.ugc.aweme.main.MainActivity",
    "bounds":"[0,18],[240,60]"
}
]
  1. 樹剪枝屏蔽

樹剪枝屏蔽是指在 GUI 樹中查找到對應(yīng)控件,通過將控件屬性的 enable 設(shè)置為 False,從而使控件屏蔽。

配置步驟:

  1. 配置 max.tree.pruning 文件(文件名固定不可更改)
  2. 參照案例格式指定需要屏蔽的控件,格式如下:
  1. activity:當(dāng) activity 與 currentactivity 一致時執(zhí)行如下匹配
  2. 剪枝方式:配置 xpath,查找匹配的控件,改變控件屬性,從而使控件屏蔽。
  1. 配置完成后,將配置文件推送到手機(jī)端: adb push 路徑+max.tree.pruning /sdcard

例子:仍以 AmazeFileManager 為例, 如上圖(c)所示,被紅框標(biāo)出的黑色區(qū)域即為手動配置的樹剪枝屏蔽控件,可以通過將控件的 enabled 屬性變?yōu)?flase,也可以將其他屬性變?yōu)榭諄韺崿F(xiàn)屏蔽。

[
{
    "activity":"com.ss.android.ugc.aweme.main.MainActivity",
    "xpath":"http://*[@content-desc='Navigate up']",
    "enabled":"false"
},
{
    "activity":"com.ss.android.ugc.aweme.main.MainActivity",
    "xpath":"http://*[@content-desc='More options']",
    "enabled":"false"
},
{
    "activity":"com.ss.android.ugc.aweme.main.MainActivity",
    "xpath":"http://*[@resource-id='com.amaze.filemanager:id/search'",
    "resourceid":"",
    "contentdesc":"",
    "text":"",
    "classname":""
}
]

更多信息

Fastbot 開源地址:https://github.com/bytedance/Fastbot_Android

更多 Fastbot 技術(shù)細(xì)節(jié)請參考該論文:“Fastbot2: Reusable Automated Model-based GUI Testing for Android Enhanced by Reinforcement Learning”。 Zhengwei Lv(呂正偉), Chao Peng(彭超), Zhao Zhang(張釗), Ting Su(蘇亭), Kai Liu(劉凱), Ping Yang(楊萍)。 37th IEEE/ACM International Conference on Automated Software Engineering (ASE 2022).

責(zé)任編輯:龐桂玉 來源: 字節(jié)跳動技術(shù)團(tuán)隊
相關(guān)推薦

2012-07-10 16:22:01

開源架構(gòu)

2015-09-25 09:56:37

負(fù)載均衡

2009-03-20 09:49:00

負(fù)載均衡CDN網(wǎng)站架構(gòu)

2018-06-26 11:33:21

云計算開源軟件

2021-12-07 07:32:09

kafka架構(gòu)原理

2024-10-30 10:06:51

2022-01-10 23:59:02

Sentry SaaS 開源

2024-12-05 10:42:51

網(wǎng)絡(luò)架構(gòu)NAT

2021-11-11 10:48:35

架構(gòu)運維技術(shù)

2012-08-01 10:50:48

性能測試測試架構(gòu)

2017-05-16 15:33:42

Python網(wǎng)絡(luò)爬蟲核心技術(shù)框架

2009-11-30 10:55:22

2025-04-03 07:00:00

2013-06-17 16:29:56

2024-09-29 08:00:00

動態(tài)代理RPC架構(gòu)微服務(wù)架構(gòu)

2017-07-07 14:30:27

Flink架構(gòu)拓?fù)?/a>

2025-08-04 06:05:00

RAG大型語言模型語言模型

2018-12-19 16:15:35

服務(wù)器虛擬化開源

2025-09-30 02:00:00

2025-06-03 00:00:04

VMware FT虛擬機(jī)服務(wù)器
點贊
收藏

51CTO技術(shù)棧公眾號

国产精品久久久久精| 欧美日韩性生活| 日韩一区二区免费电影| 国产在线观看一区| 国产精品夜夜夜爽阿娇| 高清av不卡| 中文在线日韩| 欧美日韩一二三| 国产资源第一页| 亚洲中文字幕在线一区| 久久超碰99| 精品久久久久久中文字幕一区奶水| 成人国产精品日本在线| 黄色av免费播放| 蜜桃成人精品| 国产清纯白嫩初高生在线观看91 | 久久伊伊香蕉| 一区二区三区欧洲区| 国产精品电影院| 国产成人精品视| av直播在线观看| 蜜桃麻豆av在线| 成人动漫av在线| 韩国日本不卡在线| 中国一级特黄录像播放| 色婷婷在线播放| 岛国精品在线播放| 久久久噜噜噜久久中文字免| 亚洲免费观看在线| sm性调教片在线观看| bt7086福利一区国产| 91精品国产高清自在线看超| 国产精品一区二区人妻喷水| 欧美亚洲二区| 亚洲免费大片在线观看| 91在线观看网站| 黄色小视频在线免费看| 国产精品一线| 一本久道中文字幕精品亚洲嫩| 欧美一二三四五区| 一级黄色片在线观看| 亚洲免费二区| 一区二区三区视频免费| 中文字幕在线观看日| 26uuu亚洲电影在线观看| 风间由美性色一区二区三区| 97精品在线视频| 青娱乐国产精品| 欧美日韩导航| 在线视频欧美精品| 波多野结衣三级在线| 隣の若妻さん波多野结衣| 宅男噜噜噜66国产日韩在线观看| 亚洲欧美中文字幕| 亚洲色图欧美自拍| 九色porny自拍视频在线观看| 亚洲日本护士毛茸茸| 国产伦一区二区三区色一情| 亚洲大片免费观看| 亚洲一区二区三区| 久久久精品一区二区三区| 亚洲一区二区三区黄色| 免费成人美女女| 亚洲乱码国产乱码精品精98午夜| 永久久久久久| 韩国av在线免费观看| 国产在线视频精品一区| 欧美一级成年大片在线观看 | 国产目拍亚洲精品99久久精品| 欧美日韩亚洲一区二区三区四区| 一区二区三区亚洲视频| 韩国一区二区在线观看| 97香蕉超级碰碰久久免费软件| 国产第一页在线播放| 亚洲深夜激情| 欧美成人午夜激情在线| 日本二区在线观看| 国产成人福利夜色影视| 亚洲国产日韩综合久久精品| 亚洲高清在线播放| 神马午夜精品95| 激情深爱一区二区| av在线不卡一区| 亚洲影院一区二区三区| 美国毛片一区二区三区| 欧美在线国产精品| 国产极品美女在线| 欧美日韩水蜜桃| 日韩精品在线播放| 岛国av免费观看| 亚洲精华一区二区三区| 精品卡一卡二卡三卡四在线| 久久人人爽av| 午夜电影一区| 欧美一区二区三区小说| 污色网站在线观看| 天天免费亚洲黑人免费| 欧美日韩高清影院| 最新天堂中文在线| 视频精品二区| 亚洲欧美日韩网| 野外性满足hd| 男人的天堂久久| 一区二区在线免费视频| 九九热只有精品| 日韩电影免费在线看| 日本一欧美一欧美一亚洲视频| 五月天婷婷综合网| 日韩香蕉视频| 国产免费一区二区三区在线观看 | 在线不卡av电影| 欧美激情99| 久久久精品视频在线观看| 久久久久久久久久久影院 | www.com毛片| 不卡av免费观看| 亚洲一级在线观看| 丁香色欲久久久久久综合网| 国产原创视频在线观看| 亚洲人精品午夜| 久久国产色av免费观看| 久久人体大尺度| 精品国内二区三区| 久久爱一区二区| 视频一区视频二区在线观看| 国产精品国产亚洲伊人久久| 中国一级片黄色一级片黄| 青青草97国产精品免费观看无弹窗版 | 亚洲无线一线二线三线区别av| 久久资源免费视频| 国产精品久久久久久久精| 午夜精品久久99蜜桃的功能介绍| 欧美巨大黑人极品精男| 久久久国产成人| 一本久道综合久久精品| 91av免费看| 国内精品不卡| 欧美日本国产视频| 秋霞网一区二区三区| 老色鬼久久亚洲一区二区| 久久爱av电影| 在线日本视频| 亚洲狼人国产精品| www.欧美激情.com| 亚洲国产精品成人| 午夜精品蜜臀一区二区三区免费| 99精品国产99久久久久久97| yourporn久久国产精品| 99久久久精品视频| 香蕉成人app| 欧美黑人视频一区| 欧美黄色一级大片| 久久一日本道色综合| 一区二区三区的久久的视频| 欧美极品少妇videossex| 色综合久久久久| 亚洲做受高潮无遮挡| 久久国产日本精品| 亚洲一区中文字幕| 欧洲一级在线观看| 亚洲久草在线视频| 国产精品嫩草69影院| 国产探花在线精品一区二区| 久久国产精彩视频| 国产日韩欧美一区二区东京热 | 亚洲高清黄色| 中文字幕欧美精品在线| 国产在线免费视频| 成人国产在线观看| 精品中文字幕av| 欧美精品momsxxx| 国产精品入口尤物| 污视频软件在线观看| 久久精品一区二区三区不卡| 精品国产一区二区三区在线| 麻豆精品在线| 色综久久综合桃花网| 好看的av在线| 国产精品免费久久久久| 亚洲熟妇av一区二区三区漫画| av在线亚洲一区| 在线播放国产一区二区三区| 伊人网免费视频| 一级精品视频在线观看宜春院| 国产精品久久久毛片| 午夜欧洲一区| 欧美激情按摩在线| 天天躁日日躁狠狠躁喷水| 色乱码一区二区三区88| 亚洲色图14p| 欧美aaaaaa午夜精品| 蜜桃麻豆www久久国产精品| 24小时免费看片在线观看| 日韩一本二本av| 日韩福利片在线观看| 成人涩涩免费视频| 国产精品视频黄色| 禁断一区二区三区在线| 亚洲xxxxx性| 黑人巨大精品| 欧美成年人视频网站欧美| 色在线免费视频| 欧美精品久久一区| 日韩黄色中文字幕| 成人网页在线观看| 亚洲色图偷拍视频| 亚洲91久久| 欧美欧美一区二区| 日日夜夜精品视频| 国产精品视频免费观看www| 第一av在线| 久久夜色精品国产| 成人高清免费观看mv| 欧美亚洲国产一区二区三区va| 成人片黄网站色大片免费毛片| 国产一区欧美二区| 国产wwwxx| 亚洲一区成人| 久久综合久久久久| 亚洲中无吗在线| 亚洲精品乱码久久久久久蜜桃91| 任我爽精品视频在线播放| 97国产超碰| 精品一区二区三区免费看| 国产欧美精品在线| 婷婷午夜社区一区| 欧美一级bbbbb性bbbb喷潮片| 日本h片在线观看| 久久天堂电影网| 天堂аⅴ在线地址8| 欧美日韩免费视频| 无码人妻精品一区二区三区不卡| 午夜欧美一区二区三区在线播放| 91精品人妻一区二区| 高清不卡在线观看av| 性生活一级大片| 夜夜夜久久久| av免费观看国产| 精品一区二区三区的国产在线观看| 久久国产日韩欧美| 看全色黄大色大片免费久久久| 国产成人在线亚洲欧美| 中文av在线全新| 久久久久北条麻妃免费看| 91青青在线视频| 正在播放亚洲1区| av在线电影院| 日韩中文字幕在线看| 少妇喷水在线观看| 欧美精品一区二区久久久| 免费观看日批视频| 色欧美片视频在线观看| 久久久久久久久久成人| 91国产视频在线观看| 不卡av电影在线| 欧美日韩精品系列| 国产精品毛片一区视频播| 制服视频三区第一页精品| 日韩欧美不卡视频| 精品国产乱码久久久久久婷婷| 久久夜色精品亚洲| 色婷婷av一区二区三区大白胸 | 天天操夜夜操av| 亚洲桃色在线一区| 青青草手机在线观看| 亚洲国产成人av网| 少妇高潮av久久久久久| 亚洲人成网站精品片在线观看| 国产一区二区精彩视频| 亚洲综合在线观看视频| xxxx.国产| 一区二区三区日韩精品视频| 中文字幕免费高清| 国产精品丝袜黑色高跟| 午夜久久久久久久| 国产精品自在在线| 一区二区三区入口| 国产美女精品一区二区三区| 国产伦理在线观看| 91视频在线观看免费| 免费在线观看日韩av| 97精品久久久久中文字幕 | 丁香婷婷综合激情| 亚洲一区免费| 隔壁人妻偷人bd中字| 久久影院一区| 日韩女优中文字幕| 99久久香蕉| 91精品国产综合久久久久久丝袜| 国产精品nxnn| 在线观看成人av电影| 精久久久久久| 国产精品三级一区二区| 婷婷久久一区| 美女黄色片网站| 91精品国产91久久综合| 国产原创popny丨九色| 亚洲无线视频| 亚洲最大成人在线观看| 成人做爰69片免费看网站| 日本爱爱爱视频| 亚洲大片在线观看| 97免费观看视频| 亚洲欧美国产视频| 韩国日本一区| 成人黄色大片在线免费观看| 亚洲日本三级| 国产欧美日韩小视频| 韩国女主播成人在线| 性少妇bbw张开| 亚洲国产精品久久不卡毛片| 国产精品熟女久久久久久| 亚洲乱码一区二区| 久久亚洲导航| 亚洲综合日韩在线| 久久大综合网| 99热都是精品| 青青草精品视频| 国产精品久久久久无码av色戒| 亚洲综合色网站| 国产免费无遮挡| 色悠悠久久久久| 九色成人搞黄网站| 国产欧美日韩中文字幕| 亚洲精品伊人| 日韩欧美一区二区在线观看| 国产精品久久久亚洲一区| 国产人妻精品午夜福利免费| 亚洲三级在线观看| 国产精品久久久久精| www.欧美三级电影.com| 国产成人精品一区二区三区在线 | 欧美色图第一页| 久久久久久久影视| 57pao国产精品一区| 久久中文资源| 日韩中字在线观看| 成人aa视频在线观看| 日本在线视频免费观看| 亚洲国产精品系列| 国产在线网站| 久久不射电影网| japansex久久高清精品| 小说区视频区图片区| 久久精品99久久久| 91视频最新网址| 午夜欧美大尺度福利影院在线看| 亚洲精品国产精| 亚洲日本成人网| 另类图片综合电影| 日韩高清dvd| 麻豆精品新av中文字幕| 国产精品免费在线视频| 在线播放视频一区| av在线下载| 国产精品久久久久久久久免费| 亚洲影院天堂中文av色| 精品久久久久久久无码| 国内精品在线播放| 综合五月激情网| 日韩欧美福利视频| www.97超碰| 中文日韩在线观看| 亚洲91在线| av一区二区三区免费观看| 成人国产精品免费观看视频| 国产成人在线免费观看视频| 亚洲人成五月天| 黄色成人在线观看网站| 久久久99爱| 美女黄色成人网| а天堂中文在线资源| 欧美mv和日韩mv的网站| 中文字幕在线高清| 日韩视频在线免费播放| 国产69精品久久久久毛片| 国产无遮挡呻吟娇喘视频| 中文字幕一区二区三区电影| 日本免费一区二区视频| 男人揉女人奶房视频60分| 国产精品第一页第二页第三页| www五月婷婷| 欧美最猛性xxxx| 婷婷另类小说| 国产精品1000部啪视频| 欧美日韩成人一区| av伦理在线| 中文字幕色一区二区| 99久久精品国产网站| 一级黄色a视频| 欧美一级视频在线观看| 国产精品7m凸凹视频分类| 波多野结衣影院| 欧美电影一区二区三区| 蜜桃在线视频| 欧洲金发美女大战黑人| 久久久久久久久一| 精品久久在线观看| 国产精品亚洲欧美导航| 午夜影院日韩|