色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

端到端測(cè)試實(shí)戰(zhàn):從環(huán)境搭建到CI流水線的完整指南

端到端測(cè)試實(shí)戰(zhàn):從環(huán)境搭建到CI流水線的完整指南 1. 端到端測(cè)試到底在測(cè)什么先說(shuō)結(jié)論e2eend-to-end這個(gè)縮寫(xiě)在我這個(gè)崗位每天都會(huì)出現(xiàn)它不是某個(gè)工具的名字而是一整套測(cè)試思路——把整個(gè)系統(tǒng)當(dāng)成一個(gè)黑盒從用戶視角走完一條完整的業(yè)務(wù)鏈路驗(yàn)證用戶能做的事情系統(tǒng)真的能讓他做成。舉個(gè)最直白的例子。你做一個(gè)電商網(wǎng)站單元測(cè)試只驗(yàn)證購(gòu)物車加一件商品后數(shù)量從0變成1接口測(cè)試只驗(yàn)證POST /cart 返回200。但用戶不會(huì)關(guān)心這些用戶關(guān)心的是打開(kāi)首頁(yè)、搜商品、點(diǎn)加入購(gòu)物車、去結(jié)算、填地址、付款——這一串動(dòng)作能不能流暢走通。這個(gè)過(guò)程里任何一個(gè)環(huán)節(jié)出問(wèn)題哪怕中間十個(gè)接口都返回正常用戶層面最終就是買不了東西。e2e測(cè)的就是這條完整鏈路。我剛工作那兩年也不太理解為什么要單獨(dú)搞e2e總覺(jué)得單元測(cè)試和接口測(cè)試覆蓋率夠了就萬(wàn)事大吉。后來(lái)線上出過(guò)一次事故下單接口返回成功但前端跳轉(zhuǎn)支付頁(yè)的時(shí)候因?yàn)橐粋€(gè)字段名對(duì)不上頁(yè)面白屏。接口測(cè)試和單測(cè)全綠用戶就是付不了錢。那次之后我徹底想明白了測(cè)試金字塔再漂亮缺了e2e這層你永遠(yuǎn)不知道拼起來(lái)之后系統(tǒng)到底能不能用。這篇文章我用實(shí)際項(xiàng)目里的經(jīng)驗(yàn)把e2e從環(huán)境搭建、用例設(shè)計(jì)、執(zhí)行策略到問(wèn)題排查完整拆一遍。適合剛接觸e2e的測(cè)試開(kāi)發(fā)也適合寫(xiě)了幾年e2e但總覺(jué)得用例跑不穩(wěn)的同學(xué)對(duì)照參考。2. 環(huán)境準(zhǔn)備工具選型和profile1配置的來(lái)龍去脈2.1 測(cè)試框架選型別盲目追新e2e的工具生態(tài)這幾年變化很快。老牌的Selenium還在但它走的是WebDriver協(xié)議啟動(dòng)瀏覽器、執(zhí)行命令的鏈路很長(zhǎng)跑起來(lái)慢而且對(duì)現(xiàn)代前端框架里那種動(dòng)態(tài)DOM的兼容性越來(lái)越吃力。Cypress當(dāng)年很火把執(zhí)行環(huán)境從瀏覽器外面挪到瀏覽器內(nèi)部速度確實(shí)快了一個(gè)量級(jí)但它有個(gè)天然的短板只能在Chromium系跑多瀏覽器覆蓋不方便而且它對(duì)多標(biāo)簽頁(yè)、跨域場(chǎng)景支持得很別扭。目前我主推Playwright。它是微軟開(kāi)源的項(xiàng)目底層走的是CDPChrome DevTools Protocol啟動(dòng)速度和執(zhí)行穩(wěn)定性比Selenium強(qiáng)太多API設(shè)計(jì)上對(duì)等待策略做了內(nèi)置處理能自動(dòng)等元素可見(jiàn)、可點(diǎn)、可操作一個(gè)腳本能同時(shí)控Chromium、Firefox、WebKit三種內(nèi)核對(duì)用戶可能用不同瀏覽器訪問(wèn)這個(gè)場(chǎng)景覆蓋得最省力。工具選型這件事我不建議糾結(jié)太久記住一個(gè)原則有長(zhǎng)期維護(hù)、社區(qū)活躍、API設(shè)計(jì)符合直覺(jué)、能覆蓋你的目標(biāo)瀏覽器。目前Playwright在這幾個(gè)維度上都是最優(yōu)解。2.2 e2e profile1是什么意思很多項(xiàng)目中你都會(huì)看到測(cè)試配置文件帶profile字樣的命名比如profile1其實(shí)就是一套端到端測(cè)試的崗位職責(zé)配置文件。不同項(xiàng)目叫法不太一樣有的叫env有的叫config有的叫profile。核心作用只有一個(gè)把跑哪套環(huán)境、連哪個(gè)服務(wù)、用哪組賬號(hào)、跑哪些用例這些決定測(cè)試行為的參數(shù)從代碼里抽離出來(lái)單獨(dú)管理。我習(xí)慣這樣組織profile1對(duì)應(yīng)默認(rèn)的本地開(kāi)發(fā)和測(cè)試環(huán)境localhost 測(cè)試庫(kù) 測(cè)試賬號(hào)組profile2對(duì)應(yīng)預(yù)發(fā)布環(huán)境staging 預(yù)發(fā)布庫(kù) 隔離賬號(hào)組profile3對(duì)應(yīng)生產(chǎn)驗(yàn)證環(huán)境灰度域名 只讀賬號(hào) 核心鏈路用例這樣做的原因很樸素一套測(cè)試腳本如果能同時(shí)適配多套環(huán)境那它就是可復(fù)用的資產(chǎn)而不是一次性腳本。你想想開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、預(yù)發(fā)布環(huán)境、生產(chǎn)環(huán)境本質(zhì)上是同一套業(yè)務(wù)代碼跑在不同配置下沒(méi)理由每次換環(huán)境就重寫(xiě)一遍測(cè)試。2.3 項(xiàng)目目錄結(jié)構(gòu)和基礎(chǔ)配置先看一個(gè)我常用的項(xiàng)目初始化結(jié)構(gòu)e2e-project/ ├── package.json ├── playwright.config.ts ├── profiles/ │ ├── profile1.json │ ├── profile2.json └── tests/ ├── auth.spec.ts ├── order.spec.ts └── payment.spec.tspackage.json里需要裝的東西很少核心就一個(gè)npm init -y npm install -D playwright/test npx playwright installnpx playwright install這條命令會(huì)把三個(gè)內(nèi)核的瀏覽器二進(jìn)制下載到本地這一步在國(guó)內(nèi)網(wǎng)絡(luò)環(huán)境下有時(shí)候比較慢建議提前配好鏡像源或者手動(dòng)下載瀏覽器包放到緩存目錄能省不少時(shí)間。然后是配置文件核心部分// playwright.config.ts import { defineConfig, devices } from playwright/test; import profile1 from ./profiles/profile1.json; export default defineConfig({ testDir: ./tests, timeout: 60000, retries: 1, use: { baseURL: profile1.baseURL, trace: retain-on-failure, video: on-first-retry, }, projects: [ { name: chromium, use: { ...devices[Desktop Chrome] }, }, ], });這里最關(guān)鍵的是讀取了profile1.json里的baseURL整個(gè)測(cè)試套件跑哪套環(huán)境完全由profile文件決定改測(cè)試代碼的頻次大大降低。3. 用例設(shè)計(jì)思路從業(yè)務(wù)鏈路反推測(cè)試步驟3.1 用戶旅程優(yōu)先e2e用例設(shè)計(jì)的最大誤區(qū)是照著接口文檔一個(gè)個(gè)點(diǎn)頁(yè)面。真正有效的做法是先從業(yè)務(wù)價(jià)值出發(fā)把用戶最常走的路徑列出來(lái)然后逐個(gè)覆蓋。以電商系統(tǒng)為例最高優(yōu)先級(jí)的用戶旅程有幾條登錄 - 搜索商品 - 加購(gòu)物車 - 結(jié)算 - 下單成功登錄 - 領(lǐng)取優(yōu)惠券 - 結(jié)算時(shí)校驗(yàn)價(jià)格 - 支付 - 訂單狀態(tài)更新未登錄 - 瀏覽商品 - 加購(gòu)物車 - 結(jié)算時(shí)引導(dǎo)登錄 - 登錄后訂單鏈路繼續(xù)這三條鏈路的共同點(diǎn)是每一步都依賴上一步成功任一處斷裂用戶行為就終止了。e2e的價(jià)值恰恰在于驗(yàn)證這種連續(xù)依賴。設(shè)計(jì)用例的時(shí)候我習(xí)慣先畫(huà)一條業(yè)務(wù)時(shí)序然后確認(rèn)每一步的頁(yè)面入口和斷言點(diǎn)。比如登錄后用戶名出現(xiàn)在頁(yè)面右上角是斷言點(diǎn)搜索結(jié)果的第一個(gè)商品標(biāo)題包含關(guān)鍵詞也是斷言點(diǎn)。斷言點(diǎn)不一定要多但必須要能證明這一步真的成功。3.2 用例數(shù)量控制不是越多越好很多人一上來(lái)就寫(xiě)幾百條e2e用例跑一遍一兩個(gè)小時(shí)結(jié)果每天光排查flaky就花掉半天。e2e用例的定位是核心鏈路守門員不是全功能覆蓋者。全功能覆蓋應(yīng)該由單元測(cè)試和接口測(cè)試去完成。我個(gè)人的經(jīng)驗(yàn)是一個(gè)中等復(fù)雜度的后端系統(tǒng)e2e用例控制在30到50條比較合理。每條用例對(duì)應(yīng)一條關(guān)鍵用戶旅程或者一個(gè)核心業(yè)務(wù)規(guī)則。如果用例數(shù)量超過(guò)100條先看看是不是把本該在接口層測(cè)的東西寫(xiě)到了e2e里。3.3 數(shù)據(jù)準(zhǔn)備與清理策略e2e測(cè)試最頭疼的問(wèn)題是數(shù)據(jù)。測(cè)試環(huán)境的數(shù)據(jù)總量、污染程度、并發(fā)隔離方式直接決定了用例的穩(wěn)定性。我的做法是優(yōu)先用測(cè)試框架的API造數(shù)據(jù)不要通過(guò)UI一步步創(chuàng)建。比如注冊(cè)用戶這個(gè)前置條件直接調(diào)后端的注冊(cè)接口生成賬號(hào)比用UI跑一遍注冊(cè)流程快得多也省去UI注冊(cè)時(shí)的驗(yàn)證碼、短信等干擾。用例之間隔離每個(gè)用例盡量使用獨(dú)立數(shù)據(jù)。比如下單用例每次生成一個(gè)新的隨機(jī)手機(jī)號(hào)作為登錄賬號(hào)避免上一個(gè)用例殘留的訂單數(shù)據(jù)影響下一個(gè)用例。測(cè)試數(shù)據(jù)清理跑完用例后把創(chuàng)建的數(shù)據(jù)在teardown里清理掉。如果清理成本高至少保證測(cè)試數(shù)據(jù)有統(tǒng)一前綴便于定期批量清理。4. 從零寫(xiě)一條完整的e2e用例4.1 登錄注冊(cè)模塊的e2e實(shí)戰(zhàn)我拿注冊(cè) 登錄這條鏈路來(lái)演示完整寫(xiě)法。注冊(cè)登錄是幾乎所有系統(tǒng)的入口也是e2e里最容易出現(xiàn)理解偏差的模塊——很多人把它當(dāng)兩個(gè)用例寫(xiě)其實(shí)從用戶視角來(lái)看注冊(cè)完之后自動(dòng)登錄這是一條連續(xù)旅程。import { test, expect } from playwright/test; test(新用戶注冊(cè)后自動(dòng)登錄并進(jìn)入首頁(yè), async ({ page }) { // 生成唯一手機(jī)號(hào)保證每次運(yùn)行不會(huì)撞庫(kù) const timestamp Date.now(); const phone 138${String(timestamp).slice(-8)}; const password Test12345; // 打開(kāi)注冊(cè)頁(yè)面 await page.goto(/register); // 填寫(xiě)注冊(cè)表單 await page.getByLabel(手機(jī)號(hào)).fill(phone); await page.getByLabel(設(shè)置密碼).fill(password); await page.getByLabel(確認(rèn)密碼).fill(password); // 提交注冊(cè) await page.getByRole(button, { name: 注冊(cè) }).click(); // 關(guān)鍵斷言注冊(cè)成功后應(yīng)自動(dòng)登錄并跳轉(zhuǎn)首頁(yè) await expect(page).toHaveURL(/\/home/); // 斷言登錄態(tài)右上角出現(xiàn)用戶昵稱或手機(jī)號(hào)掩碼 const userMenu page.getByTestId(user-menu); await expect(userMenu).toBeVisible(); await expect(userMenu).toContainText(phone.slice(0, 3) ****); });這里有幾個(gè)細(xì)節(jié)值得展開(kāi)說(shuō)。手機(jī)號(hào)用時(shí)間戳生成是為了防止測(cè)試環(huán)境里出現(xiàn)重復(fù)賬號(hào)如果不用時(shí)間戳第二次跑同一個(gè)用例就會(huì)遇到手機(jī)號(hào)已注冊(cè)的異常用例直接失敗但這不是被測(cè)系統(tǒng)的bug是測(cè)試代碼自己的問(wèn)題。這類問(wèn)題統(tǒng)稱為測(cè)試自身不穩(wěn)定因素要在設(shè)計(jì)階段就規(guī)避掉。getByLabel、getByRole、getByTestId這些是Playwright推薦的定位API優(yōu)先于className和id選擇器。原因在于className和id是前端代碼的實(shí)現(xiàn)細(xì)節(jié)重構(gòu)時(shí)很容易變而label、role、testid這些相對(duì)更接近用戶可見(jiàn)的語(yǔ)義穩(wěn)定性要好很多。我見(jiàn)過(guò)太多項(xiàng)目因?yàn)榍岸税杨惷麖腷tn-login改成了login-button結(jié)果整個(gè)e2e套件紅一片。用語(yǔ)義化定位器之后這種情況基本絕跡。4.2 電商下單全流程用例下單鏈路是e2e中最能體現(xiàn)端到端價(jià)值的場(chǎng)景。這里要覆蓋搜索、加購(gòu)、購(gòu)物車校驗(yàn)、結(jié)算、支付回調(diào)、訂單生成一整串流程。test(用戶購(gòu)買商品后訂單狀態(tài)為待支付, async ({ page }) { // 登錄這里直接調(diào)用接口造數(shù)據(jù)不走UI const phone 13800000001; await page.request.post(/api/auth/login, { data: { phone, password: Test12345 }, }); // 進(jìn)入首頁(yè)搜索商品 await page.goto(/); await page.getByPlaceholder(搜索商品).fill(無(wú)線耳機(jī)); await page.keyboard.press(Enter); // 第一個(gè)搜索結(jié)果點(diǎn)擊進(jìn)入詳情 const firstItem page.locator(.product-list-item).first(); await firstItem.click(); // 詳情頁(yè)加購(gòu) await page.getByRole(button, { name: 加入購(gòu)物車 }).click(); // 去購(gòu)物車頁(yè)結(jié)算 await page.goto(/cart); await expect(page.getByText(無(wú)線耳機(jī))).toBeVisible(); await page.getByRole(button, { name: 去結(jié)算 }).click(); // 結(jié)算頁(yè)確認(rèn)訂單 await page.getByRole(button, { name: 提交訂單 }).click(); // 跳轉(zhuǎn)支付頁(yè)驗(yàn)證訂單號(hào)存在 await expect(page).toHaveURL(/\/payment/); const orderNo await page.locator(.order-no).innerText(); expect(orderNo.length).toBeGreaterThan(0); });這條用例我特意把登錄前置到api層理由很簡(jiǎn)單登錄本身不是這條用例的測(cè)試目標(biāo)下單才是。如果讓每條下單用例都先走一遍UI登錄不但拖慢執(zhí)行時(shí)間還會(huì)因?yàn)榈卿浤K的偶發(fā)問(wèn)題污染其他模塊的測(cè)試結(jié)果。e2e的粒度要遵循只測(cè)這條鏈路應(yīng)該測(cè)的東西這個(gè)原則。4.3 踩過(guò)的坑選擇器、等待和斷言時(shí)機(jī)寫(xiě)e2e必然會(huì)遇到三個(gè)經(jīng)典問(wèn)題。第一個(gè)是選擇器不穩(wěn)定。我剛才一直強(qiáng)調(diào)語(yǔ)義化定位器但這還不夠。很多現(xiàn)代前端框架比如Vue、React渲染是異步的數(shù)據(jù)加載中頁(yè)面先顯示骨架屏數(shù)據(jù)到了之后才渲染真實(shí)內(nèi)容。如果在骨架屏階段就去定位元素大概率會(huì)失敗。Playwright的自動(dòng)等待機(jī)制解決了一部分問(wèn)題但仍要養(yǎng)成習(xí)慣關(guān)鍵交互前先斷言前置條件比如等加載完成標(biāo)識(shí)出現(xiàn)再點(diǎn)擊按鈕。第二個(gè)是等待策略。不要用硬編碼的sleep比如page.waitForTimeout(3000)。這類寫(xiě)法是flaky用例的最大源頭——這3秒在網(wǎng)絡(luò)快的時(shí)候是浪費(fèi)在網(wǎng)絡(luò)慢的時(shí)候還不夠。正確做法是等待某個(gè)期望狀態(tài)出現(xiàn)Playwright里就是await expect(locator).toBeVisible()這類斷言式等待它會(huì)在元素滿足條件時(shí)立刻返回不滿足時(shí)一直重試直到超時(shí)。這套機(jī)制比固定等待穩(wěn)得多。第三個(gè)是斷言時(shí)機(jī)。很多新手在頁(yè)面跳轉(zhuǎn)后立刻斷言URL但跳轉(zhuǎn)過(guò)程可能還在路由切換中斷言太早就會(huì)失敗。正確做法是先斷言一個(gè)目標(biāo)頁(yè)面特有的元素再斷言URL。比如跳轉(zhuǎn)支付頁(yè)后先等支付金額這個(gè)元素可見(jiàn)再校驗(yàn)URL里有沒(méi)有payment字段順序別反過(guò)來(lái)。5. 執(zhí)行策略從本地調(diào)試到CI流水線5.1 本地運(yùn)行 Debug 模式不直接跑全量我在本地開(kāi)發(fā)時(shí)很少一上來(lái)就跑全量測(cè)試那樣效率極低。Playwright提供了headed模式和調(diào)試模式我會(huì)先用--headed跑一條單用例肉眼確認(rèn)頁(yè)面行為對(duì)得上預(yù)期。如果中途出問(wèn)題可以打開(kāi)trace viewer回放每一步操作和頁(yè)面截圖定位是選擇器寫(xiě)錯(cuò)還是頁(yè)面邏輯有變化。調(diào)試完之后再切回headless模式跑全量回歸。實(shí)際使用中trace這項(xiàng)功能特別值得開(kāi)。它會(huì)在測(cè)試失敗時(shí)自動(dòng)記錄一段執(zhí)行軌跡包含網(wǎng)絡(luò)請(qǐng)求、DOM快照、控制臺(tái)日志、鼠標(biāo)鍵盤(pán)事件。排查線上環(huán)境復(fù)現(xiàn)不了的問(wèn)題靠它基本能一次定位。5.2 CI里怎么跑e2e持續(xù)集成中跑e2e最怕兩件事環(huán)境不一致和并發(fā)沖突。我見(jiàn)過(guò)太多項(xiàng)目在本地跑得干干凈凈一上CI就各種失敗十有八九是環(huán)境差異導(dǎo)致的。我的做法是在CI里用容器來(lái)跑測(cè)試保證每次跑的瀏覽器版本、Node版本、依賴版本完全一致。GitHub Actions里可以這樣配置name: e2e-tests on: push: branches: [main] pull_request: jobs: e2e: runs-on: ubuntu-latest services: mysql: image: mysql:8.0 env: MYSQL_ROOT_PASSWORD: root ports: [3306:3306] steps: - uses: actions/checkoutv3 - uses: actions/setup-nodev3 with: node-version: 18 - run: npm ci - run: npx playwright install --with-deps - run: npx playwright test這個(gè)配置里把數(shù)據(jù)庫(kù)也作為服務(wù)一起起在CI里測(cè)試環(huán)境就能完整自包含不需要依賴外部環(huán)境。并發(fā)執(zhí)行方面Playwright默認(rèn)是跑在多個(gè)worker里的可以同時(shí)跑多個(gè)用例文件。但要特別注意多個(gè)worker同時(shí)操作同一個(gè)測(cè)試環(huán)境如果環(huán)境有共享數(shù)據(jù)就會(huì)產(chǎn)生互相干擾。比如兩個(gè)用例同時(shí)下單庫(kù)存數(shù)可能被兩個(gè)用例同時(shí)扣減最后斷言的口徑就亂了。我的方案是盡量讓每個(gè)用例的數(shù)據(jù)互相獨(dú)立如果實(shí)在沒(méi)辦法獨(dú)立就在playwright.config里把用例串行執(zhí)行export default defineConfig({ workers: process.env.CI ? 2 : 1, fullyParallel: false, });5.3 報(bào)告和失敗通知測(cè)試跑完報(bào)告必須讓人一眼看出哪破了、破在哪。Playwright默認(rèn)生成HTML報(bào)告包含每個(gè)用例的耗時(shí)、狀態(tài)、失敗截圖、trace回放入口。我會(huì)在CI里把報(bào)告上傳為artifact每次構(gòu)建完都能直接查看。失敗通知我用的是定時(shí)任務(wù)方式CI跑完如果非零退出就把結(jié)果推到團(tuán)隊(duì)的IM群里。這一步的核心價(jià)值在于快速響應(yīng)e2e掛了往往意味著主干鏈路有問(wèn)題早一分鐘知道就少一批受影響的用戶。6. 常見(jiàn)問(wèn)題與排查技巧實(shí)錄6.1 flaky測(cè)試的三大來(lái)源和解決思路flaky測(cè)試就是那種這次跑過(guò)、下次跑掛、重跑又過(guò)了的用例。它比穩(wěn)定的失敗更讓人頭疼因?yàn)槟悴淮_定是自己代碼的問(wèn)題、測(cè)試的問(wèn)題還是環(huán)境的問(wèn)題。歸納下來(lái)98%的flaky來(lái)自下面三個(gè)地方來(lái)源典型表現(xiàn)解決方向異步渲染競(jìng)態(tài)頁(yè)面還沒(méi)渲染完就去點(diǎn)按鈕用斷言式等待替代固定sleep數(shù)據(jù)污染上一個(gè)用例殘留數(shù)據(jù)影響下一個(gè)每個(gè)用例獨(dú)立數(shù)據(jù)teardown清理環(huán)境抖動(dòng)網(wǎng)絡(luò)慢、第三方接口超時(shí)增加重試機(jī)制關(guān)鍵接口mock重試機(jī)制我建議謹(jǐn)慎使用。在CI里配置retries: 1是合理的超過(guò)3次重試就有問(wèn)題了——它不是幫你解決問(wèn)題而是幫你掩蓋問(wèn)題。重試通過(guò)之后沒(méi)有人為這個(gè)flaky根因負(fù)責(zé)它就會(huì)一直潛伏下去。6.2 定位失敗用例的標(biāo)準(zhǔn)排查流程遇到用例失敗了我現(xiàn)在的排查流程基本固定分享出來(lái)給大家參考。第一步看失敗截圖不要急著猜。Playwright失敗時(shí)會(huì)自動(dòng)截圖先看截圖里頁(yè)面是什么狀態(tài)——是空白頁(yè)、是彈了報(bào)錯(cuò)、還是停留在上一步?jīng)]跳轉(zhuǎn)。這一眼能過(guò)濾掉一半的問(wèn)題。第二步看trace。如果截圖看不出原因打開(kāi)trace看操作回放重點(diǎn)看失敗前最后幾步的DOM狀態(tài)和網(wǎng)絡(luò)請(qǐng)求。如果某個(gè)接口返回了500那就是后端問(wèn)題如果接口正常但斷言失敗那就是前端渲染問(wèn)題。第三步看執(zhí)行日志??刂婆_(tái)的報(bào)錯(cuò)信息有時(shí)候會(huì)直接給出線索比如Failed to fetch說(shuō)明網(wǎng)絡(luò)層有問(wèn)題Cannot read properties of undefined說(shuō)明前端JS異常。這三步走完90%以上的問(wèn)題都能定位到具體層級(jí)。我強(qiáng)烈建議大家養(yǎng)成這個(gè)習(xí)慣而不是一看到失敗就重跑一遍——重跑一百遍也只能碰到運(yùn)氣好的時(shí)候通過(guò)真正的問(wèn)題始終沒(méi)有暴露。6.3 前端點(diǎn)擊無(wú)效的經(jīng)典案例復(fù)盤(pán)有一個(gè)問(wèn)題我想單獨(dú)拿出來(lái)說(shuō)因?yàn)閹缀趺總€(gè)團(tuán)隊(duì)都會(huì)遇到按鈕明明存在點(diǎn)擊了卻沒(méi)有反應(yīng)。這個(gè)問(wèn)題的根源往往是元素被某個(gè)透明遮罩層擋著或者元素看起來(lái)在頁(yè)面上、但被判定為不可點(diǎn)擊。Playwright的click會(huì)自動(dòng)檢查元素是否接收事件如果檢測(cè)到遮罩會(huì)把click攔截就會(huì)報(bào)element is not receiving events。我踩過(guò)最深的一次坑是在一個(gè)彈窗組件里彈窗關(guān)閉按鈕點(diǎn)擊之后關(guān)閉動(dòng)畫(huà)還在執(zhí)行此時(shí)頁(yè)面上殘留一層透明的遮罩層再點(diǎn)其他按鈕就會(huì)被攔截。排查了很久才發(fā)現(xiàn)是動(dòng)畫(huà)時(shí)長(zhǎng)的問(wèn)題。解決方案很土但很有效點(diǎn)擊之前先斷言遮罩層已經(jīng)消失。await page.locator(.modal-mask).waitFor({ state: hidden });這一行加下去問(wèn)題沒(méi)有再出現(xiàn)過(guò)。這類問(wèn)題提醒我一點(diǎn)e2e測(cè)試不只驗(yàn)證業(yè)務(wù)功能它還在驗(yàn)證用戶體驗(yàn)的真實(shí)反饋。動(dòng)畫(huà)未結(jié)束、按鈕變灰、加載中狀態(tài)這些在真實(shí)用戶眼里都是點(diǎn)不了的現(xiàn)象。測(cè)試把這些問(wèn)題暴露出來(lái)對(duì)業(yè)務(wù)是好事。7. 一些經(jīng)驗(yàn)之外的個(gè)人體會(huì)做了幾年e2e之后我越來(lái)越覺(jué)得它不是一個(gè)純技術(shù)工作。寫(xiě)用例的時(shí)候要想業(yè)務(wù)是怎樣的買商品要走多少步用戶什么時(shí)候會(huì)退出系統(tǒng)提示應(yīng)該出現(xiàn)在哪里排查問(wèn)題的時(shí)候要判斷是自己代碼還是前端邏輯還是后端服務(wù)。它逼著人從代碼能不能跑往系統(tǒng)能不能用的方向思考。所以如果你問(wèn)我e2e測(cè)試框架里哪個(gè)功能最值得投入時(shí)間學(xué)習(xí)我的答案不是選擇器、不是斷言API、不是并行執(zhí)行而是讀懂一條業(yè)務(wù)鏈路的能力。工具只是實(shí)現(xiàn)手段真正決定e2e項(xiàng)目?jī)r(jià)值的是你對(duì)業(yè)務(wù)的拆解能力。把一條業(yè)務(wù)鏈路拆清楚哪里是核心、哪里是分支、哪里可以妥協(xié)比掌握任何框架的細(xì)節(jié)都重要。最后分享一個(gè)實(shí)用小技巧e2e用例命名不要用模塊名要用用戶故事。比如用戶可以用優(yōu)惠券抵扣訂單金額就比coupon_order_test更容易讓人理解這條用例為什么存在。多人協(xié)作的時(shí)候其他同事看到用例名就知道這個(gè)測(cè)試在整個(gè)系統(tǒng)里保護(hù)的是什么。這個(gè)習(xí)慣的成本幾乎為零收益卻能持續(xù)很久。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
920日本午夜免费| 草B在线| 精品久| 十八禁黄色成人网站观看| 在线视频免费播放一区| 91香蕉国产尤物视频| 久久蜜色情在线视频xxx免费观看| 五月色网| 无套内射人妻在线播放| 久久大黄片| 国产丁香精品露脸视频| 2019亚洲男人天堂| 九九九影院| 欧美在线官网| 婷婷国产精品九区| 黄色AV影视| 久久久久久久久久8888| 人人操人人操草草| 91在线超高颜值国产| 国产精品扒开腿做爽爽爽视频| 最新日产中文在线麻豆| 五月丁香激情综合网| 久久精品国产精品一区| 国产精品不卡高清在线观看| 亚洲人妻日日日| 香蕉免费一区二区三区不读 | 欧美18 在线观看| 精品天堂| 蜜臀久久99精品久久久| 日韩av无码网站| 天天躁日日躁狠狠躁| 97超级久久| 欧美成人贴图| 久久老熟女| 久久女女| 97超碰久久| 老熟妇乱轮| 亚洲高清视频在线免费观看| 日本性感人妻91| 97Ai亚洲| 国产又黄又爽又刺激久久久久久| 国模无码人体一区二区三| 99久久无码| 欧美18 在线观看| 综合av社区| 国产不良强奸视频免费看| av网站在线看| 国产一级不卡在线观看| 午夜男女爽爽爽在线视频| 一区二区三区精品视频| 嗯嗯啊在线视频| 午夜男人天堂| 亚洲男人的天堂在线看| 天天色综合影视网| 一起草三级AV电影在线观看| 欧美色图97| 999久久久九| 四季AV综合网址| 玖玖蜜臀资源网| 久久久av爱| 成人熟女区| 老鸭窝日丰县女人| 欧美姓爱综合网| 亚洲中文字幕精品一区| 亚洲精品啪视频| 国产一级黄色片在线观看| 免费A V在线| 骚人妻少妇视频| 另类TS人妖一区二区三区| 伊人五月天婷婷| 国内自拍 日韩激情 99| 少妇一级婬片免费放一级a性色.| 自拍视频一区在线观看| 激情综合亚洲| 欧美老妇女内射网址| 欧美在线视频播放| 亚洲91网| 日本五十路熟女一区二区| 九九热在线精品视频| 久九九九九九九热| 亚洲九九九| 国产强上视频在线观看| 69综合网| 校园春色亚洲色图| 色综合九九| 嫩草影院在线观看精品| 久思思热视频在线观看| 天天色播亚洲综合网站| 精品中文日韩字幕视频| 中文字幕精品一区欧美| 五月婷婷色| 夜夜操一区二区| 天天狂操夜夜狂日| 丝袜美腿制服人妻二区中文字幕| 曰本精品久久久| 亚洲色婷婷综合久久一区二区三区| 超碰在线欧美性爱激情| 99视频内射三四| 国产美女激情| 婷婷色色五月天福利| 中文自拍欧美影视| 国产欧美黑人丰满在线| 欧美老妇曰批的视频| 97精品一二区| 超碰97护士| 中文字幕永久在线| 久久有码视频| 自慰白浆在线观看| 日本幼女18+| 日本熟妇精品九九| 人人艹亚洲| 久操高青| 97亚洲精品| 搡老人老9丨女老熟人| 国产亚洲色婷婷久久99精品91葵花宝典 | 无码二级三级| 亚洲熟女av日韩熟女| 国产欧美成人精品| 免费精品人妻一区二区三| 亚洲欧美另类少妇精品| 人人艹亚洲| 色综合中文字幕不卡| 伦理第一页| 99久久网站| 国产黄色小视频网站| 91狠婷| 无码人妻一区二区三区免费九色| 99re3这里只有精品| 久久岛国| 亚洲国产一级中文综合久久天堂在线免费观看| 国产精品扒开腿做爽爽爽视频| 91超级碰| 一起草三级AV电影在线观看 | 91九色丨风韵犹存| 91久精品| 免费啪啪av| 久插不卡| 色伊人91| 午夜欧美精品久久久| 91婷婷| 久久精品—区二区三区内射| 亚洲九九视频| 欧成人精品一区二区三区| 日本黄页视频在线观看| 91老熟女91老女人| 七月丁香婷婷| 午夜男人一级A片7777| 极品色社| 综合色久欲| 精品对白久久不卡| 一级片在线观看高清无码| 高潮精品| 粉嫩在线一区二区懂色| 五月久久HDAV| 蜜臀AV午夜精品久| 亚洲av综合色区无码一| 女优免费一区二区永久| 成熟熟女国产精品一区二区| 精品欧美乱码久| AV不卡在线| 美女诱惑1区2区| 成人精品视频| 被窝影院午夜看片无码| 五月天婷婷色色| 人人澡综合涩| 人人操人人摸人| 欧美性Fer办公室秘书| 色噜噜精品一区二区三| 成人片在线播放| 四虎国产精品永久在线囯在线 | 欧美人妻一区二区| 精品无码一区二区| av资源在线观看少妇| 曰韩中文人妻视频| 亚洲一区中文字幕| 玖玖无码超碰| 不卡一区视频| a男人的天堂| 狠狠色婷婷777| 中文字幕一区二区三区高清| 亚洲性爱电影| 日韩免费在线观看不卡| 97超碰磁| 内射夫妻三片| 日本在线观看网址| 欧美中文字幕精品人妻| 久久色人体 | 精品国产一区二区三区在线播出| 91n欧美| 97超色| 国产乱婷婷精品二区三区| 久久 亚洲 日韩 人妻| 色色色999| 欧美日韩日产免费网站看| 91狠狠综合网| 麻豆AV一区二区天美传媒| 中国熟女网站| 人人爽人人精品乱人伦AV| 玖玖97综合| 99热伊人| 大香蕉啪啪啪| 亚洲中文字幕网| 欧美强奸一区二区诱惑| 成人三一级一片aaa| 日韩成人高清一区二区| 亚洲图片欧美色| 激情在线青青操| 91青青在线| 亚洲丨在线| 91狠狠狠| 干B网| 日本一二三免费久久| 97欧美色综合| 亚洲人妻久久久| 大香蕉日亚洲日本亚大| 欧美 日韩第一性色| 亚洲日韩东京热一区| 亚洲欧美一区二区不卡视频播放 | 色亚洲欧美| 亚洲在线A| 九九五月天| 97色欧洲| 免费岛国一级片| 亚洲97成人在线观看| 少妇人妻好深太紧了vr91| 人人贴人人摸| 亚欧无码在线| 色99在线| 啊啊啊不要啊啊受不了了视频在线 | 免费精品99| 精品久久視頻在线| 综合网欧| 97色操| 啊啊啊啊啊啊在线观看| 久久黄色视频一区二区三区| 精品区国产区一区二区三区| 熟女在线视频| 国产精品一区二区后入| 超碰色美女| 久久春色| 中国少妇XXXX做受| 天天色粽合合合合合合合| 伊人影院在线理论播放| 秋霞鲁丝午夜无码一区二区三| 日韩中文字幕精品一二三事国产精品| 揉揉揉夜夜| 一道α片欧美| 色婷婷电影网| 欧美猛交黑寡妇中文字幕| 91无摭挡| 自拍偷拍草一草| 亚洲一区二区三区欧美日韩| 偷拍 精品另类 凸凹了四区| 欧美亚洲厕所精品偷拍91| 东京男人天堂| 国产精品区在线12p| 成人性爱电影网| 成人熟女视频一区二区三区| 天堂av最新电影网| 性爱综合一区二区| www.超碰| 国偷自 一区| a片 xxxx受爽视频| 亚洲精品aa久久伊人| 91色鬼| 欧美综合网站999| 亚洲高清无毛一区二区| 久久久一级| 亚洲情色综合网| www.色吧5.com| 偷拍伦理视频| 国产路线专区| 亚洲色图综合| 丁香五月天视频| 久久久久921| 国产精品久久aV| 婷婷色中文字幕| 中文一区二区| 亚洲第2页| 欧美性生活内射| 亚洲男人天堂网| 九月婷婷综合| 欧美大的香蕉有线电视视频| 五月丁香婷婷色| 欧美图片色五月天| www国产天美久久久| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 熟女网站最新| 午夜精品久久久99热蜜桃的功能特点| 操日韩第| 嫩草影院永久在线制服丝袜| 久久欲| 999999精品| 亚洲国产精品成人综合| 精品国产一区二区三区av在线资源| 亚洲色图欧美色图制服丝袜| 天天综合网在线观看| 亚洲成人免费电影| 日本 情色 1区2区3区| 久久久999| 尻女朋友一夜| 亚洲第一页第二页激情| 免费AV播放| 日本超碰色精品| 黄骗免费| 欧洲亚洲人妻无码久久三区四区| 激情五月天社区| 超碰97综合网| 大香蕉操久久| 精品女同一区二区三区| 成人性爱视频在线看| 1024手机看片欧美日韩| 国内三级自拍小视频在线观看| 桑老女人九区| 小草精彩毛片| 一线黄色免费性爱片| 青娱乐手机日韩在线视频| 亚洲九九九九| 婷婷六月天| 超碰午夜| 超碰精品人妻狠狠干| 国产福利第一视频| 欧美夜夜草视频| 天美传媒Av在线| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 好好的日:com久久九九| 久久亚洲AV成人精品无码| 亚欧美色图| 91熟女熟妇视频网站| 超碰色综合| 欧美中文狠| 国产在线精品偷| 国产精品人妻无码久久久互動交流| 欧美日韩222| 黄色av片三级三级三级免费看| 少妇精品| 夜夜 中文视频rt| 天天干天天插| 日美免费黄片| 91国产操逼视频| 亚洲欧美日韩中文久久自慰| 超碰三级秋霞| 亚洲二区精品在线观看| 日韩欧美操逼xxx| 97伊人超碰| 裸模AV女优| 五月天色色网站| 性videos欧美熟妇hdx| 91精品操美女| 色网1| 欧美另类色| 亚欧性爱ab| 五码视频在线观看| 思思热国产高清| 91色欧美| 97超碰欧美手机在线| 麻豆乱码久久精| 久久草大香蕉| 日本大香蕉综合网| 欧美日韩激情无码专区| 亚洲高清91| 天天干1区2区在线| 91国产大片| 99成人| 岛国黄色大片网站| ..日韩av毛片精品久久久| 亚洲AV无码乱码| 97色97好| 五月天婷婷色| www.色操逼| 盗摄女人妻在线| Sekablack无码一区| 亚州一区二区| 欧美色另类| 天天干人妻| 丁香五月天堂网| 日人妻视频91| 亚洲日韩美女中文字幕乱| 久久久久久久伊人精品| 中文字幕日韩专区精品系列| 国产精品999aaa| 欧洲精品一级二级精品综合视频综合| 亚洲性综合11| 亚洲综合九| 天天影视网综合少妇| 9+1视频网址| www久久99| 一区三区啪啪| 噜噜在线| 欧洲小说色图视频另类| 午夜福利在线合集| 久久影视二区三区行押| 婷婷8月天青娱乐| 久久久久女教师免费一区| 日韩91网| 久久国产在线一区二区| 日本成人A片免费看| 国产黄片精品在线| 成人av动漫在线观看| 亚洲一区二区性爱电影| 丁香九月激情| 精彩视频日韩| 少妇极品熟妇人妻无码| 97视频www| 天天影视综合色| 91色插| 中文?日韩?免费?精品| 人人人摸人人| 日本人人操人人操| 亚洲少妇色| 午夜福利久久久噜久噜久久综合| 老女人老91妇女老热女| 99re这里只有精品2| 欧美色宗合| 亚洲成人性爱网站在线播放| 8050午夜少妇无码| 国产白嫩精品久久| 91无码人妻| 3P丝袜熟女 色综合| 91综合色噜噜| 精品中文字幕一区二区l - 百度| 婷婷激情四射| 久日综合网| 色区97| 国产日韩精品人妻久久久久色欲网站 | 久艹99| 色妇综合网| 乱伦一区二区三区‘| 超碰人人超在线观看| 久热色情精品| 熟妇无码视频三区| WWW啪啪的com| 大香蕉操久久| yazhouzaixian| 久久性爱视频免费看| 午夜黄色免费在线观看| 亚洲不卡av在线| 日韩BBN| 国产精品久久久久久高清无码免费看| 热九九精品| 国产精品视频| 1769成人国产精品视频| 五月综合视频| 日韩丨制服丨中文|在线| 91视频综合网| AA丁香综合激情| 综合九九| 久久111| 富二代亚洲精品99| 啊啊啊在线看| 日韩中文字幕宗合在线| 国产原创自拍| 久久久九| 亚洲成人免费中文字幕| 久久伊人网视频一区二区三区| 精久久久| 1024人妻熟女一区二区三区| 亚洲Av噜噜一区二区三区妖精| 九久9精品| 久久性爱城| 东北操逼| 综合久久六月久久婷婷| 中文字幕伊人| 91成人精品在线播放| 国产小炒后入式| 人妻色偷色噜| 亚洲熟妇无码一区二区三区| 明星性猛交ⅹxxx乱大交| 五月丁香色综合| 九九九九九九综合| 丁香六月综合激情| 日本不卡一二区| 国内三级自拍小视频在线观看| 一区二区三区色综合| 亚洲伊人a线观看视频| 国产久久视频| 无码一区二区精品视频久久久春药| 艳美熟妇先锋一二三区| 操一操摸一摸| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 亚洲中文人妻色| 91色综合| 中文字幕制服欧美久久一区| 黄色激情电影在线观看| 亚熟hd视频在线| 亚乱色| 一二三四区操操Av| 婷婷五月天av| 色色毛片| 粉嫩久久久久| 丁香五月性爱| 秋霞Av理论一级在线| 激情露脸爱| 欧亚性爱在线视频| 欧美—性—交—色| 欧美精品丝袜久久久中文字幕| 亚洲国产成人精品久久久国产成人一区二区 | 99在线精品视频| 中国人高清www色视频免费| 亚洲日韩av一区二区三区百合| 伊人专区一区二区三区| 色99久草| 欧美|91色综合| 老司机天天操| 婷婷国产精品一区二区| 欧洲乱码一区二区| 久久精视频美日韩在线视频| 大香蕉狠狠爱| 久久精品人妻一区二区| 色色亚洲| 中文字幕精品一区二区精| 午夜操操操| 中文字幕一区 二 区 三 四 五 区日 日 骚| 中国农村熟妇毛片视频| www.人人摸在线视频| 97网址www| 成人性爱av.com| 久久超碰com| 嗯嗯啊好大| 麻豆久久久一区二区| 一级性爱啪啪视频| 青草精品视频-日本久久久久网站| 久草资源欧美在线视频| 这里有精品| 色综合av男人天堂| 国产三级资源在线观看| 最新制服中文第一页| 东京热熟女亚洲视频网站| 色婷婷五月天| www.人人cao| 国产精品探花色| 欧美大片91| 后入人妻无码| 中文无线日韩一区| 亚洲色图国产另类| 北京专精特新企业招聘信息| 99这里都是精品| 久草网站免费在线观看| 极品欧美一区二区三区| 999综合网| 亚洲第一视频 欧美风情 日韩| 日本人妻天堂网站在线播放| 一区二区首页| 亚洲情色1区| 天天色香欲综合网| 五月丁香久久| 国产精品一区二区黄片| 日韩成人精品视频自拍| 曰韩操B| 无码不卡八戒| 欧美自拍偷拍综合图片| 日韩熟女无码| 国产高清视频无码在线| 一级黄色性爱裸体视频| 91操熟女| 亚洲国产精品久久AV| 亚洲综合首页| 日日夜夜摸| 欧美亚洲综合高清在线| 欧美色999| 亚欧色图在线激情| 美女天天干| 欧美日韩国产成人高清| 五月丁香六月综合缴清无码| 精品三级在线专区| 亚洲国产精品无码AV久久久| 中文字幕日韩专区精品系列| 国模无码人体一区二区三| 91人妻人人澡人人爽人人精品| 最新国产精品| 精品国产无码中文| 日本视频在线观看污污污| 日韩有码回春沙龙第一页| www五月| 五月婷婷丁香| xxx亚洲午夜天堂| 精品97精品97| 超碰碰小说97| 人人妻人人澡人人爽人人精品浪潮| 天堂性色| 翔田千里AⅤHD无码| av在线免费一区二区| 日本www操操操| 久久激情视频| 图色综合网| AV中文字幕剧情1区2区3| 精品人妻一区二区蜜桃视频| 精品999一区二区| 日韩强奸av| www.黄色在线| 中文字幕在线24| 丝袜无码a片| 青青草原成人| 国产内射爽爽大片| 岛国视频免费在线观看| 天天综合,91综合永久| 国产精品 午夜福利| 国产一区在线播放| 免费看片黄| 91色亚洲| 97天堂| 国产精品露脸在线观看| 日韩操人| 性色av一区二区| 久久精品噜噜噜成人看免欧美大片| 欧美日韩在线小说 | 青女在线| 国产熟女无套内射| 东京热男人的天堂精品| 久久久噜噜噜久久久| 东京热大香焦| 国产午夜精品理论片一二三区区| 色香色欲天天综合网天天来吧| 超碰调教97| 91精品婷婷国产综合久久| 韩国一级做a久久久久| 被体育老师抱着c到高潮| 日韩精品人妻中文字幕有码午| 一区超碰一区| 国产精品视频麻豆入口| 久久久9品一区二区三区| 久草线上视频免费看| 久久av无码| 久久久艹艹艹| 风韵犹存大大大大香蕉| 强奸乱伦麻豆| 青青草色插素人| 热99这里有精品综合久久| aaaa黄片| 熟女人妻精品一区二区视频| 99热只有这里有精品| 岛国人妻少妇av在线观看| 久久精品—区二区三区内射| 日本黄 R色 成 人网站| 91精品国产日韩欧美综合| 亚洲天堂电影精品一区| 97欧美色| 在线观看黄色电话| 青草园大香蕉| 青娱乐亚洲自拍| 国产熟妇一区二区| 免费观看国产小粉嫩喷水精品午| 欧美亚洲第1页| 欧美性爽xyxOOOO| 日本不卡在线二区三区| 日韩操逼HD| 超碰人妻久久人妻中文97| 中文字幕av亚洲精品| 欧美亚洲综合色| juliaann欧美丝袜办公室| 亚洲精品无码久久AV| 精品久久視頻在线| 九九热九九| 日韩在线视频1234| 久久永久无码人妻视频| 超碰激情808| 国产一区二区成人av在线播放| 欧美三级不卡| 后入福利| 蜜乳AV网址| 9.1小视频| 99日韩| 青青草密桃在线播放| 天天看天天综合成人网| 男人午夜天堂| 亚州乱码中文字幕综合久久久| 男女啪啪网站免费视频| 干b在线性社区| 日本免费一级AAA大片器| 天堂网 主播 亚洲| 99精品久久久久久久婷婷蜜桃| 日韩97超碰| 国产精品天美传媒| 岛国福利在线精品播放| 久久精品99久久久久久| 久操热线| 欧美亚洲自拍另类人妻| 亚洲无限观看| 婷婷色中文字幕| 国产91福利小视频在线观看| 欧美激情久| 1024人妻| 国产综合在线视频网站| 欧美女同在线| 91美女视屏| 欧美另类精品xxxx| 亚洲丝袜少妇在线| 欧美性爱一内片一区二区三区| 操逼天美3区| 欧美日韩国产精品久久色婷婷| 91人妻爽爽人人做人人澡| 亚洲日韩视频二区| 超碰在线日韩一区| 78久久久| www.色婷婷| 伊人五月天婷婷| 中文字幕在线播放2中文字幕在线观看2| 人人操人人操人妻人| 爆乳免费黄网站| 欧美劲爆视频一区二区| WWW.操逼.COM| 精品国产乱码久久久久久久久久毛片| 中文字幕丝袜美腿| 国产伦精品一区二区三区在线观| 国产在线观看一区二区三区| 久久久精品九| 亚洲情色在线| 精品妇女一区二区三区| 日韩丝袜二区| 精品成人无码| 欧美精品三级黄片| 国语精品对白| 国产人妻精品一区二区三区秋霞 | 日逼国产| ji熟女.com| 91亚洲综合| 极品人妻少妇综合| 天美一区在线| 大香蕉欧美国产日韩高潮| 麻豆黄色五月天| 成人情色一区二区| 探花精品视频| 欧美日韩香蕉| 操逼免费视频无码国产| 日本韩国国产精品一区| 欧美精品97| 欧美色图20P| 欧美日韩国产色五月综合在线| 97超碰色屌| 熟妇一区二区三区| 怡红院视频在线| 青青草中文-久久青草精品一区二区三| 欧美操逼熟女| 天天操夜夜嗨| 国产AV久久野战精品| 午夜超爽| 欧美激情另类一区二区| 日本色色视频网站| 乱伦a片视频| 国产一区二区三区免费视频在性观看| 精品免费视频国产一区| 女性91网站| 插入逼91| 美女视频尤物网在线看| av在线播放国产一区| 搞中出久久| 干干干天天| av婷婷色婷婷色六月| 日韩欧美亚洲一区二区三区影院| 在线视频免费播放一区| 性爱乱伦网址| 国产福利第一视频| 97色色网| 九月AV| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 亚洲日韩人妻中文字幕一区| 亚洲婷婷综合网| 欧美偷拍区| AV污污污污| 色综合久久888| 日本有码久久| 日韩成人午夜精品久久高潮| 伦在线97| 熟妇人妻一二三区免费| 97精品免费视频网站| 亚洲精品国语在线播放| 秋霞网—男女啪啪亚洲免费体验区 | 香蕉黄色一级视频| 综合久久六月久久婷婷| 婷婷激情综合网| 久久久久久久一级黄色打同平台| 污到发麻的视频 国产| 欧美亚洲AN| 久久久三区二区一区| 男人的午夜天堂| 精品毛片av一区二区| 亚洲精品a人片在线观看视| 麻豆国产尤物AV| 精品无码一二三四区| 妇女乱色二区| 强奸乱伦 亚洲一区| 国产乱人伦AVA麻豆软件.| 色婷婷丁香五月| 樱花草社区www中国| 欧美精品亚洲精品日韩传电影| 亚洲97在线| 亚洲精品官网在线观看| 久久久98网站免费视频| 大香蕉欧美国产日韩高潮| 欧美性高潮| A 在线网址| 午夜精品久久久久久久男人的天堂| 欧美色图成人网一区二区| 蜜臀中文无码午夜| 91久久免费视频互動交流| 婷婷色影院| 九九九久久久久| 国产精品9999| 偷窥自拍A片| 偷拍亚洲高清图片| 男人的天堂1024| 人人人人插| 色老汉色| 91成人无码| 亚洲色图91| 91伊人久| 天天操女人| 日日躁天天躁狠狠躁| 日本性爱欧美性爱| 精品四五区| 上床啊啊啊| 中国一区二区亚洲人妻| 99综合自拍| 超碰色综合| 欧美色婷婷| 呻吟 欧美 日本 中出| 日日操免费视频| 久久久久骚| 欧美色视| 香蕉久久国产AV一区二区| 91超碰在线播放| 豆花视频操逼网址| 国产精品肉丝自拍| 97爱亚洲| 大香蕉伊人色偷偷在线| 天天碰久久入| 成人性爱全视频观看| 久久骚少妇| 综合国产影视三级| 嗯啊不要啊啊在线观看视频| 色噜噜国产精品视频一区二区| 久久9久9久99久9久9| 91国产精品熟女| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 老熟女综合网| 伦理第一页| 国产精品一区午夜福利| 综合 青草 伊久久 影院 综合| 97色碰| 亚洲精品一区二区三区新线路| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 92性色国产午夜福利在线661| 九九在线视频| 国产精品乱码久久| 亚洲激情网一二三四区| 91高潮| 精品久久在线区一区| 色吧5亚洲| 久久综合中文国产| 亚洲乱色熟女一区| 成人黄页| 日本韩欧美在线播放a| 美女爽到高潮91| 久久亚洲不卡| 亚洲一区中文精品| 91五月天| 久久精品三级影视| 亚洲欧美骚| 天天操女人| 欧美日韩大黄片| 亚洲、日韩、综合、另类| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 噜噜噜在线视频| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 少妇精品| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 97精品视频| 欧美成人综合| 激情看片网站| 91精品人| 人妻免费观看| 狼人久草| 美女操逼A A| 97在线亚洲| 亚洲熟妇乱女区二区三区| 免费看国产曰批40分钟怎么下载| 蜜臀在线看片| 97玖玖人妻| 国产精品岛国片在线观看| 色欧洲| 日日噜噜夜夜久久亚洲一区二区| 国产精品亚洲美女久久久久| 色网色网色网色网色网色| 亚洲男人的天堂在线看| 亚洲激情综合| 99国产精品视频尤物| 欧美大的香蕉有线电视视频| 精产国品一区二三产品| 91呆哥人妻| 日本在线观看网址| 欧美后入式| 伊人久久大香线综合无码| 大香蕉丝袜一级片| 久久黄片国产一区二区| 东北女人高潮视频| 天天超级碰碰碰| 精品国产一区二区久久| 亚洲经典啪啪| 人人潮人人摸| 免费成人自拍视频在线| 啊啊啊啊,啊啊好多水| 亚洲色9| 美女诱惑爱爱| 亚洲操人| 日韩精品人妻一| 91欧美少妇| 自拍丝袜美腿人妻| julia高潮后不停追击中出| 国产亚洲精品av一区| 亚洲国产精品无码AV久久| 久久这里只精品| 色香综合天天影视综合 | 蜜桃久久久久久久久久久久| 天天综合网国产| 啪啪啪综合网| 久久香蕉综合一本到3atv| 国产美女裸体秘 永久无遮挡| 欧美中文综合| 水滴偷拍| 国产9熟妇视频网站| 蜜桃精品一区二区三区久在线| 4141514逼喷水三级片| 91美女中出| 日韩成人大片在线观看| 蜜乳性色无码专日粉嫩骚逼AV| 澳门黄片一香蕉视频| 久久久亚洲| 亚洲欧美不卡线| 欧美翘臀视频网站一区二区三区| 精品免费成人久久| 国偷自 一区| 亚洲天堂资源| 九一性生活免费视频| 欧美 日韩 婷婷 五月| 人妻社区男人天堂| 欧美情色男人的天堂| 最新亚洲风情电影| 欧色综合| 少妇极品熟妇人妻无码| 久久国产对白激情浪潮| 中文97国产| 久久久久ab| 久久熟女久| 久久是精品| 欧美视频一区二区三区| 在线亚洲欧美| 色婷婷综合网站| 黄片www.| 日韩成人综合网| 亚洲成人网站在线观看| 亚洲AV成人无码一二三久久| 亚州男人天堂| 欧美亚洲综合高清在线| 精品人妻一区二区三区在| 黑人娇小av在线播放 | 国产熟女乱论| 亚洲一区二区三区欧美日韩| 一级性爱aaaa| 亚洲综合五月天| 91亚洲精品青草| 熟女天天干| 91精产一区二区三区| 亚洲,欧美,综合网| 91人人操| 狠狠色伊人亚洲综合网站色| 成人麻豆av电影网站| 五月天激情小说| 志村玲子视频一区二区| 人妻精品综合中文字幕在线 | 看一级特黄a大一片| 精品久久人妻成人网| 天天日夜夜| 東南亚性呦成人伦理资源在线视频| 欧美91久久久久| 中文字幕日韩情色| 熟女人妻一区二区三区| 色视频蜜乳| 操逼操网| 性色一线| 日日干夜夜欢| 国产精品久久久久久久久久久久久久吹| 天天综合网网欲色| 亚洲精品无码久久AV| 激情五月天综合网| 99操| 国产在线激情| 国产美女口爆吞精视频| 在线观看黄色电话| 91暧暧| 校园春色美腿丝袜| 国产第12页| 色99在线| 91丝袜熟女| 亚州男人天堂| 国产剧情AV不卡在线观看| 大鸡吧尹人在线| 国产又长又大又粗的视频| 久久伊人最新网址视频| 性做久久久久久久| 爱欲AV| 天堂综合网| 另类小色呦| 综合网久久| 97超碰久久| 操逼网站地址| 久草毛片电影怡| 天天综合~91| 最新国产精品久久精品| 国产精品久久久777| 97视频免费播放| 东亚亚洲无码高清| 91l欧美在线| 人妻一区二区三区四区视频| 十八禁啪啦拍视频无遮挡| 91五月天| av在线播放国产一区| 懂色AV一区二区三区| 九九这里只有精品| 无码精品久久久天天影视| 无码一区二区三区四区五区六区七区八区九区十区视频 | 熟妇色99| 成人国产精品三级A片| 夜夜骑操视频| 秋霞网—男女啪啪亚洲免费体验区| 欧苏综合色综合| 国产激情在线| 中文字幕在线免费观看视频| 欧美第二页午夜| 99精品视频在线观看免费| 精品人妻视频一区二区三区蜜桃视频| 欧美日韩中文视频播放| 婷婷在线播放| 精品人妻一区二区三区鲁大师| 日韩国产中文字幕| 人妻精品一区一区三区蜜桃91| 亚洲精品xxx| 亚洲欧美国产va在线| 国产亚洲中文不卡二区| 天天干人妻| 九九久久一区二区伦理| 色妇91| 每日更新AV| 91麻豆天美国产欧美高潮| 日韩AV熟女乱伦| 色噜噜人妻av中文字幕| 国产亚洲精品自在线亚洲情侣| 国产精品禁久久久精品| 亚洲色综合| 麻豆视频一区二区| 99热亚洲天堂| 妇女性内射冈站HDWWWCOM| 欧美色图私拍91| 国产绿奴视频在线观看| 久久精品人妻一区二区| 欧美国产伊人久久久久| 凹凸 69堂 在线播放| 亚洲五月丁香花狠狠干一区二区三区| 久久粉色| 和协无码影院| 国产亚洲女v在线观看| 亚洲天天影视色综合| 天天色综亚洲91污| 欧美亚洲天天| 九久9热| 日本免费中文字幕在线| 久久影视二区三区行押| 激情五月婷婷综合| 97香蕉网| 动漫av中文| 激情综合亚洲| 久久久久久久强迫| 欧美色综合图片| 欧美日韩91| 日本成人免费一区二区三区| 99热这里只有是精品10| 超碰人人色| 色哟哟AⅤ| 欧美性Fer办公室秘书| 日韩欧美女优电影| 岛国色情视频在线观看| 久久久久久人| 天操天操夜操夜月操月年年操| 奇米狠999| 欧洲精品一级二级精品综合视频综合| 91在线限制级| 日本在线播放不卡一区| 天天综合网91| 91视频综合在线| 9/A片| α√在线| 日韩性爱一级片| 亚洲做性| 超碰人妻中文在线| 久碰视频| 亚洲成a人片在线观看中文!!!| 国产精品播放| 少妇色综合| 男人下部插入女人下部| 999国产精品999| 久久日韩精品一区二区| 精品少妇高潮久久| 欧美在线大香蕉| 亚洲欧美激情另类色图| 亚洲少妇综合在线播放| 精品久久久av无码免费| 久久大香蕉97| 国产精品熟妇一区二区三| 精品久久久久,69国产成人精| 亚洲欧洲日韩国产自在线| 欧亚揄拍偷拍精品视频| 免费A V在线| 日韩操逼HD| 囯产精品久久久久久久久久梁医生 | 日韩天天综合| 啊啊啊啊啊在线视频| 婷婷综合久久| 亚洲 一区二区 自拍| yaouchengrenav| 热热色91| 欧日韩一二三f区| 日韩精品电影| 97国产亚洲中文在线| 亚洲 欧美 91| 影音先锋国产精品| 操逼操网| 超碰成人公开| 欧美激情视频在线一区| 超碰色综合| 99夜夜操| 日本道人妻久久久在线不卡色视频| 欧洲亚洲人人爽爽视频| 天天欧美| 天天影视之亚洲综合网| 久久日本熟妇熟色高清| 超碰性爱97| 色噜噜国产在线| 99久久com免费视频′| 95人妻爽爽人人做人人澡| 欧美黄色片AAAAA| 青青操狠狠撩| 一级啊性爱在线视频| 中国一区二区亚洲人妻| 亚乱色| 久久av成人无码免费| 亚洲啪啪视频一区二区| 日本免费一级AAA大片器| 亚洲字幕一区二区| 国产精品黄色三级av| 国产成人一级av88| av在线免费一区二区| 一区二区三区探花在线观看| 干干干天天| 91操人| 超碰在线成人| 中文字幕一区av| 麻豆黄色五月天| 久久夜色一区二区| 亚洲AV无码久久精品蜜桃小说| 性性久久| 国产成人啪一区二区|