精品欧美一区二区三区在线观看 _久久久久国色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| 欧洲中文字幕精品| 精品嫩模一区二区三区| 狠狠躁夜夜躁av无码中文幕| 免费精品视频| 美女av一区二区三区| 亚洲成年人在线观看| 亚洲第一会所| 亚洲mv大片欧洲mv大片精品| 日韩国产精品一区二区三区| 99在线观看免费| 久久五月激情| 久久久久久欧美| 中国特黄一级片| 国产精品x8x8一区二区| 欧美日韩在线播| 国产91在线视频观看| 成人免费网址| 国产日韩欧美不卡在线| 动漫3d精品一区二区三区 | 国产精品啊v在线| 亚洲网站在线播放| 精品人妻一区二区免费视频| 日韩欧国产精品一区综合无码| 欧美日韩亚洲91| 青青草视频国产| 日本中文在线| 国产色产综合产在线视频| 国产精品二区三区| 国产精品无码一区二区桃花视频| 男女av一区三区二区色多| 欧美福利视频在线观看| 免费成人深夜蜜桃视频| 伊人久久大香线蕉综合网蜜芽| 日韩欧美成人一区二区| 亚洲黄色av网址| 中文在线8资源库| 亚洲成人免费观看| 黄色网在线视频| a视频在线观看免费| 中文字幕一区二区三| 亚洲高清资源综合久久精品| 噜噜噜噜噜在线视频| 91色视频在线| 欧美精品亚洲精品| 日本福利午夜视频在线| 99久久免费视频.com| 国产精品永久入口久久久| www.亚洲天堂.com| 国产成人av一区二区| 亚洲淫片在线视频| a在线观看免费| 福利电影一区二区| 国产精品福利视频| 国精品人妻无码一区二区三区喝尿| 国产一区二区三区四| 96国产粉嫩美女| 成人免费视频国产免费| 免费高清在线一区| 国产日韩在线播放| 国产精品高潮呻吟av| 黑人精品欧美一区二区蜜桃| 91精品国产99久久久久久红楼| 91精品视频免费在线观看| 紧缚奴在线一区二区三区| 成人免费大片黄在线播放| 国产欧美综合视频| 成人精品电影在线观看| 久久99精品国产一区二区三区| 色播色播色播色播色播在线| 久久精品一二三| 一区二区精品视频| 日韩影视在线| 欧美日韩亚洲精品内裤| 狠狠热免费视频| 99久久这里有精品| 精品少妇一区二区三区免费观看 | 哺乳挤奶一区二区三区免费看| 欧美精品一区二区三区蜜桃视频 | 99久久精品免费看国产交换| 国产xxx精品视频大全| 蜜桃免费一区二区三区| 91在线看黄| 亚洲一区二区不卡免费| av免费播放网址| 青青国产精品| 亚洲激情电影中文字幕| 亚洲自拍偷拍图| 综合一区av| 热久久99这里有精品| 日批视频免费观看| 成人深夜福利app| 亚洲自拍偷拍在线| 国产情侣一区二区| 久久只精品国产| 无码毛片aaa在线| caoporn视频在线| 欧美日韩美少妇| 国产精品嫩草av| 久久久久亚洲| 国产成人精品国内自产拍免费看| 一区二区三区免费观看视频| 成人黄色国产精品网站大全在线免费观看| 日韩三级在线播放| 国产高清中文字幕在线| 欧美剧在线免费观看网站| 黄色网址在线视频| 欧美激情一级片一区二区| 欧美一级视频一区二区| www.天堂在线| 亚洲欧美在线视频观看| 日韩久久一级片| 超碰97成人| 九九精品视频在线| 中文字幕乱码人妻无码久久 | 国产精品久久久视频| 在线成人欧美| 亚洲综合色激情五月| yjizz视频网站在线播放| 欧美日韩国内自拍| 91九色蝌蚪porny| 亚洲欧美日韩高清在线| 国产精品成人国产乱一区| 色哟哟中文字幕| 一区二区久久久久| 91福利免费观看| 欧美一站二站| 国产精品1234| 精品美女视频在线观看免费软件| 亚洲福利一区二区三区| 男人女人拔萝卜视频| 欧美韩日一区| 国产日本欧美在线观看 | 久久精品欧美一区二区三区不卡| 99在线观看视频免费| 日本免费精品| 欧美成人全部免费| 国产肥老妇视频| 一区二区三区在线免费观看| 天天干天天玩天天操| 成久久久网站| 国产精品尤物福利片在线观看| 国产在线观看黄| 欧美在线免费观看视频| 97在线观看免费视频| 日韩av中文字幕一区二区三区| 欧美亚洲一级二级| 日韩一区二区三区在线免费观看| 亚洲美女在线视频| 免费观看日批视频| 欧美国产精品一区| 91欧美视频在线| 国产精品久久久久久久久妇女| 国产日韩av在线播放| 思思99re6国产在线播放| 欧美精品亚洲二区| 538任你躁在线精品视频网站| 国产·精品毛片| aa在线观看视频| 欧美**vk| 国产日韩精品在线| 污污的视频在线观看| 精品免费国产一区二区三区四区| 国产乡下妇女做爰毛片| 97se狠狠狠综合亚洲狠狠| 精品人妻一区二区三区四区在线| 国产成人精品免费视| 国产日韩在线播放| 18video性欧美19sex高清| 亚洲美女av在线播放| 中文字幕日韩国产| 亚洲激情中文1区| 亚洲中文字幕无码av| 久久综合伊人| 青青草免费在线视频观看| 成午夜精品一区二区三区软件| 2023亚洲男人天堂| 亚洲精品传媒| 欧美精品一区二区三区久久久 | 久久久久久久免费| 成人精品国产亚洲| 久久久久久久久网站| 精品欧美不卡一区二区在线观看| 91精品国产一区二区三区香蕉| 五月天婷婷综合网| 亚洲国产精品传媒在线观看| 日本人dh亚洲人ⅹxx| 国产精品亚洲产品| 久久av喷吹av高潮av| 美女av一区| 91久热免费在线视频| 欧美gv在线| www.久久色.com| 色哟哟在线观看| 日韩欧美国产精品| 中文字幕日韩经典| 午夜成人免费视频| 国产黄色小视频网站| www.久久久久久久久| 日韩欧美国产片| 一二三区精品| 久久久久久久久网| 欧美日韩在线二区| 国产在线视频欧美一区二区三区| 欧美极品在线| 欧洲成人免费视频| 日本精品600av| 久久天堂av综合合色| 久久久久国产精品嫩草影院| 91精品国产高清一区二区三区 | 青青草97国产精品免费观看无弹窗版 | 欧美日韩亚洲系列| 久久亚洲国产成人精品性色| 国产精品天干天干在观线| 特大黑人巨人吊xxxx| 国产精品1024久久| 天天干天天av| 日本午夜一本久久久综合| 成人午夜精品久久久久久久蜜臀| 希岛爱理一区二区三区| 色综合影院在线观看| 网友自拍区视频精品| 国产精品一区二区三区四区五区 | 狠狠色丁香婷婷综合| 热久久精品国产| 亚洲美女一区| 黄色大片中文字幕| 欧美午夜在线| 日本精品免费视频| 99久久这里只有精品| 日韩尤物视频| 成人3d动漫在线观看| 亚洲高清视频一区二区| 成人午夜av| 手机成人在线| 日韩精品四区| 伊人色综合影院| 久久高清精品| 亚洲精品一区二区三区av| 精品按摩偷拍| 黑人中文字幕一区二区三区| 一本色道69色精品综合久久| 91视频九色网站| 日韩激情精品| 国产精品我不卡| 盗摄系列偷拍视频精品tp| 国产精品一级久久久| 久久aimee| 欧美成人蜜桃| 久久不见久久见中文字幕免费 | 91视频在线观看| 伊人久久久久久久久久久久久| 春暖花开成人亚洲区| 中文字幕日韩精品在线| 老司机在线看片网av| 久热精品视频在线观看| 免费在线观看的电影网站| 国内精品久久久久| 爱情电影社保片一区| 国产精品嫩草视频| 精品国产一区二| 99三级在线| 福利电影一区| 欧美日韩在线精品一区二区三区| 欧美亚洲国产精品久久| 综合久久国产| 在线视频观看日韩| 亚洲精品中文字幕无码蜜桃| 另类小说视频一区二区| 麻豆传媒在线看| 91丨九色porny丨蝌蚪| 变态另类ts人妖一区二区| 亚洲欧美日韩精品久久久久| 国产成年人免费视频| 91黄色免费版| 亚洲第一天堂影院| 亚洲欧美精品在线| 超鹏97在线| 欧美在线亚洲一区| 亚洲青青久久| 精品一区二区日本| 99精品综合| 国内精品在线观看视频| 男女男精品视频| 91人妻一区二区| 国产亚洲美州欧州综合国| 永久免费看黄网站| 日本电影亚洲天堂一区| av片免费播放| 亚洲欧美日韩区| 免费在线看电影| 国产乱人伦真实精品视频| av动漫精品一区二区| 亚洲欧洲国产日韩精品| 99国产精品久久久久久久成人热 | 成人国产精品视频| 日韩av毛片在线观看| 欧美日韩国产精品| 国产熟女精品视频| 中文字幕精品www乱入免费视频| 韩国成人免费视频| 国产日韩在线看片| 精品久久视频| 日韩欧美国产免费| 国产不卡视频在线播放| 亚欧精品视频一区二区三区| 天天综合色天天综合色h| 国产精品视频一二区| 亚洲网站视频福利| 在线手机中文字幕| 国产精品国模大尺度私拍| 国产精品videosex性欧美| 人妻内射一区二区在线视频| 成人精品视频一区| 免费无码毛片一区二区app| 欧美日韩亚洲综合一区二区三区| 亚洲三区在线播放| 欧美大片免费看| 亚洲网站三级| 在线播放豆国产99亚洲| 校园春色综合网| 国产情侣久久久久aⅴ免费| 日韩久久一区二区| 91一区二区视频| 精品国产一区二区三区久久狼5月| 成人一区福利| 久久综合福利| 噜噜噜在线观看免费视频日韩| 免费的av网站| 午夜精品久久久久| 手机av免费在线观看| 欧美激情亚洲综合一区| 一区二区日韩| 麻豆映画在线观看| 国产福利一区二区三区在线视频| 91高清免费看| 91精品欧美久久久久久动漫 | 亚洲精品国产a| 国产国语亲子伦亲子| 久久福利视频导航| 久久精品九色| 国产成a人亚洲精v品在线观看| 国产精一区二区三区| 在线免费观看亚洲视频| 日韩亚洲国产中文字幕欧美| 91麻豆国产福利在线观看宅福利| 亚洲综合小说区| 亚洲国产午夜| 欧美精品黑人猛交高潮| 欧美性猛交xxxxx免费看| 欧美捆绑视频| 国产欧美日韩专区发布| 久久精品青草| 91超薄肉色丝袜交足高跟凉鞋| 亚洲高清不卡在线| 九色视频在线播放| 国产免费一区二区三区在线能观看 | 中文字幕久久午夜不卡| 亚洲天天综合网| 欧美精品在线网站| 久久亚州av| www.xxx亚洲| 亚洲人成网站色在线观看| 国产91视频在线| 午夜免费日韩视频| 欧美影院三区| 337p日本欧洲亚洲大胆张筱雨| 亚洲成人免费在线| se在线电影| 147欧美人体大胆444| 一区二区三区成人精品| 欧美福利第一页| 日韩一级高清毛片| 中文日产幕无线码一区二区| 亚洲一区二区三区加勒比| 国产一区二区导航在线播放| 91看片在线播放| 色777狠狠综合秋免鲁丝| 超碰成人免费| 一区二区xxx| 亚洲成av人**亚洲成av**| 麻豆导航在线观看| 999热视频在线观看| 久久久久国产精品午夜一区| 小泽玛利亚一区二区免费| 亚洲黄色免费三级| 成人在线观看免费视频| 青草视频在线观看视频| 国产精品女主播在线观看| 日批免费在线观看| 成人久久久久久久| 国产精品久久久久9999高清| 亚洲女同二女同志奶水| 亚洲国产毛片完整版| 亚洲综合资源| 免费裸体美女网站| 亚洲国产美女搞黄色|