国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

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

e2e端到端測試實(shí)戰(zhàn):從設(shè)計(jì)思路到profile1配置化落地

e2e端到端測試實(shí)戰(zhàn):從設(shè)計(jì)思路到profile1配置化落地 1. 從“e2e”這個(gè)詞說起它到底指什么第一次看到“e2e”這三個(gè)字符很多人會(huì)愣一下。它既不像某個(gè)具體產(chǎn)品的名字也不像某個(gè)技術(shù)框架的縮寫更像是某種圈內(nèi)人才懂的暗號(hào)。其實(shí) e2e 是 end-to-end 的縮寫中文一般叫“端到端”。這個(gè)詞在不同圈子里含義差別很大但核心意思是一致的從起點(diǎn)到終點(diǎn)把整條鏈路完整地跑一遍中間不省略、不跳過、不模擬。舉個(gè)生活化的例子。你去餐廳吃飯點(diǎn)了一道宮保雞丁。如果只測試“廚房能不能把雞丁炒熟”那叫單元測試如果測試“服務(wù)員能不能把菜從廚房端到你的桌上”那叫集成測試而 e2e 測試是你走進(jìn)餐廳、看菜單、點(diǎn)單、廚房做菜、服務(wù)員上菜、你吃完買單、走出餐廳——整條鏈路全部走一遍任何一個(gè)環(huán)節(jié)卡住這頓飯就算失敗。這就是端到端的本質(zhì)以最終用戶的視角驗(yàn)證完整流程是否走得通。那為什么“e2e”會(huì)成為一個(gè)熱搜詞因?yàn)檫@兩年軟件交付節(jié)奏越來越快微服務(wù)、前后端分離、多端適配讓系統(tǒng)變得越來越碎。碎到一定程度單元測試全綠、集成測試全過用戶一用還是崩。于是大家重新意識(shí)到必須有人站在最外層把整條鏈路串起來跑一遍。e2e 測試、e2e 加密、e2e 流程管理這些概念集中爆發(fā)本質(zhì)上都是同一個(gè)訴求——?jiǎng)e只看局部要看全程。而“e2e profile1”這個(gè)熱詞則把 e2e 推向了更具體的場景。profile 在工程語境里通常指“配置檔案”或“參數(shù)集”profile1 往往意味著某個(gè)默認(rèn)的、第一套的、基礎(chǔ)檔的配置方案。合在一起理解e2e profile1 大概率指向的是在端到端場景下使用第一套標(biāo)準(zhǔn)配置來完成某件事。它可能出現(xiàn)在測試框架的配置文件里可能出現(xiàn)在加密協(xié)議的參數(shù)協(xié)商中也可能出現(xiàn)在某個(gè)自動(dòng)化流水線的預(yù)設(shè)模板中。不管具體落在哪個(gè)領(lǐng)域它的出現(xiàn)都說明一件事e2e 已經(jīng)從“理念”下沉到了“可配置、可復(fù)用、可標(biāo)準(zhǔn)化”的工程實(shí)踐層面。這篇文章面向的讀者很明確如果你正在做自動(dòng)化測試、正在搭 CI/CD 流水線、正在處理跨系統(tǒng)數(shù)據(jù)一致性或者你只是單純被“e2e”這個(gè)詞反復(fù)刷屏想搞明白它到底怎么回事那接下來的內(nèi)容就是為你準(zhǔn)備的。我會(huì)從設(shè)計(jì)思路、核心細(xì)節(jié)、實(shí)操過程、問題排查四個(gè)維度把 e2e 這件事拆開揉碎講清楚并且重點(diǎn)解釋 profile1 這類配置化思路在其中的價(jià)值。文章里會(huì)穿插大量我實(shí)際踩過的坑和總結(jié)出來的技巧你可以直接抄作業(yè)也可以根據(jù)自己項(xiàng)目的情況做調(diào)整。2. e2e 方案的整體設(shè)計(jì)與思路拆解2.1 為什么 e2e 不能等同于“把單元測試串起來”很多人第一次接觸 e2e 時(shí)會(huì)有一個(gè)很自然的誤解既然 e2e 是測整條鏈路那我把所有單元測試按順序跑一遍不就等于 e2e 了嗎這個(gè)想法聽起來合理實(shí)際上完全跑偏。單元測試的視角是“函數(shù)級(jí)”的它關(guān)心的是給定輸入 A函數(shù) f 是否返回輸出 B。它不關(guān)心這個(gè)函數(shù)被誰調(diào)用、在什么環(huán)境下調(diào)用、調(diào)用前系統(tǒng)處于什么狀態(tài)。而 e2e 的視角是“用戶級(jí)”的它關(guān)心的是一個(gè)真實(shí)用戶從進(jìn)入系統(tǒng)到完成目標(biāo)中間經(jīng)歷的所有環(huán)節(jié)是否協(xié)同工作。這兩者的關(guān)注點(diǎn)根本不在一個(gè)層面上。我舉個(gè)實(shí)際項(xiàng)目中的例子。之前做過一個(gè)電商下單流程單元測試覆蓋了庫存扣減、訂單創(chuàng)建、支付回調(diào)、消息通知四個(gè)模塊每個(gè)模塊單獨(dú)跑都是綠的。但 e2e 一跑就掛原因是什么庫存扣減在事務(wù)提交前發(fā)了消息訂單創(chuàng)建在另一個(gè)事務(wù)里消費(fèi)這條消息結(jié)果消息先到了、訂單還沒落庫消費(fèi)端找不到訂單直接報(bào)錯(cuò)。這個(gè)問題單元測試永遠(yuǎn)發(fā)現(xiàn)不了因?yàn)樗辉凇澳K之間的時(shí)序和事務(wù)邊界”上才會(huì)暴露。e2e 的價(jià)值恰恰就在這里它驗(yàn)證的不是某個(gè)模塊對(duì)不對(duì)而是模塊之間的協(xié)作在真實(shí)時(shí)序下對(duì)不對(duì)。所以設(shè)計(jì) e2e 方案時(shí)第一個(gè)要確立的原則就是不要試圖用單元測試的思維去做 e2e。e2e 的用例應(yīng)該從用戶故事出發(fā)而不是從函數(shù)列表出發(fā)。一個(gè)典型的 e2e 用例應(yīng)該長這樣“用戶登錄后搜索商品、加入購物車、提交訂單、完成支付、收到通知”而不是“測試庫存服務(wù)接口返回 200”。2.2 分層設(shè)計(jì)把 e2e 拆成可管理的幾層e2e 最大的痛點(diǎn)是“重”。啟動(dòng)慢、執(zhí)行慢、失敗后定位難。如果所有 e2e 用例都從瀏覽器點(diǎn)擊開始、到數(shù)據(jù)庫校驗(yàn)結(jié)束那維護(hù)成本會(huì)高到讓人想放棄。所以實(shí)際工程中e2e 一定要分層。我通常會(huì)把 e2e 分成三層來設(shè)計(jì)。第一層是API 級(jí) e2e繞過 UI直接通過接口調(diào)用來串聯(lián)完整業(yè)務(wù)流。這一層跑得快、穩(wěn)定性高適合覆蓋大部分核心鏈路。第二層是UI 級(jí) e2e通過瀏覽器或客戶端真實(shí)操作來驗(yàn)證關(guān)鍵用戶路徑。這一層跑得慢但最接近真實(shí)用戶適合覆蓋登錄、下單、支付這類不能出錯(cuò)的黃金路徑。第三層是數(shù)據(jù)級(jí) e2e關(guān)注數(shù)據(jù)從產(chǎn)生到消費(fèi)的完整流轉(zhuǎn)比如一條消息從生產(chǎn)者發(fā)出、經(jīng)過隊(duì)列、被消費(fèi)者處理、最終落庫整條鏈路的數(shù)據(jù)一致性。這三層的比例大概是 7:2:1。API 級(jí)占大頭UI 級(jí)只覆蓋最關(guān)鍵的幾條路徑數(shù)據(jù)級(jí)針對(duì)特定場景補(bǔ)充。這樣設(shè)計(jì)的好處是日?;貧w跑 API 級(jí)幾分鐘出結(jié)果發(fā)版前跑 UI 級(jí)確認(rèn)用戶路徑?jīng)]問題數(shù)據(jù)級(jí)按需觸發(fā)不占用常規(guī)流水線時(shí)間。2.3 profile1 這類配置化思路為什么重要現(xiàn)在回到熱詞里的“profile1”。在 e2e 實(shí)踐中profile 的本質(zhì)是把環(huán)境差異和參數(shù)差異從代碼里抽出來變成可切換的配置。為什么這件事重要因?yàn)?e2e 天然要面對(duì)多環(huán)境本地開發(fā)環(huán)境、測試環(huán)境、預(yù)發(fā)環(huán)境、生產(chǎn)環(huán)境每個(gè)環(huán)境的地址、賬號(hào)、數(shù)據(jù)狀態(tài)都不一樣。如果這些差異硬編碼在用例里那換一個(gè)環(huán)境就要改一堆代碼維護(hù)成本極高。profile1 通常代表“第一套標(biāo)準(zhǔn)配置”它可能包含基礎(chǔ) URL、數(shù)據(jù)庫連接串、測試賬號(hào)、超時(shí)時(shí)間、重試次數(shù)、是否開啟截圖、是否清理數(shù)據(jù)等。有了 profile 機(jī)制同一套 e2e 用例可以在不同環(huán)境之間切換只需要換一個(gè) profile 文件。這聽起來簡單但實(shí)際落地時(shí)有很多細(xì)節(jié)要注意。比如超時(shí)時(shí)間這個(gè)參數(shù)。在本地環(huán)境接口響應(yīng)可能 200ms 就回來了超時(shí)設(shè) 5 秒足夠。但在預(yù)發(fā)環(huán)境因?yàn)榫W(wǎng)絡(luò)鏈路更長、依賴服務(wù)更多同樣的接口可能要 2 秒才返回。如果超時(shí)時(shí)間寫死本地能過、預(yù)發(fā)就掛。有了 profile你可以給預(yù)發(fā)環(huán)境單獨(dú)設(shè) 10 秒超時(shí)。再比如測試賬號(hào)本地環(huán)境可能用 mock 賬號(hào)預(yù)發(fā)環(huán)境必須用真實(shí)測試賬號(hào)這些差異都應(yīng)該在 profile 里體現(xiàn)。我見過很多團(tuán)隊(duì)一開始不做 profile等到環(huán)境多起來之后用例里全是 if-else 判斷當(dāng)前是什么環(huán)境代碼亂得沒法看。所以我的建議是e2e 項(xiàng)目啟動(dòng)的第一天就把 profile 機(jī)制建好。哪怕一開始只有一個(gè)環(huán)境也要留出這個(gè)擴(kuò)展點(diǎn)。3. 核心細(xì)節(jié)解析與實(shí)操要點(diǎn)3.1 用例設(shè)計(jì)從用戶故事到可執(zhí)行腳本e2e 用例的設(shè)計(jì)質(zhì)量直接決定整個(gè)項(xiàng)目的成敗。我見過太多團(tuán)隊(duì)把 e2e 寫成“接口調(diào)用大雜燴”一個(gè)用例里調(diào)了十幾個(gè)接口失敗了根本不知道是哪一步的問題。好的 e2e 用例應(yīng)該具備三個(gè)特征目標(biāo)單一、步驟清晰、斷言明確。目標(biāo)單一是指一個(gè)用例只驗(yàn)證一個(gè)用戶目標(biāo)。比如“用戶能成功下單”是一個(gè)目標(biāo)“用戶能成功下單并且能取消訂單”就是兩個(gè)目標(biāo)應(yīng)該拆成兩個(gè)用例。步驟清晰是指每一步都有明確的輸入和預(yù)期輸出而不是把一堆操作堆在一起。斷言明確是指每一步都要有校驗(yàn)不能只在最后校驗(yàn)一次。具體怎么寫我通常用 Given-When-Then 的結(jié)構(gòu)來組織。Given 描述前置條件比如“用戶已登錄且購物車有一件商品”When 描述用戶操作比如“用戶點(diǎn)擊提交訂單并完成支付”Then 描述預(yù)期結(jié)果比如“訂單狀態(tài)變?yōu)橐阎Ц稁齑婵蹨p 1用戶收到通知”。這個(gè)結(jié)構(gòu)的好處是它強(qiáng)迫你把前置條件和預(yù)期結(jié)果想清楚而不是上來就寫操作步驟。在代碼層面我建議把每個(gè)步驟封裝成獨(dú)立的函數(shù)或方法用例本身只負(fù)責(zé)編排。比如login(user)、addToCart(product)、submitOrder()、pay(orderId)、assertOrderStatus(orderId, PAID)。這樣用例讀起來就像自然語言維護(hù)起來也方便——某個(gè)步驟的實(shí)現(xiàn)變了只需要改那個(gè)函數(shù)不用動(dòng)所有用例。3.2 數(shù)據(jù)管理e2e 最容易被忽視的命門如果說用例設(shè)計(jì)是 e2e 的骨架那數(shù)據(jù)管理就是 e2e 的血液。數(shù)據(jù)沒管好e2e 要么跑不起來要么跑出來的結(jié)果不可信。我見過最典型的問題就是用例 A 創(chuàng)建了一條數(shù)據(jù)用例 B 依賴這條數(shù)據(jù)結(jié)果用例 A 先跑、用例 B 后跑沒問題一旦順序反過來就掛。這種用例之間的隱式依賴是 e2e 穩(wěn)定性的頭號(hào)殺手。解決這個(gè)問題的核心思路是每個(gè)用例自己準(zhǔn)備數(shù)據(jù)、自己清理數(shù)據(jù)不依賴其他用例的狀態(tài)。具體怎么做有三種常見策略。第一種是API 準(zhǔn)備法通過調(diào)用業(yè)務(wù)接口來創(chuàng)建測試數(shù)據(jù)。比如要測下單先調(diào)創(chuàng)建商品接口、再調(diào)加購物車接口。這種方式的優(yōu)點(diǎn)是數(shù)據(jù)真實(shí)、貼近生產(chǎn)缺點(diǎn)是準(zhǔn)備過程本身可能失敗增加了不確定性。第二種是數(shù)據(jù)庫直插法直接往數(shù)據(jù)庫里寫數(shù)據(jù)。優(yōu)點(diǎn)是快、可控缺點(diǎn)是繞過了業(yè)務(wù)邏輯可能造出業(yè)務(wù)上不合法的數(shù)據(jù)。第三種是快照恢復(fù)法在用例開始前把數(shù)據(jù)庫恢復(fù)到某個(gè)基準(zhǔn)快照。優(yōu)點(diǎn)是干凈徹底缺點(diǎn)是需要數(shù)據(jù)庫支持快照且恢復(fù)過程可能較慢。我的實(shí)踐經(jīng)驗(yàn)是核心鏈路用 API 準(zhǔn)備法邊緣場景用數(shù)據(jù)庫直插法整體環(huán)境用快照恢復(fù)法做兜底。比如下單支付這條黃金路徑一定要用 API 準(zhǔn)備數(shù)據(jù)因?yàn)檫@條路徑本身就是要驗(yàn)證的而像“查詢歷史訂單”這種只讀場景可以直接插數(shù)據(jù)快且穩(wěn)。還有一個(gè)細(xì)節(jié)容易被忽視測試數(shù)據(jù)的唯一性。如果多個(gè)用例并行跑都創(chuàng)建同一個(gè)用戶名的數(shù)據(jù)就會(huì)沖突。解決辦法是在數(shù)據(jù)里加唯一后綴比如時(shí)間戳或隨機(jī)字符串。我通常會(huì)在 profile 里配一個(gè)dataPrefix每個(gè)環(huán)境用不同的前綴這樣即使多個(gè)環(huán)境共用一個(gè)數(shù)據(jù)庫也不會(huì)互相干擾。3.3 等待與重試異步系統(tǒng)的必修課現(xiàn)代系統(tǒng)大量使用異步消息隊(duì)列、事件驅(qū)動(dòng)、最終一致性這些機(jī)制讓 e2e 變得極其棘手。你調(diào)完支付接口訂單狀態(tài)不會(huì)立刻變成已支付可能要等幾百毫秒甚至幾秒。如果你調(diào)完接口立刻斷言必然失敗。新手最常見的做法是sleep(5)睡 5 秒再斷言。這個(gè)做法的問題在于睡少了不夠睡多了浪費(fèi)時(shí)間而且不穩(wěn)定。正確的做法是輪詢等待每隔 200ms 查一次狀態(tài)直到狀態(tài)符合預(yù)期或超時(shí)。這樣既快又穩(wěn)。輪詢等待的實(shí)現(xiàn)要點(diǎn)有三個(gè)。第一是超時(shí)時(shí)間要合理太短容易誤判太長拖慢整體執(zhí)行。我一般設(shè) 10 到 30 秒具體看業(yè)務(wù)。第二是輪詢間隔要適中太密會(huì)給系統(tǒng)壓力太疏會(huì)浪費(fèi)時(shí)間。200ms 到 500ms 是比較好的區(qū)間。第三是失敗時(shí)要給出有用信息不能只說“超時(shí)了”要說明“等待訂單狀態(tài)變?yōu)?PAID當(dāng)前狀態(tài)是 PENDING已等待 15 秒”。這樣排查問題時(shí)能省很多時(shí)間。重試機(jī)制則是另一個(gè)維度。有些失敗是偶發(fā)的比如網(wǎng)絡(luò)抖動(dòng)、服務(wù)瞬時(shí)不可用重試一次就好了。但重試不能濫用否則會(huì)把真正的 bug 掩蓋掉。我的原則是只對(duì)明確的瞬時(shí)故障重試且重試次數(shù)不超過 2 次。比如 HTTP 502、連接超時(shí)這類可以重試斷言失敗、業(yè)務(wù)邏輯錯(cuò)誤這類不能重試必須暴露出來。3.4 環(huán)境隔離與 profile 配置實(shí)戰(zhàn)前面提到 profile 的重要性這里展開講一下具體怎么配。一個(gè)典型的 e2e profile 文件通常包含以下幾類配置配置項(xiàng)說明示例baseUrl被測系統(tǒng)的基礎(chǔ)地址https://test.example.comdbUrl數(shù)據(jù)庫連接串jdbc:mysql://test-db:3306/appaccount測試賬號(hào)e2e_user_01password測試密碼從環(huán)境變量讀取timeout默認(rèn)超時(shí)時(shí)間毫秒10000retryCount重試次數(shù)2dataPrefix測試數(shù)據(jù)前綴e2e_test_screenshot失敗時(shí)是否截圖trueprofile1 作為第一套標(biāo)準(zhǔn)配置通常對(duì)應(yīng)測試環(huán)境。它的特點(diǎn)是數(shù)據(jù)可以隨意造、服務(wù)可以隨意重啟、失敗可以隨意重試。而生產(chǎn)環(huán)境的 profile 則要保守得多只讀為主、不造數(shù)據(jù)、不重試、失敗立即告警。配置的加載方式也有講究。我推薦用環(huán)境變量加配置文件的組合敏感信息如密碼、密鑰走環(huán)境變量不落盤非敏感信息走配置文件方便版本管理。加載順序是先讀默認(rèn)配置再用 profile 文件覆蓋最后用環(huán)境變量覆蓋。這樣既靈活又安全。還有一個(gè)坑要提醒profile 文件不要提交敏感信息到代碼倉庫。我見過有團(tuán)隊(duì)把生產(chǎn)數(shù)據(jù)庫密碼寫在 profile 里提交了這是嚴(yán)重的安全隱患。正確的做法是配置文件里只寫占位符真實(shí)值通過 CI/CD 的密鑰管理功能注入。4. 實(shí)操過程與核心環(huán)節(jié)實(shí)現(xiàn)4.1 從零搭建一個(gè) e2e 測試項(xiàng)目假設(shè)你現(xiàn)在要為一個(gè) Web 應(yīng)用搭建 e2e 測試我會(huì)按下面的步驟來操作。這套流程我在多個(gè)項(xiàng)目中復(fù)用基本可以直接抄。第一步是選型。如果是 Web 應(yīng)用Playwright 和 Cypress 是兩個(gè)主流選擇。Playwright 的優(yōu)勢是支持多瀏覽器、多語言、并行執(zhí)行好Cypress 的優(yōu)勢是開發(fā)體驗(yàn)好、調(diào)試方便。如果是 API 級(jí) e2e直接用 RestAssured、Supertest 或 HttpClient 就夠了不必上重型框架。我的建議是UI 級(jí)用 PlaywrightAPI 級(jí)用輕量庫不要為了統(tǒng)一而強(qiáng)行用一個(gè)框架做所有事。第二步是建目錄結(jié)構(gòu)。我通常這樣組織e2e/ profiles/ profile1.yaml profile2.yaml cases/ order/ payment/ steps/ login.ts cart.ts utils/ wait.ts data.ts reports/profiles 放配置cases 放用例steps 放步驟封裝utils 放工具函數(shù)reports 放測試報(bào)告。這個(gè)結(jié)構(gòu)清晰、易擴(kuò)展新人接手也能快速找到東西。第三步是寫第一個(gè)用例。不要一上來就寫復(fù)雜的先寫一個(gè)最簡單的“登錄成功”用例把整條鏈路跑通。這個(gè)用例的作用是驗(yàn)證框架、配置、報(bào)告、斷言都工作正常。等這個(gè)用例綠了再逐步加復(fù)雜度。第四步是接入 CI。e2e 如果不接入 CI基本等于白做。接入 CI 的要點(diǎn)是每次代碼合并前跑 API 級(jí) e2e每天定時(shí)跑 UI 級(jí) e2e發(fā)版前跑全量。CI 里要配好 profile通常用環(huán)境變量注入敏感信息。4.2 一個(gè)完整的下單 e2e 用例拆解下面用一個(gè)真實(shí)的下單用例來演示完整實(shí)現(xiàn)。這個(gè)用例的目標(biāo)是用戶登錄后把商品加入購物車提交訂單并完成支付最終訂單狀態(tài)為已支付。首先是前置準(zhǔn)備。通過 API 創(chuàng)建一個(gè)測試商品庫存設(shè)為 10價(jià)格設(shè)為 100。這里用 API 而不是直接插庫是為了確保商品數(shù)據(jù)符合業(yè)務(wù)規(guī)則。創(chuàng)建完成后拿到 productId。然后是登錄步驟。調(diào)用登錄接口拿到 token后續(xù)請(qǐng)求都帶上這個(gè) token。這里要注意token 可能有有效期如果用例執(zhí)行時(shí)間較長要在步驟里處理 token 刷新。接著是加購物車。調(diào)用加購接口傳入 productId 和數(shù)量 1。斷言返回成功并且購物車?yán)锏纳唐窋?shù)量為 1。然后是提交訂單。調(diào)用下單接口傳入購物車 ID。斷言返回訂單號(hào)并且訂單狀態(tài)為待支付。這里要注意下單可能會(huì)鎖庫存如果后續(xù)支付失敗要確保庫存能釋放否則會(huì)影響其他用例。接著是支付。調(diào)用支付接口傳入訂單號(hào)和支付金額。支付通常是異步的所以這里要用輪詢等待訂單狀態(tài)變?yōu)橐阎Ц?。輪詢的超時(shí)時(shí)間設(shè)為 15 秒間隔 300ms。最后是斷言。查訂單詳情斷言狀態(tài)為已支付查庫存斷言從 10 變成 9查消息通知斷言用戶收到支付成功通知。這三個(gè)斷言分別驗(yàn)證了訂單、庫存、通知三個(gè)維度的正確性。整個(gè)用例跑下來大概 3 到 5 秒。如果失敗報(bào)告里會(huì)顯示是哪一步失敗、當(dāng)時(shí)的頁面截圖或接口響應(yīng)、以及等待了多久。這些信息對(duì)排查問題至關(guān)重要。4.3 參數(shù)計(jì)算與選擇超時(shí)和重試到底設(shè)多少超時(shí)和重試這兩個(gè)參數(shù)設(shè)大了浪費(fèi)時(shí)間設(shè)小了誤報(bào)頻繁。怎么定我的方法是基于歷史數(shù)據(jù)加安全邊際。先收集一段時(shí)間內(nèi)該接口的響應(yīng)時(shí)間分布算出 P95 和 P99。比如某接口 P95 是 800msP99 是 2 秒。那超時(shí)時(shí)間就設(shè)為 P99 的 3 到 5 倍也就是 6 到 10 秒。這樣既能覆蓋絕大多數(shù)正常情況又不會(huì)等太久。重試次數(shù)則要看失敗的性質(zhì)。如果是網(wǎng)絡(luò)類失敗重試 1 到 2 次通常能解決。如果是業(yè)務(wù)類失敗重試多少次都沒用反而掩蓋問題。所以我的配置是網(wǎng)絡(luò)超時(shí)重試 2 次斷言失敗不重試服務(wù) 5xx 重試 1 次。還有一個(gè)細(xì)節(jié)重試要有退避。第一次失敗后等 1 秒再重試第二次失敗后等 2 秒而不是立刻重試。因?yàn)樗矔r(shí)故障往往需要一點(diǎn)時(shí)間恢復(fù)立刻重試大概率還是失敗。4.4 報(bào)告與可觀測性失敗時(shí)能快速定位e2e 失敗不可怕可怕的是失敗了不知道哪里出了問題。所以報(bào)告和可觀測性必須做好。我的報(bào)告里通常包含這些信息用例名稱、執(zhí)行時(shí)間、耗時(shí)、每一步的狀態(tài)、失敗步驟的詳細(xì)日志、接口請(qǐng)求和響應(yīng)、頁面截圖UI 級(jí)、數(shù)據(jù)庫快照數(shù)據(jù)級(jí)。Playwright 自帶的 trace 功能非常好用它能把整個(gè)執(zhí)行過程錄下來包括每一步的 DOM 快照、網(wǎng)絡(luò)請(qǐng)求、控制臺(tái)日志。失敗時(shí)打開 trace 文件就像看錄像回放一樣能快速定位問題。我強(qiáng)烈建議開啟這個(gè)功能雖然會(huì)占用一些磁盤空間但排查問題時(shí)省下的時(shí)間遠(yuǎn)超這點(diǎn)成本。除了單次執(zhí)行的報(bào)告還要有趨勢分析。比如某個(gè)用例最近 7 天的失敗率、平均耗時(shí)變化。如果某個(gè)用例突然開始頻繁失敗或者耗時(shí)逐漸增加都是系統(tǒng)出現(xiàn)問題的信號(hào)。這些趨勢數(shù)據(jù)可以接入監(jiān)控面板讓團(tuán)隊(duì)隨時(shí)看到 e2e 的健康狀況。5. 常見問題與排查技巧實(shí)錄5.1 e2e 用例不穩(wěn)定時(shí)好時(shí)壞怎么辦這是 e2e 最經(jīng)典的問題業(yè)內(nèi)叫“flaky test”。表現(xiàn)是用例有時(shí)候過、有時(shí)候掛重跑一次又過了。這種問題最消耗團(tuán)隊(duì)信心因?yàn)榇蠹視?huì)逐漸不信任 e2e 結(jié)果。排查 flaky 問題的第一步是收集數(shù)據(jù)。不要憑感覺說“這個(gè)用例不穩(wěn)定”要統(tǒng)計(jì)最近 20 次執(zhí)行中失敗了幾次、失敗的是哪一步、失敗時(shí)的錯(cuò)誤信息是什么。有了數(shù)據(jù)才能定位。常見的 flaky 原因有這幾類。第一類是等待不足異步操作還沒完成就斷言了。解決辦法是把固定 sleep 改成輪詢等待。第二類是數(shù)據(jù)沖突多個(gè)用例用了相同的數(shù)據(jù)。解決辦法是加唯一前綴。第三類是環(huán)境不穩(wěn)定比如測試環(huán)境的服務(wù)本身在重啟。這種要推動(dòng)運(yùn)維解決e2e 層面只能加重試兜底。第四類是用例順序依賴用例 A 依賴用例 B 先跑。解決辦法是讓每個(gè)用例自給自足。我的經(jīng)驗(yàn)是flaky 用例必須當(dāng)天修不能拖。一旦拖久了大家就會(huì)習(xí)慣性忽略失敗e2e 就失去意義了。如果實(shí)在修不了就先把它從常規(guī)流水線里摘出來單獨(dú)跑避免影響整體信號(hào)。5.2 測試數(shù)據(jù)被污染用例互相影響數(shù)據(jù)污染是另一個(gè)高頻問題。表現(xiàn)是用例單獨(dú)跑能過一起跑就掛。原因通常是用例之間共享了數(shù)據(jù)或者前一個(gè)用例的殘留數(shù)據(jù)影響了后一個(gè)用例。解決思路前面提過每個(gè)用例自己準(zhǔn)備、自己清理。但實(shí)際落地時(shí)有兩個(gè)難點(diǎn)。一是清理不徹底比如用例創(chuàng)建了訂單但訂單關(guān)聯(lián)的消息、日志、緩存沒清理。二是清理失敗比如用例中途掛了清理代碼沒執(zhí)行到。針對(duì)第一個(gè)難點(diǎn)我的做法是按數(shù)據(jù)前綴批量清理。每個(gè)用例的數(shù)據(jù)都帶統(tǒng)一前綴用例結(jié)束后按前綴刪除所有相關(guān)數(shù)據(jù)不管是訂單、消息還是緩存。針對(duì)第二個(gè)難點(diǎn)我的做法是在用例開始前也做一次清理確保環(huán)境干凈。這樣即使上次清理失敗這次開始前也會(huì)補(bǔ)上。還有一個(gè)技巧用獨(dú)立的測試數(shù)據(jù)庫或 schema。如果條件允許給 e2e 單獨(dú)一個(gè)數(shù)據(jù)庫和生產(chǎn)、開發(fā)完全隔離。這樣即使數(shù)據(jù)亂了也不會(huì)影響其他人。清理的時(shí)候也可以更粗暴直接 truncate 表不用小心翼翼地按條件刪。5.3 執(zhí)行太慢CI 流水線等不起e2e 慢是天然屬性但慢到影響交付就不行了。優(yōu)化執(zhí)行速度有幾個(gè)方向。第一個(gè)方向是并行。把用例分成多個(gè)組同時(shí)跑。Playwright 和大多數(shù)測試框架都支持并行。并行的關(guān)鍵是用例之間不能有數(shù)據(jù)沖突所以前面說的數(shù)據(jù)隔離要做好。并行度不是越高越好要看測試環(huán)境的承載能力一般設(shè) 4 到 8 個(gè) worker 比較合適。第二個(gè)方向是分層執(zhí)行。前面提過的 API 級(jí)、UI 級(jí)、數(shù)據(jù)級(jí)分層日常只跑 API 級(jí)UI 級(jí)定時(shí)跑。這樣日常流水線幾分鐘就能出結(jié)果。第三個(gè)方向是復(fù)用登錄態(tài)。登錄往往是 e2e 里最耗時(shí)的步驟之一如果每個(gè)用例都重新登錄累積起來很可觀。解決辦法是登錄一次把 token 或 cookie 存下來后續(xù)用例復(fù)用。Playwright 的 storageState 功能就是干這個(gè)的。第四個(gè)方向是精簡用例。定期 review 用例刪掉重復(fù)的、過時(shí)的、價(jià)值低的。e2e 用例不是越多越好覆蓋核心路徑就夠了邊緣場景交給單元測試和集成測試。5.4 常見問題速查表問題現(xiàn)象可能原因排查方向解決辦法用例時(shí)好時(shí)壞等待不足、數(shù)據(jù)沖突、環(huán)境不穩(wěn)看失敗步驟和錯(cuò)誤信息輪詢等待、數(shù)據(jù)隔離、加重試單獨(dú)跑能過一起跑掛用例間數(shù)據(jù)依賴檢查數(shù)據(jù)是否共享每用例自備數(shù)據(jù)、加前綴斷言失敗但頁面正常斷言時(shí)機(jī)太早看斷言前的等待加輪詢等待接口 401token 過期或未傳檢查請(qǐng)求頭復(fù)用登錄態(tài)、刷新 token執(zhí)行越來越慢數(shù)據(jù)累積、環(huán)境退化看歷史耗時(shí)趨勢定期清理數(shù)據(jù)、重啟環(huán)境CI 上掛但本地能過環(huán)境差異對(duì)比 profile 配置統(tǒng)一配置、用環(huán)境變量5.5 幾個(gè)我踩過的坑和獨(dú)家技巧第一個(gè)坑不要用生產(chǎn)數(shù)據(jù)做 e2e。我見過有團(tuán)隊(duì)圖省事直接連生產(chǎn)庫跑 e2e結(jié)果造了一堆臟數(shù)據(jù)清理了半天。e2e 必須用獨(dú)立環(huán)境這是底線。第二個(gè)坑不要在用例里寫死等待時(shí)間。sleep(5)這種寫法遲早會(huì)出問題。要么用輪詢等待要么用框架提供的等待機(jī)制。第三個(gè)坑不要忽略清理步驟的失敗。清理失敗如果不報(bào)警數(shù)據(jù)會(huì)越積越多最終拖垮環(huán)境。清理步驟也要有斷言和告警。第一個(gè)技巧給用例打標(biāo)簽。比如smoke、regression、slow。CI 里按標(biāo)簽選擇執(zhí)行日常跑 smoke發(fā)版跑全量。這樣靈活又高效。第二個(gè)技巧失敗時(shí)自動(dòng)錄屏。Playwright 支持失敗時(shí)自動(dòng)錄視頻排查 UI 問題時(shí)非常有用。雖然占空間但值得。第三個(gè)技巧定期 review e2e 報(bào)告。不要只看通過率要看耗時(shí)趨勢、失敗分布。這些數(shù)據(jù)能幫你發(fā)現(xiàn)潛在問題比如某個(gè)接口越來越慢、某個(gè)用例越來越不穩(wěn)定。6. 關(guān)于 e2e 和 profile 的一些個(gè)人體會(huì)做 e2e 這些年我最大的體會(huì)是e2e 的價(jià)值不在于發(fā)現(xiàn)多少 bug而在于給團(tuán)隊(duì)信心。單元測試給的是“代碼邏輯沒問題”的信心e2e 給的是“用戶能用”的信心。這兩種信心缺一不可但后者往往更稀缺。profile 這類配置化思路表面上是技術(shù)細(xì)節(jié)實(shí)際上是工程成熟度的體現(xiàn)。一個(gè)團(tuán)隊(duì)如果能把 e2e 的配置管理得井井有條說明他們對(duì)環(huán)境、對(duì)流程、對(duì)協(xié)作都有清晰的認(rèn)知。反過來如果 e2e 配置一團(tuán)亂麻那大概率其他工程實(shí)踐也好不到哪去。最后分享一個(gè)小技巧把 e2e 當(dāng)成產(chǎn)品來做而不是當(dāng)成任務(wù)來完成。給它好的目錄結(jié)構(gòu)、清晰的文檔、穩(wěn)定的環(huán)境、及時(shí)的維護(hù)。你對(duì)它投入多少它就回報(bào)你多少。那些把 e2e 做成“擺設(shè)”的團(tuán)隊(duì)往往不是 e2e 沒用而是沒把它當(dāng)回事。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
男人a天堂手机在线版| 美女黄色一级A视频| 亚洲综合性网址| 99性视频| 国产69精品久久久久99尤物| 综合久久9| 熟女露脸激情自拍视频| 久久超碰亚洲人| 色综合天天| 日本加勒比无码专区| 日日黄色三级网站| www.夜夜操| 天天色,天天干,天天干| 久草婷婷| 亚洲无码国产探花在线观看| 丁香五六月啪啪| 久久精品操| 亚洲限制级| 国产精选三级在线观看| 夜夜嗨一区二区| 中文字幕中文字幕一区二区| AV九九| 欧美中出| 中文乱码字幕观看| 中文字幕美女91| 亚洲另类春色| 久久啊啊| 久久一二三四五六七八九区| 91国精产品| 色偷偷色偷偷欧美日韩| 亚洲av热热色| 96免费视频在线| 91亚洲不卡一区| 精品国产少妇高潮视频| 97在线视频观看| 伊人黄色视频免费观看| 超碰在线香蕉| 桃花色涩综合影院| 久热9| 美国日韩黄色片| 国产日产精品久久快鸭的功能介绍| 中文字幕第2页| 中国91AV| 麻豆亚洲AV成人无码久久精品| 天天综合,91入口| 四虎在线观看网站| 国产麻豆91欧美一区二区久久婷婷国产精品| 天天天天天天天天综合| 夜夜嗨免费视频| 中文字幕乱偷人妻久久艾草网| 午夜精品久久久久久久99热影院| 久色99999| 涩涩久久精品| 久久大香蕉97| 久久久久国产精品久久久| 亚洲一级黄色毛片| 国产51色综合久久免费| 日韩中文字幕在线视频观看| 激情综合网激情五月天| 欧美国产成人在线| 亚洲欧美激情小说| 亚洲天天做日日做天天谢日日| 国产精品黄色三级av| 26uuu性| 乱欲一区二区| 综合五月天| 清柠毛片| 日韩中文字幕宗合在线| 日本二区不卡| 国产精品嫩草影院午夜两性| 97国产高清视频在线观看| 任你爽视频| 高清不卡国产| 久久婷婷亚洲欧| 91超碰在线观看| 水滴偷拍| 99精品久久久久久久婷婷| 中文字幕 国产区| 亚洲日韩肥臀视频在线观看| 99精品久久久久久| 夜夜爽夜夜爽| 国产成人精品日本视频| 国产白领连续中出在线观看| 天天综合网~91入口| 亚洲欧美国产精品久久久久久久| 国产女生在线| 欧美色图成人网一区二区| 麻豆黄站| 欧美精品久久久久久久久88| 强上我不卡卡| 超碰久久.com| av最新免费中文字幕| 欧美婷婷| 91少妇通奸网站| 亚洲欧美一区二区网址| 爆乳免费黄网站| 久久精品日韩专区免费观看| 秋霞成人做爱| 久久久久921| 欧美色人| 美中韩AV综合网| 亚洲综合骚逼| 亚洲精品xxx| 草伊人高潮喷水超碰| 久久99久久99精品天美传媒棢·纸:.| 亚洲AV秘无码一区..| 丁香婷婷啪啪| 台湾佬中文娱乐网久久久久久久久久com| 亚洲情色欧美| 98精品国产乱码久久久久久| 综合亚洲欧美精品日韩?v| 91无码中出人妻视频| 久久美国毛片| 欧美一级A片不卡视频。| 蜜臀久久久久久999| 97欧美色综合| 亚洲欧美在线观看2021 | 91美女中出| 人妻天天爽夜夜爽2| 人妻无一区二区三区| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 中文字幕日韩专区精品系列| 久久久久密臀一区二区| 国产精品一区二区久久精品| 牛牛久久国产精品视频一二三| 91欧洲国产成人久久精品网站| 激情AV| 欧美高清在线| 国产精品熟女丝袜一区二区| 天天欧美| 色女99一级片在线观看| 国产肏逼网站| 熟女熟妇伦久久影院毛片一区二区| 园内精品自拍视频在线播放| 加勒比色综合| 久久婷婷影院| 搡老女人老91妇女老熟女| 色综合91| 999精品国产高清一区二区| 一区二区三区日韩欧美| 操操逼视频| 99国产精品免费| 丁香五月激情综合国产| 黑人猛交| 粉嫩av一区二区三区四季| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 日本国产欧美一区三区二区| 久久久久久九九九九-美女久久久久久久-成人AV | 一本色道久久综合狠狠操| 亚洲精品中文字幕一区在线视频| 亚洲少妇自拍中文字幕懂色| 五月丁香六月激情综合| 人妻精品免费一二三区| 亚洲精品久久一区二区三区蜜桃臀| 免费看A片毛毛片在线播| 久男人久久| 丁香激情网| 精品国产三级av韩国在线| 国产精选三级在线观看| 国产免费操逼| 熟女自慰久久久| 99re69综合| 欧美日韩资源| 婷婷综合网| 亚洲人妻精品一区二区| 91人妻视频| 竹菊影视国产一区二区| 色在线视频导航| 青青草啪啪网| 歐美一級亂黃99在綫精品| www.久久最新地址| 超碰97精品| 91丝袜在线视频| 九九精品热| 亚欧毛片基地国产毛片基地| 日本国产二线女色| 无码人妻精品一区二区三区九九| 九色97| 色欲三区| q2午夜理论片夜色av| 国产一区二区啪啪视频| 欧美美女视频| 果冻传媒A片一二三区| 国产精品情侣啪啪| 91日韩在线| 懂色av色欲av蜜臀av| 1024精品在线| 日本精品一区二区三| 亚州色图第三区| 可以在线观看AV的网站| 伊人五月天婷婷| 96久久久久| 久湿久久 | 精品人妻一区二区视频| 欧美高清18A片| 亚洲国产日韩精品久久久| 韩日巨乳美女免费视频在线观看| 国产伦精品免编号公布| 综合五月婷婷| 日本高清久久| 黑操B| 中文字幕一区日韩精| 欧美日韩另类在线播放| 免费看片黄| 青娱乐休闲视频在线观看| 国产精品一区在线播放| 亚洲熟女一区二区| 91操熟女视频| 国产精品一区二区三区四区五区| 伊人性在线视频| 91亚洲丝袜| 91N综合网| 婷婷五月天色网| 欧美韩日精品资源| 丝袜视频网国产90| 后入式免费视频| 久久这里只有精品9| 久 久无码人妻AV| 蜜臀久久99精品久久久久久-DVD | 亚洲精品啪视频| 国产精品久久久久亚洲av| 高潮的A片激情扒开一区| 国产久久免费精品视频| 黄色AAAAA欧美| 欧美日韩性爱电影在线| 欧美aaaaaaa| 精品高清一区二区三区三州| 午夜寂寞欧美| 亚洲中文字母在线播放| 色欲天天综合网| 自偷自拍的亚洲视频| 国产一区二区啪啪视频| 狠狠综合| 欧洲精品网| 国产2.3.4区| 狠狠躁AV| 老熟女综合| 人妻第一页| 91欧美www| 久久久偷拍| 欧美组图日韩亚洲中文字幕| 成人国产视频在线观看| 淫荡少妇免费| 成人精品在线| 91伊人影视综合| 夜夜高潮夜夜爽高清视频一| 欧美一级专区免费大片 | 久久久极品| 欧美97色| 破苞ⅩXXX性无码动漫无码| 天天综合色| 97综合日韩| 国产欧美成人精品| 天天澡天天爽日日AV| 亚洲 小说 欧美 激情 另类| 黑人无码一区二区| 9999免费精彩视频| 夜夜福利| 98久久| 最新岛国大片| 亚洲操人| 九九十八精品| 97天天做| 色五月av| 日韩无码黄色片| 婷婷综合网| 91美女视屏| 91色色综合| 啊啊啊啊嗯嗯在线久久久| 亚洲啪啪综合?v一区综合精品区| 国产亚洲精品第一最新| 欧美性Fer办公室秘书| 97jingpin| 91美女小视频| 狠狠五月天| 人妻精品4K4K4K4K4| 2020中文字幕在线| 嗯啊视频免费在线观看| 精品无吗久久| 国产精品噜噜噜日日日| 亚洲国产精品成人无码久久久| 91久久久久久| 少好三P| 国产高清视频无码在线| 黑人黄片在线免费观看| 91大学精品激情戏| 加勒比少妇AV婷婷六月天超碰超碰| 亚洲综合首页| 久久女婷| 99re在线视频这里只有精品| 俺去俺来也在线www| 五月天伊人| 日本一区不卡| 日本大片日本一区二区免费高清| 国产亚热在线久久| 久久精品国产精品一区| 嗯嗯嗯好爽| 骚货操死你| 中文操嬖片。| 91男人天堂网| 亚洲图片欧洲图片aⅴ| 亚洲视频,小说| 欧美色人| 欧美日日夜夜| 两女互慰AV高潮喷水在线观看| 人妻激情偷乱视频一区二区三区| 欧美后入式| 免费伦费视频在线观看| 大香蕉男人的天堂| 人人操人人摸人| 18禁久极品美女久久哦哟呀!| 一个人免费视频观看在线WWW| 欧美亚州手机在线| 久久伊人最新网址视频| 日韩传媒在线| 尤物网址| 无毛精品| 开心五月婷婷激情| 91性情| 久久怡红院| 情色大香蕉| 日本一级一级一级一级| 中文字幕精品亚洲熟女| 激情深爱五月天| 精品日日人妻| 啊啊啊啊啊在线观看网址| 超碰美女97| 野狼激情网| 肉动漫无遮挡h在线观看| 夜夜高潮夜夜爽高清视频一| 色就色综合| 亚洲性图91| 成人看片网站| 放黄片放3级黄片没穿衣服| 91亚洲精品青草| 97色伦97色伦国产欧美| 97在线观看免费| 不卡一区二区日本视频| 亚洲毛片久久| 顶级少妇BT天堂| 无码国产Av| 国产91专区| 丁香五月成人| 大香蕉免费3| 亚洲欧美国产va在线| 国产又粗又长又爽又色| 欧美日韩在线视频网站| 久久午夜神马| 国模不卡一本二本三电影| 无码日韩人妻av一| 日韩人妻丝袜中文字幕| 欧美日韩色图片| 亚洲综合首页| 国产第11页| 欧美三级中文字幕hd| 天美av在线| 国产传媒日本欧美专区| 曰韩av中文字幕专区| 精品午夜福利| 日韩成人人妻网站| 久久天堂婷婷网| 欧美日韩操逼动图| 亚洲天堂五月天国产| 青青草久草AV| 欧美成熟性爱精品| 色老久久| 欧美日韩国产电影| 婷婷五月天补不补| 偷看洗澡一二三区美女| 91福利网在线观看| 天天日夜干| 久久成年精品| 91欧美高清| 人人操人人插人人摸人人干| 久久精品—区二区三区内射| 精品白丝一区| 亚洲人妻熟妇三十三区| 亚洲精品丝袜-不卡成人免费……| 天天干干天天干干| 亚洲日韩精品久久久久一区壹牛| 国产蜜臀精品一区二区尤物| 老司机午夜精品福利视频一区二区 | 日日爽熟女| 国产精品不卡一区二区三区| 亚洲精品一二三四区| 亚洲色久| 欧美日综合| 日本中文字幕不卡视频| 亚洲日韩97| 樱花草社区www中国| 夜夜肏2021| 五月婷丁香| 91精品国产高清久久久久久,亚洲成人 | 欧美熟妇精品黑人巨大91| 青青草原人妻| 麻豆国产原创AV色哟哟 | 91红杏| 天天摸夜夜摸| 欧美曰韩国产精品| 欧美综合在线91| 日韩传媒在线| 精品乱码久久久久| av线电影| 97在线资源| 日韩人妻丝袜美腿中文| 蜜桃网熟妇| 日韩综合色网| 啪啪自拍九九综合| 婷婷色色五月天福利| 激情小说亚洲视频| 欧综合网| A 天堂| 欧美大波激情xxxx| 国产成人亚洲精品无码古代早漏男| 女同女同恋久久级三级| 成人国产精品三级A片| 一区在线观看中文字幕| 91黑丝露脚| 青青草伊人久久| 天天综合网91入口| 狠操91,com| 国产精品久久久午夜夜伦鲁鲁| 久久噜噜噜精品国产亚洲综合| 天天干夜夜操一区二区| 男女国产精品| 伊人网青青| 日韩欧美国产一区二区三区四区| 国产一区二区在线电影| 欧美在线官网| 亚洲视频二区| 久久午夜色播影院免费高清| 亚洲无码太久| 久久五月天婷婷| 18一区二区三区| 久久久久9999精品九九九| 亚洲双插| 呦呦影院| 久久露脸国产老熟女| 欧美熟妇乱码在线一区| 搞中出视频在线观看| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 1000部熟女视频在线观看| 久草视频在线视频在线视频在线观看| 在线综合 亚洲 欧美中文字幕| 岛园激情| 无码视频一区二区| 亚洲天堂2020| 国产一区自拍欧美日韩| 久久理论字幕视频| 91激情国产| 91美女在线观看| 顶级丝袜熟女一区二区三区| 麻豆九九九| 91bbbbbb| 国产视频不卡在线观看| 麻豆国产原创AV色哟哟| 九九九九亚洲| 老司机老司机午夜影院| 婷婷综合在线观看| 午夜毛片亚洲精品片国产久久久| 免费A V在线播放| 91亚洲精品青草| 大但人体久久久久| 日韩性爱视频在线免费观看| 国产超碰国产97| 欧美淫乱视频| 性爱av在线免费观看| 久都青青视频 | 蜜乳AV免费观看| 五月婷婷色| 日本最新1区2区3区| 人人操,人人插| 亚洲欧洲小说图片视频| 激情婷婷丁香网| 激情国产乱伦Av| 99re只有精品| 精品人体无圣光凹凸| 亚洲国产综合久久久性感熟妇| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 国产欧美美女免费观看视频| 一二三区精品视频| 99这里都是精品| 熟妇人妻一二三区免费| 全球成人中文在线| 97热视频在线观看| 亚洲激情综合| 伊人网高清| 五月天婷婷小说| 9999久久久久| 九九综合久久| 大香蕉性欧美| 色色丁香| 91美女片在线| 丝袜美腿诱惑亚洲欧美视频在线观看 | 精品久久久久久中文字幕视频免费 | 97久久久精品| 国产麻豆福利av在线播放| 欧美在线综合| 久热无码| 亚洲色图欧美一区二区不卡| 97色97好| 黄色AAAAAAAAAAA大片| 色播五月婷婷| 日韩 欧美 另类 人妻| 色www精品视频在线观看| 中文操嬖片。| 99re这里只有精品2| 午夜男人一级A片7777| 免费视频观看60秒| 久热色情精品| 午夜超爽| 色欧美色交综合| 91丨九色丨东北熟女| 九九亚洲| 欧美A√综合网| 亚欧成人中文字幕一区| 在线一区| 色色色综合网| 国产精品视频自拍在线| 国产精品动态一区二区三区四四| 9久久精品| 黄片免费日韩| 九久久精品| 五月天婷婷激情| 翔田千里爆乳巨臀无码| 插B在线观看| 蜜桃中文字日产乱幕4区| www.亚洲黄色| 91内射| 亚洲污污网站| 欧美|91色综合| 国产粉嫩蜜臀av一区二区三区| 劲爆欧美人妖三区91| 天天综合在线4| 亚洲nv男人的天堂网| 久久粉色| 美女t无毒不卡不卡| 免费9 1久久| 操逼日韩无码| 精品久久久久av影院| 日韩无码一区二区三区| 国产女人9999| 97硬碰| 中文字幕在线观看视频www| 久久亚洲国产成人| 久久超碰天天| 久久有码视频| 嗯嗯不要 视频| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 日本中文字幕在线视频| 亚洲无码成人精品| 亚洲欧美电影| 99热日| 熟女啪啪视频| 91久久久久久久久18| 操逼大黄片| 欧美日韩情色一区二区| 国产一区自拍欧美日韩| 大学生美女口爆| 美女上床网站| 嗯嗯啊啊好大好爽| 中文字幕人妻色偷偷久久皮| 亚洲综合春色| 丁香五月性| 在线观看亚洲专区| 强奸乱伦αv片| 亚洲欧洲成人在线电影| 少妇淫妇久久久久久久| 久久超碰天天| 插B在线观看| 懂色av中文字幕一区二区三区天美 | 久久精品国产99国产精品亚洲| 欧美色图天堂在线| 色色99| 丁香五月天堂网| 久久激情网| 九热视频| 乱日视频| 蜜臀人妻少妇久久在线观看| xxx亚洲午夜天堂| 久久这里精品国产99丫e6| 蜜桃成人1区2区3区| caorenqi shipin| 色婷婷五月天| 国产欧美伊人| 久久久久9久久久久| 淫色网综合| 啊啊啊在线观看免费视频| 超碰性爱97| 人妻在线大香蕉| 97超碰人操| 四虎免费视频| 亚洲怡春院| aV中文麻| 欧美综合狠| 麻豆熟妇乱妇熟色A片在线看| 久久蜜桃一区二区| 熟妇熟女一区二区三区| 国产99热| 26uuu偷拍亚洲欧洲综合| 日韩精品一区二区日韩| 亚洲操人| 国产高清1234区| 东北女人被操| 国模91| 性一级黄色录像片网站导航 | 可以免费观看的日韩av毛片| 色爱综合网| 日本熟妇熟色97一本在线观看| 欧美大香蕉在线观看| 韩日巨乳美女免费视频在线观看| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 午夜寂寞欧美| 曰韩av中文字幕专区| 男人的天堂2018东京热啪啪啪| 久久XX| 亚洲视频小说| 97久久国产精品女不卡| 99久久久久久亚洲精品不卡| 婷婷六月色开| 高清不卡一二三区视频......| 手机久操欧美综合色码| 超碰久超碰久| 亚洲少妇综合在线播放| 天天狠| 久久久熟女一区| 亚洲伊人久久综合97| 在线观看黄色电话| 超碰天天久久79| 东北老熟女| 五月天久久综合网| 天天做日日爱夜夜爽| 婷婷色播婷婷| 乱码人妻一区二区三区| 欧美乱伦专区| 一区二区偷拍拍视频| 加勒比少妇AV婷婷六月天超碰超碰| 国产精品久久久久婷婷二区次| 日韩精品国产一区二区| 亚洲色图美腿丝袜| 黑人无码一区二区| 亚洲综合影视| 美女裸体无遮挡永久免费观看网站 | 亚洲熟妇AV日韩熟妇在线| 精品69网| 懂色AV蜜臀无码精品APP | 多乙久久久久久| 久久久久9999妇女| 中国一级αV| 婷婷五月天激情网| 9九九国产| 国产JDAV无码视频在线观看| 天天舔天天 | 乱码人妻一区二区三区| a片 xxxx受爽视频| 麻豆天美国美国产AV| 欧美激情 亚洲色图| 国产久久av| 亚洲天堂人人妻| 波多野结衣之双飞调教在线播放| 神马福利久草| 欧美日韩国产成人高清| 国产精品小视频一区二区三区| 超碰97人妻自拍| 嗯啊抽插大香蕉网页| 天天日天天射天天干| 亚洲国产精品成人综合| 丝袜性亚洲| 国产婷婷综合在线观看| 97色诱| 国产亚洲精品A在线观看下载| 久久99国产综合精品女同| 日日操丁香五月天| 色婷婷aV一区二区三区麻豆综合| 九九热av| 亚洲人妻一区二区三区| 丁香九月婷婷| 九九精品美女高溯喷水| 日本性感人妻91| 日本人妻天堂网站在线播放| 国产精品黄色三级av| 超碰97久久国| 99自拍视频在线观看| 亚洲高清欧美总合| 中文字幕二区日韩天堂| 四虎国产精品永久在线囯在线 | 亚洲AV无码黄色强奸| 神马久久久久久久久久| 亚洲系列第一页| 舔人妻中文免费视频| 色哟哟-国产专区| 超碰欧美97| 亚洲男人天堂2019| 香伊人在线| 啊嗯嗯啊好大好爽| 1769一区二区| 久久久日本电影| 日韩成人午夜精品久久高潮| 偷拍 欧美 日韩| 一区二区三区四区久久视1| 中国一区二区亚洲人妻| 少妇久久久久| 性性久久| 久久99热这里只频精品6学生| 一中国女人毛片水真多| 99re在线精品78| 日日夜夜干| 99老司机精品视频在线观看| 国产乱码久久久| 99在线视频播放| 欧美色婷婷| 嫩草美女久久| 国产精品96| 91欧美巨乳| 黄色乱论网站| 激情视频网址| 天堂а√在线最新版在线| 91亚洲黄色网| 亚洲 欧美 中文 日韩超碰| 亚洲少妇综合在线播放| 呦呦一区| 欧美日韩亚洲少妇寂寞影院正在播放 | 亚洲国产成人7777| 欧美色图99| 亚洲天堂情色| 九九精品美女高溯喷水| 国产精品午夜高潮呻吟久久av| 九九九精品| 97欧美色| 日韩欧美天天爽爽爽天天爽爽| 国产原创自拍| 九九热视频在线观看| 欧美大香蕉专区网| 操国产逼| 99人妻| 另类小说欧美激情校园春色| 夜夜 中文视频rt| 欧美91在线+|+欧美| 97香焦色区| 亚洲九九夜夜| 探花精品视频| 懂色AV蜜臀无码精品APP | 亚洲熟女中文字幕在线| 操逼无码一区| 易易A毛视频| 怡红院亚洲怡春院av| 日本男人插女人的逼黄色| 97在线国产精品| 五月婷婷综合在线| 九九RE视频在线精品| 日韩人妻中文视频| 做爱A级亚欧| 国产特级毛片AAAAAA高潮流水 | 国产成人亚洲精品无码古代早漏男| 一级毛片电影免费看| 一区二区影视| 91九色丰满高潮| 亚洲精品乱码久久久久久蜜桃麻豆| 东京热精品97综合网| 国产91丝袜 在线播放| 欧洲黄色网| 天天天肏屄肏屄肏屄欧美欧美| 2019亚洲男人天堂| 蜜桃狠狠色伊人亚洲综合 | 国产成人bd在线观看| 在线综合色| 国产区91柔拿会所技师| 日韩精品色呦呦| 日韩中文字幕国产| 综合欧美激情网| 韩国一级做A片免费的| 日韩不卡毛片Av免费高清| 18禁超污无遮挡无码免费网| 九九性爱网| 色婷婷基地| 久久婷婷五月综合| 四季AV综合网址| 国产熟妇一区二区| 亚洲一区制服诱惑| 福利视频网站| 99视频这有这里有精品| 午夜性生活av免费在线看| 无码动漫av中文字幕| 亚洲成人性| 国产精品蜜乳AV| 99精品网| 欧美激情 日韩精品| 97一区二压| 中出91视频| 伊人操| 国产操伦| 岛国片国产成人亚洲播放| 正在播放国产精品一区| 国产成人www免费人成看片| 青娱乐久久艹| 任你草| 久久国产视频专区一二三 | 在线视频 亚洲精品| 国产探花日韩援交| 91干熟女| 蜜臀AV成人精品蜜臀| 国产精品一二三| 成人羞羞视频国产| 99久视频| 操死我了嗯嗯嗯| 亚洲天天精品| 国产精品高潮久久久无码| 日本精品无码三级网站| 熟妇在线视频一区二区| 亚洲综合影视| 97欧美综合网| 久久精品中文字幕观看| 日本三级韩三级99久久| 日韩AV片| 97超色| 久久在肏| 亚洲超碰AV| 欧洲Au麻豆| 超碰天天去日穴| 久久久久久电影| 天综合网| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 黄页| 1769精品一区二区三区| 欧洲射精91| 男女一进一出视频久久| 久久久久9| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 蜜乳AV网址| 日韩人妻网站| 97在线视频网站| 亚洲日韩成人性爱视频| 日韩情色AV| 一级二级在线观看| 曰韩欧美国产传媒麻豆第一区| 国产精品一区二区麻豆| 国产又黄又爽又刺激久久久久久 | 91青青在线视频| 天天综合网日韩| www.色婷婷色综合| 久久AV色| 国产精品直播在线观看直播| 五月天伊人| 风间由美日韩欧美久久| 亚洲欧美自拍偷拍| 成人热久久精品| 少妇熟女1区2区3区| 五月丁香六月婷综合成人综合| 日本裸体久久色噜噜| 校园春色亚洲| 丝袜美腿欧美| 亚洲一区日韩精品中文字幕| 国产精品91一样| 亚洲欧洲自拍| 精品少妇后入一区二区三区四区人妻巨乳 | 久热精品色情| 3P丝袜熟女 色综合| 天堂精品在线| 美女啊啊啊啊啊| 日韩丝袜二区| 后入式五六区| 入口操逼网站| 2026国产精品视频| 国产亚洲精品美女久久久久久2021| 99色婷婷中文字幕乱色| 麻豆精品一区二区三区四区免费观看| 国产久久久久久久久一区二区| 神马久久久久久久久| 久久亚洲婷婷| 久久精品成人一区二区三区蜜臀| 日操粉逼逼| yazhououmeizongya| 婷婷色色五月天| 久操视频在线| 亚洲欧美在线观看2021| 亚洲色性| 91蜜臀熟女| 欧美激情性久久久久久| 欧美日韩电影一区二区| 国产福利在线视频网站| 97爱啪| 日韩高潮一区| 天天干天天舔| 在线观看啊啊啊啊啊| 婷婷爱五月| 98人妻精品一区二区色欲| 伊人991| 国产高清成人传媒影视| AV麻豆免费一区| 欧洲亚洲人人爽爽视频| 婷婷综合在线| 亚洲成人av电影在线| 久久婷婷一区| 青青青艹在线视频| 婷婷久热| 久久精品 六十路 熟女 欧美| 超碰97首页| 久久精彩视频| 国产亚洲精品激情| 欧美大的香蕉有线电视视频 | 欧美亚洲天天| 中文乱码99| 十八禁啪啦拍视频无遮挡| 又大又大又大又粗爽高潮观看| 98精品国产乱码久久久久久| 丁香五月婷婷啪啪| 亚洲啪啪视频一区二区| 欧美东京热青青草| 啊啊啊啊,啊啊好多水| 日本天天人人狠狠在线日美女| 国产av又色又爽又黄| 999综合网| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 少妇第一页| 后X久久| 欧美成人黄网色网站| 欧美性爱第一区| 色综91| 久久久性少妇| 91殴美| 天天爽夜夜欢视| 欧美极品少妇交| 国产综合网站在线播放| 日韩精品字幕| 综合 亚洲 欧美| www.av不卡中文字幕| 欧美国产成人在线| 韩国轻伦国内自拍一区| 久久久九九网站| 国产极品美女高潮无套在线观看| 加勒比综合网| 国产三级中文字幕粉嫩| 毛片视频白嫩| 艹我哪美一区无码| 人人扣人人操| 操逼网免费无码视频| 天天操人人操狠狠插| 日韩黄色片子| 成人国产视频在线观看| 91精品国产91久久青草| 嗯嗯啊啊啊好爽| 精品然女一区二区| 麻豆 亚洲 97| 99热这里只有精| 97人人草| AV九九| 国内91熟女人妻丝袜天天精品视频在线| 国产精品探花视频| 26uuu国产免费观看| 中文字幕中文字幕一区二区| 精品美女少妇一区二区| 日本二区不卡| 超碰久久.com| 男人的天堂2019| 国产精品视屏| 黄色片A级一区二区三区| 欧美亚洲天堂| 岛国黄片网站| 囯戸精品高潮呻吟旡码| gogogo免费高清看中国国语| 97超碰磁| 亚洲一曲日韩精品| 日韩乱中文| 成人免费不卡在线视频| 白嫩国模丰满一二三区| 久久久久久AⅤ无码免费肉站 | 校园春色制服丝袜中文字亚洲| 日本成人电影资源网| 日韩操人| 日本欧美韩国日产片片在线看免| 麻豆AV一区二区| 中文字幕乱碼在线| 亚洲怡春院| 大香蕉中文201| 神马九九| 国产探花日韩援交| 国产精品探花视频| 无码日韩网站| 亚欧韩av| 亚洲欧洲精品视频发布| 高清无码国产亚洲| 国产欧美伊人| 日韩懂色网| 97伦乱| 蜜臀网 一区| 超碰在线人人射| 手机看片日韩人妻| 噜噜吧,噜噜色,噜噜| 亚洲日韩一区电影| 中亚黄色三级大片| 欧美激情在线观看视频| 成人无码电影在线观看网| 一级A啪啪啪啪| 日本福利二区视频| 暖暖精品二区三区观看| 97激情97激情| 欧美日日人人天天| 后入综合久久| 人妻一二三区| 国产色精品午夜大片| 久久五月份| 96国产污污污丝袜| 在线视频资源| 午夜福利激情在线视频| 99亚洲精品| 97爱b| 久久久久久久唑| 国产大学生口爆吞精合集| 富二代亚洲精品99| 日韩av电影网站| 少妇高潮流水av免费| 日本在线视频导航| 久久久久元码视频| 97天天| 在线99热| 天天激色| 欧美第五页| 26uuu偷拍亚洲欧洲综合| 久久精品人体AV| 亚洲综合校园春色| 日本阿v天堂在线观看| 国产 v乱码一区二| 天天看特黄的免费网站 | 欧美色www亚洲国产阿娇要播| 美女国产一区二区久久| 天堂日本亚洲欧美| 亚洲一区二区av| 黄色大片免费在线| 久久婷婷国产一区二区色| 色天堂在线观看| 舔人妻中文免费视频| 一牛影视成人片免费| 亚洲1区| 熟女少妇视频| 老熟女搡BBBB搡BBBB视频| 67194无码不卡| 久久精品一区二区三区蜜桃臀| 亚洲中文字幕精品一区| 婷婷久久综合| 人妻夜爽夜夜爽| 国产乱人伦AVA麻豆软件.| 九一精品牛牛一区二区| aa片毛片| 91精品电影18| 天天看片青娱乐| 五月天色综合| 久久人妻无码毛片A片麻豆| 强奸抽插av| 99热这里只有精品8| 日日骚av| 在线岛| 伊人96在线| 亚洲性爱乱操x| 97视频900| 五月丁香社区婷婷日韩欧美精品影院| 粉嫩少妇自慰在线| 后入国产| 蜜桃久久久久久久| 国产激情在线| 亚洲天堂男人在线| 九九热AV| 亚洲最大的黄色电影网站。| 97爱爱爱| 欧美有码亚洲中文字幕一区二区三区四区| 亚州色综合| 在线啊啊啊啊| 久久超碰国产一区二区三区| 一区黄二区黄| 韩国一级做a久久久久| 国产精品青青草| 欧美日韩国产成人高清| 人妻在线中出视频| 青草精品视频日本久久久久网站在线| 国产高清成人mv在线观看| 日本精品一区二区三| 久久老子无码午夜伦不卡| 精品一区99999| 日韩无码专区| 色欧美综合| 91撸色网 玖玖网 欧美| 超碰色男人操熟女| 亚洲图片偷拍欧美| 久久久久免费少妇| 欧美精品精品一区二区| 极品后入免费视频| 丝袜大香蕉| 色激情综合网站| 怡红院成人av| 在线观看综合精品亚洲| 欧美亚洲手机在线| www.91欧美| 亚洲色综合| 亚洲色欲天天天堂色欲网女| 后入福利视频| 第二页中文字幕| 操逼啊啊啊91| 黄色网址久久精品欧美喷水| 一中国女人毛片水真多| 国产精品视频播放| 九九色影院| 视频一区二区免费在线| 激情综合网一盗摄| 69精品少妇一区二区三区蜜桃| 精品无码一区二区三区| 久久鲁夜| 99热这里只有精品9| 国产曰批免费观看久久久| 无码91| 大香蕉黄色一区| 97se亚洲综合自| 欧美 日韩 另类 亚洲| 日韩人成网站在线播放| 色欧洲| 99re在线视频| 蜜桃传媒一区二区亚洲| 亚洲国产高清福利视频| 国产无码精品无码| 欲女人妻性色av| 丁香五月影院| 日本操逼视频在线| 天天性射网| 欧美三级不卡| 色优久久| 国产浮力影院第1页| 日产操逼| 综合亚洲欧美| 精品久久九| 日本丝袜美腿人妻九九| 色狠狠综合| AV在线性爱| 中文字幕丝袜国产第一页不卡| 国产乱码久久久| 天堂射| 丝袜内射| 91chinese在线| 日韩一级成人毛片免费观看 | 欧美日韩精品青青| 人妻熟女一区二区三区在线| 亚洲日产专区| 99久久9| 亚洲av影院在线观看| 超碰人妻97| 少妇特黄一区二区三区| 青青草日逼视频| 天天干天天干天天干| 亚洲蜜桃V妇女| 人妻 丝袜美腿 中文字幕| 亚洲成人精品在线一区| 少妇综合| 中文字幕乱码在线| 国产区在线| 黄页| 男人天堂2030| 91美女网站| 91综合网站| 久久久久久久强迫| 色路综合| 超碰人人干天天射| 91欧美亚洲| 国产精品熟女一区二区三区|