日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

端到端測(cè)試從入門到精通:概念、工具選型與CI集成實(shí)踐

端到端測(cè)試從入門到精通:概念、工具選型與CI集成實(shí)踐 1. 當(dāng)“e2e”只剩一個(gè)詞我面對(duì)的空輸入困局拿到這個(gè)題目的時(shí)候我盯著屏幕愣了幾秒。項(xiàng)目標(biāo)題只有三個(gè)字符——“e2e”正文空白關(guān)鍵詞空白摘要描述也是空白。這大概是做內(nèi)容拆解最極端的一種情況除了一個(gè)縮寫什么都沒有。但恰恰是這種“什么都沒有”的狀態(tài)反而逼著我把這個(gè)詞本身吃透。因?yàn)樵趯?shí)際工作中我們經(jīng)常會(huì)遇到類似的場(chǎng)景——需求方甩過來一個(gè)詞剩下的全靠你自己補(bǔ)全上下文?!癳2e”在技術(shù)圈里最常見的含義是end-to-end也就是“端到端”。這個(gè)詞最早在通信領(lǐng)域被廣泛使用指的是從發(fā)送端到接收端之間完整的數(shù)據(jù)傳輸鏈路中間不經(jīng)過任何協(xié)議轉(zhuǎn)換或中轉(zhuǎn)處理。后來這個(gè)概念被軟件工程、測(cè)試、機(jī)器學(xué)習(xí)、產(chǎn)品設(shè)計(jì)等多個(gè)領(lǐng)域借用衍生出了端到端測(cè)試、端到端加密、端到端流程、端到端模型等一系列用法。如果你是在一個(gè)技術(shù)團(tuán)隊(duì)里看到這個(gè)詞大概率它指的是端到端測(cè)試如果你是在產(chǎn)品文檔里看到它可能指的是端到端業(yè)務(wù)流程如果你是在AI相關(guān)的語(yǔ)境里看到它那很可能是端到端學(xué)習(xí)。我之所以要花篇幅把這個(gè)詞的多義性講清楚是因?yàn)榭蛰斎氡旧砭褪且环N信息。當(dāng)一個(gè)人只給你一個(gè)縮寫而不給任何上下文時(shí)說明這個(gè)詞在他的認(rèn)知里已經(jīng)是一個(gè)不需要解釋的共識(shí)。你要做的不是去問他“你什么意思”而是把這個(gè)詞在所有可能語(yǔ)境下的含義都梳理一遍然后判斷哪個(gè)最可能是他真正想聊的。這篇博文我就按“端到端測(cè)試”這個(gè)最主流的方向來展開同時(shí)也會(huì)覆蓋端到端思維在其他領(lǐng)域的應(yīng)用因?yàn)檫@三個(gè)字背后的方法論價(jià)值遠(yuǎn)不止測(cè)試這一個(gè)場(chǎng)景。適合讀這篇內(nèi)容的人大概有三類一是剛接觸端到端測(cè)試、不知道從哪里下手的新人二是團(tuán)隊(duì)里被安排去搭建e2e測(cè)試體系、但之前只寫過單元測(cè)試的開發(fā)者三是對(duì)“端到端”這個(gè)概念本身感興趣、想搞清楚它到底解決什么問題的人。不管你是哪一類我都會(huì)從最基礎(chǔ)的概念講起然后一步步深入到實(shí)操細(xì)節(jié)和踩坑經(jīng)驗(yàn)盡量讓每個(gè)階段的人都能拿到對(duì)自己有用的東西。2. 端到端測(cè)試到底在測(cè)什么從單元測(cè)試的盲區(qū)說起2.1 單元測(cè)試覆蓋不到的那片灰色地帶很多人第一次聽到“端到端測(cè)試”的時(shí)候第一反應(yīng)是“不就是測(cè)試嗎有什么區(qū)別”。區(qū)別大了。單元測(cè)試測(cè)的是一個(gè)函數(shù)、一個(gè)類、一個(gè)模塊它假設(shè)外部依賴都是正常的只驗(yàn)證內(nèi)部邏輯對(duì)不對(duì)。集成測(cè)試測(cè)的是幾個(gè)模塊拼在一起能不能正常工作但它通常還是會(huì)mock掉一些外部服務(wù)。而端到端測(cè)試顧名思義是把整個(gè)系統(tǒng)當(dāng)成一個(gè)黑盒從用戶發(fā)起請(qǐng)求開始到系統(tǒng)返回結(jié)果為止中間經(jīng)過的每一個(gè)環(huán)節(jié)——前端渲染、網(wǎng)絡(luò)請(qǐng)求、網(wǎng)關(guān)路由、業(yè)務(wù)邏輯、數(shù)據(jù)庫(kù)讀寫、緩存命中、消息隊(duì)列——全部走真實(shí)鏈路不做任何mock。我舉個(gè)具體的例子你就明白了。假設(shè)你做了一個(gè)電商下單功能單元測(cè)試會(huì)驗(yàn)證“計(jì)算訂單金額的函數(shù)在輸入三個(gè)商品時(shí)返回的總額是否正確”集成測(cè)試會(huì)驗(yàn)證“訂單服務(wù)調(diào)用庫(kù)存服務(wù)扣減庫(kù)存的接口是否返回成功”但端到端測(cè)試要驗(yàn)證的是一個(gè)真實(shí)用戶打開App搜索商品加入購(gòu)物車點(diǎn)擊結(jié)算選擇地址確認(rèn)支付最后收到下單成功的提示并且數(shù)據(jù)庫(kù)里確實(shí)多了一條訂單記錄庫(kù)存也確實(shí)減少了。這中間任何一個(gè)環(huán)節(jié)出問題端到端測(cè)試都會(huì)失敗。這就是端到端測(cè)試的核心價(jià)值它測(cè)的不是某個(gè)零件好不好而是整臺(tái)機(jī)器能不能跑起來。單元測(cè)試全綠不代表系統(tǒng)能用這個(gè)道理在無數(shù)個(gè)項(xiàng)目里被反復(fù)驗(yàn)證過。我見過太多團(tuán)隊(duì)單元測(cè)試覆蓋率90%以上結(jié)果一上線用戶連登錄都登不進(jìn)去因?yàn)榈卿浗涌诘木W(wǎng)關(guān)配置寫錯(cuò)了而單元測(cè)試根本不經(jīng)過網(wǎng)關(guān)。2.2 端到端測(cè)試的邊界它不負(fù)責(zé)什么搞清楚端到端測(cè)試能做什么很重要但搞清楚它不做什么同樣重要。端到端測(cè)試不是萬能的它有幾個(gè)天然的邊界。第一它不負(fù)責(zé)驗(yàn)證代碼分支的覆蓋率。一個(gè)端到端測(cè)試用例可能走了主流程但代碼里那些異常分支、邊界條件、錯(cuò)誤處理邏輯它不一定能覆蓋到。這些是單元測(cè)試的活。第二它不負(fù)責(zé)性能驗(yàn)證。端到端測(cè)試關(guān)注的是功能是否正確不是響應(yīng)時(shí)間是否達(dá)標(biāo)。雖然你可以在端到端測(cè)試?yán)锛右恍r(shí)間斷言但真正的性能測(cè)試需要專門的工具和場(chǎng)景。第三它不負(fù)責(zé)安全測(cè)試。端到端測(cè)試可以驗(yàn)證權(quán)限控制是否生效但SQL注入、XSS、CSRF這些安全漏洞需要專門的安全測(cè)試手段。我經(jīng)常跟團(tuán)隊(duì)里的人說端到端測(cè)試的定位是驗(yàn)收層的守門員它站在最外層確保用戶能完成核心業(yè)務(wù)操作。它不追求覆蓋所有代碼路徑而是追求覆蓋所有關(guān)鍵用戶旅程。一個(gè)設(shè)計(jì)良好的端到端測(cè)試套件應(yīng)該能在十分鐘內(nèi)告訴你“系統(tǒng)的主流程是不是通的”而不是花兩個(gè)小時(shí)跑完所有邊角場(chǎng)景。2.3 端到端思維在其他領(lǐng)域的映射“端到端”這個(gè)詞之所以能跨領(lǐng)域流行是因?yàn)樗澈笥幸环N通用的思維方式從起點(diǎn)到終點(diǎn)不遺漏任何中間環(huán)節(jié)。這種思維在測(cè)試領(lǐng)域叫端到端測(cè)試在機(jī)器學(xué)習(xí)領(lǐng)域叫端到端學(xué)習(xí)在產(chǎn)品領(lǐng)域叫端到端流程在安全領(lǐng)域叫端到端加密。端到端學(xué)習(xí)的核心思想是不再把任務(wù)拆成多個(gè)獨(dú)立的模塊分別訓(xùn)練而是用一個(gè)模型直接從輸入映射到輸出。比如語(yǔ)音識(shí)別傳統(tǒng)做法是“音頻特征提取→音素識(shí)別→語(yǔ)言模型→文本輸出”端到端做法是“音頻輸入→神經(jīng)網(wǎng)絡(luò)→文本輸出”中間不需要人工設(shè)計(jì)特征和中間表示。這種思路的優(yōu)勢(shì)是減少了模塊間的誤差累積但代價(jià)是需要更多的數(shù)據(jù)和算力。端到端流程指的是從用戶發(fā)起需求到需求被滿足的完整鏈路中間不經(jīng)過人工轉(zhuǎn)接或系統(tǒng)切換。比如用戶提交一個(gè)工單系統(tǒng)自動(dòng)分派、自動(dòng)處理、自動(dòng)通知結(jié)果全程不需要人工介入這就是一個(gè)端到端的流程。端到端加密指的是數(shù)據(jù)在發(fā)送端加密、在接收端解密中間經(jīng)過的任何節(jié)點(diǎn)都無法解密內(nèi)容。你會(huì)發(fā)現(xiàn)這些不同領(lǐng)域的“端到端”都有一個(gè)共同點(diǎn)強(qiáng)調(diào)完整性、強(qiáng)調(diào)不中斷、強(qiáng)調(diào)從源頭到終點(diǎn)的全鏈路負(fù)責(zé)。理解了這一點(diǎn)你就能把端到端思維應(yīng)用到自己的工作中不管你是做測(cè)試、做產(chǎn)品還是做運(yùn)維。3. 搭建端到端測(cè)試體系從工具選型到第一個(gè)用例跑通3.1 工具選型別一上來就選最重的端到端測(cè)試的工具生態(tài)非常豐富從輕量級(jí)的HTTP客戶端到重量級(jí)的瀏覽器自動(dòng)化框架選擇很多。我見過不少團(tuán)隊(duì)一上來就選最重的方案結(jié)果維護(hù)成本高得嚇人最后測(cè)試套件變成沒人敢動(dòng)的祖?zhèn)鞔a。選型的原則應(yīng)該是從實(shí)際需求出發(fā)從輕到重逐步演進(jìn)。如果你的系統(tǒng)主要是API服務(wù)沒有復(fù)雜的前端交互那用HTTP客戶端直接調(diào)接口就夠了。Python的requests、Java的RestAssured、JavaScript的axios都可以配合pytest、JUnit、Jest這些測(cè)試框架寫起來很快跑起來也快。這種方案的優(yōu)勢(shì)是穩(wěn)定、快、容易調(diào)試缺點(diǎn)是覆蓋不了前端交互。如果你的系統(tǒng)有Web前端需要驗(yàn)證頁(yè)面渲染和用戶操作那就需要瀏覽器自動(dòng)化工具。Playwright和Cypress是目前比較主流的選擇。Playwright支持多瀏覽器、多語(yǔ)言API設(shè)計(jì)比較現(xiàn)代Cypress開發(fā)體驗(yàn)好調(diào)試方便但只支持JavaScript且多標(biāo)簽頁(yè)場(chǎng)景支持有限。Selenium是老牌方案生態(tài)最成熟但API比較底層寫起來啰嗦等待機(jī)制需要自己處理。如果你的系統(tǒng)是移動(dòng)端App那Appium是繞不開的選擇。它支持iOS和Android可以用同一套API寫測(cè)試但環(huán)境配置比較麻煩跑起來也慢。還有一種方案是用各平臺(tái)原生的測(cè)試框架比如Android的Espresso、iOS的XCUITest速度快但只能測(cè)單平臺(tái)。工具適用場(chǎng)景語(yǔ)言支持學(xué)習(xí)曲線執(zhí)行速度requests/RestAssured純API測(cè)試Python/Java/JS低快PlaywrightWeb端到端多語(yǔ)言中中CypressWeb端到端JavaScript低中SeleniumWeb端到端多語(yǔ)言高慢Appium移動(dòng)端多語(yǔ)言高慢我的建議是先用最輕的方案把核心流程跑通等團(tuán)隊(duì)對(duì)端到端測(cè)試有了感覺再根據(jù)實(shí)際需要引入更重的工具。不要為了“技術(shù)先進(jìn)”而選型要為了“解決問題”而選型。3.2 環(huán)境準(zhǔn)備最容易被低估的環(huán)節(jié)端到端測(cè)試和單元測(cè)試最大的區(qū)別之一就是它對(duì)環(huán)境的依賴度高得多。單元測(cè)試可以在本地隨便跑端到端測(cè)試需要一個(gè)完整的、可用的系統(tǒng)環(huán)境。這個(gè)環(huán)境包括被測(cè)系統(tǒng)的各個(gè)服務(wù)、數(shù)據(jù)庫(kù)、緩存、消息隊(duì)列、第三方依賴的mock或沙箱、測(cè)試數(shù)據(jù)、網(wǎng)絡(luò)配置。我踩過的最大的坑就是環(huán)境不穩(wěn)定。今天測(cè)試跑過了明天同樣的代碼跑不過查了半天發(fā)現(xiàn)是數(shù)據(jù)庫(kù)里有一條臟數(shù)據(jù)?;蛘邷y(cè)試環(huán)境被人手動(dòng)改了一個(gè)配置導(dǎo)致所有用例全掛。端到端測(cè)試的穩(wěn)定性首先取決于環(huán)境的穩(wěn)定性。我的做法是用容器化技術(shù)把整個(gè)測(cè)試環(huán)境打包每次跑測(cè)試之前重新拉起一套干凈的環(huán)境。Docker Compose適合本地開發(fā)和小規(guī)模測(cè)試Kubernetes適合大規(guī)模并行測(cè)試。數(shù)據(jù)庫(kù)用獨(dú)立的實(shí)例每次測(cè)試前清空并灌入固定的種子數(shù)據(jù)。第三方依賴如果沒法用真實(shí)服務(wù)就用mock server模擬確保返回結(jié)果是確定的。還有一個(gè)細(xì)節(jié)測(cè)試環(huán)境的網(wǎng)絡(luò)延遲和真實(shí)環(huán)境不一樣。本地跑得好好的到了CI環(huán)境就超時(shí)。所以端到端測(cè)試的超時(shí)時(shí)間要設(shè)置得比預(yù)期長(zhǎng)一些并且要有重試機(jī)制。但重試不能濫用如果一個(gè)用例經(jīng)常需要重試才能過那說明它本身就不穩(wěn)定應(yīng)該去修它而不是靠重試掩蓋問題。3.3 第一個(gè)用例從登錄開始但別只測(cè)登錄寫第一個(gè)端到端用例的時(shí)候大多數(shù)人會(huì)選擇登錄功能。這很合理因?yàn)榈卿浭谴蠖鄶?shù)業(yè)務(wù)系統(tǒng)的入口而且邏輯相對(duì)簡(jiǎn)單。但我想說的是登錄用例的價(jià)值不在于驗(yàn)證登錄本身而在于驗(yàn)證整個(gè)鏈路的連通性。前端能不能渲染登錄頁(yè)、表單提交能不能到達(dá)后端、后端能不能查到用戶、密碼校驗(yàn)邏輯對(duì)不對(duì)、session能不能正確寫入、登錄后的跳轉(zhuǎn)對(duì)不對(duì)——這一條鏈路跑通說明系統(tǒng)的基本骨架是好的。寫登錄用例的時(shí)候有幾個(gè)細(xì)節(jié)要注意。第一不要用真實(shí)的用戶賬號(hào)用專門創(chuàng)建的測(cè)試賬號(hào)密碼和權(quán)限都是固定的。第二不要依賴驗(yàn)證碼如果系統(tǒng)有驗(yàn)證碼讓開發(fā)在測(cè)試環(huán)境提供一個(gè)萬能驗(yàn)證碼或者關(guān)閉驗(yàn)證碼校驗(yàn)。第三登錄后的斷言不要只檢查“頁(yè)面跳轉(zhuǎn)了”要檢查“頁(yè)面上出現(xiàn)了只有登錄用戶才能看到的內(nèi)容”比如用戶名、頭像、退出按鈕。第四記得寫登出的用例因?yàn)榈浅錾婕皊ession清理和跳轉(zhuǎn)也是容易出問題的地方。登錄用例跑通之后下一步是核心業(yè)務(wù)主流程。比如電商系統(tǒng)就是“搜索→加購(gòu)→下單→支付”社交系統(tǒng)就是“發(fā)帖→評(píng)論→點(diǎn)贊→刪除”。這些主流程用例的數(shù)量不用多但必須覆蓋用戶最常用的操作路徑。我的經(jīng)驗(yàn)是一個(gè)系統(tǒng)的端到端測(cè)試套件里主流程用例占30%異常場(chǎng)景用例占40%邊界條件用例占30%這個(gè)比例比較健康。3.4 斷言策略別只斷言HTTP狀態(tài)碼新手寫端到端測(cè)試最容易犯的錯(cuò)誤就是斷言寫得太淺。比如調(diào)一個(gè)接口只斷言HTTP狀態(tài)碼是200就認(rèn)為測(cè)試通過了。但200只代表請(qǐng)求被正確處理了不代表返回的數(shù)據(jù)是對(duì)的??赡芙涌诜祷亓艘粋€(gè)空列表可能返回了一個(gè)錯(cuò)誤碼在body里可能返回的數(shù)據(jù)結(jié)構(gòu)和預(yù)期完全不一樣。好的斷言應(yīng)該分層。第一層是協(xié)議層HTTP狀態(tài)碼、響應(yīng)頭、Content-Type對(duì)不對(duì)。第二層是結(jié)構(gòu)層返回的JSON字段名、字段類型、嵌套結(jié)構(gòu)對(duì)不對(duì)。第三層是業(yè)務(wù)層返回的數(shù)據(jù)值是否符合預(yù)期比如訂單金額是不是等于商品單價(jià)乘以數(shù)量。第四層是狀態(tài)層操作完成后數(shù)據(jù)庫(kù)里的數(shù)據(jù)是不是變了緩存是不是更新了消息是不是發(fā)出去了。我一般會(huì)寫一個(gè)斷言輔助函數(shù)把常用的斷言邏輯封裝起來比如assertOrderCreated(orderId, expectedAmount)這樣用例代碼讀起來更清晰維護(hù)起來也方便。斷言失敗的時(shí)候要輸出足夠的信息不能只說“斷言失敗”要說“期望訂單金額是100實(shí)際是99.9”這樣排查問題的時(shí)候能省很多時(shí)間。4. 讓端到端測(cè)試真正跑起來CI集成與穩(wěn)定性治理4.1 什么時(shí)候跑觸發(fā)時(shí)機(jī)的選擇端到端測(cè)試寫好了接下來要決定什么時(shí)候跑。跑得太頻繁浪費(fèi)資源而且如果環(huán)境不穩(wěn)定頻繁失敗會(huì)讓人麻木跑得太少問題發(fā)現(xiàn)得晚修復(fù)成本高。我的經(jīng)驗(yàn)是分三個(gè)層次。第一個(gè)層次是提交時(shí)觸發(fā)。每次代碼合并到主分支之前跑一遍核心主流程的端到端測(cè)試。這個(gè)套件要小、要快最好在五分鐘內(nèi)跑完。它的目的是攔住那些明顯會(huì)破壞主流程的改動(dòng)。第二個(gè)層次是定時(shí)觸發(fā)。每天凌晨跑一遍完整的端到端測(cè)試套件包括異常場(chǎng)景和邊界條件。這個(gè)套件可以大一些跑半小時(shí)到一小時(shí)都可以。它的目的是發(fā)現(xiàn)那些不常走但重要的路徑上的問題。第三個(gè)層次是發(fā)布前觸發(fā)。每次準(zhǔn)備發(fā)布新版本之前跑一遍全量端到端測(cè)試并且要在和生產(chǎn)環(huán)境盡可能一致的預(yù)發(fā)布環(huán)境里跑。這個(gè)套件要覆蓋所有關(guān)鍵用戶旅程跑完才能發(fā)布。這三個(gè)層次的測(cè)試套件不是簡(jiǎn)單的包含關(guān)系而是各有側(cè)重。提交時(shí)跑的是“冒煙測(cè)試”定時(shí)跑的是“回歸測(cè)試”發(fā)布前跑的是“驗(yàn)收測(cè)試”。它們的用例可以有重疊但斷言深度和覆蓋范圍不一樣。4.2 失敗分析區(qū)分真失敗和假失敗端到端測(cè)試最讓人頭疼的問題就是“假失敗”——代碼沒改環(huán)境沒變但測(cè)試就是掛了。假失敗的來源有很多網(wǎng)絡(luò)抖動(dòng)、第三方服務(wù)超時(shí)、數(shù)據(jù)庫(kù)連接池耗盡、測(cè)試數(shù)據(jù)被其他用例污染、瀏覽器渲染時(shí)機(jī)不確定。如果不加區(qū)分地把所有失敗都當(dāng)成真失敗去查團(tuán)隊(duì)會(huì)被搞得筋疲力盡。我的做法是給每個(gè)失敗用例打標(biāo)簽。第一類是確定性失敗同樣的代碼跑十次掛十次這種是真失敗要立刻查。第二類是間歇性失敗同樣的代碼跑十次掛兩三次這種大概率是環(huán)境或時(shí)序問題要記錄頻率優(yōu)先修那些頻率高的。第三類是環(huán)境性失敗比如數(shù)據(jù)庫(kù)連不上、服務(wù)沒起來這種不是測(cè)試本身的問題是環(huán)境的問題要修環(huán)境。對(duì)于間歇性失敗我一般會(huì)先看失敗時(shí)的截圖和日志。Playwright和Cypress都支持失敗自動(dòng)截圖和錄屏這個(gè)功能一定要開。很多時(shí)候看一眼截圖就知道問題在哪——比如頁(yè)面還沒加載完就開始點(diǎn)按鈕了或者彈了一個(gè)意料之外的提示框擋住了操作。這類問題的修復(fù)方式通常是加等待條件但等待條件要加得聰明不能無腦sleep(5)要用“等待某個(gè)元素出現(xiàn)”或“等待某個(gè)網(wǎng)絡(luò)請(qǐng)求完成”這種條件等待。4.3 測(cè)試數(shù)據(jù)管理別讓臟數(shù)據(jù)毀了一切端到端測(cè)試的數(shù)據(jù)管理是一個(gè)容易被忽視但極其重要的環(huán)節(jié)。如果測(cè)試數(shù)據(jù)不干凈用例之間會(huì)互相干擾導(dǎo)致莫名其妙的失敗。比如用例A創(chuàng)建了一個(gè)用戶用例B也創(chuàng)建了一個(gè)同名用戶結(jié)果用例B因?yàn)槲ㄒ患s束失敗了?;蛘哂美鼳刪除了某個(gè)商品用例B還在用這個(gè)商品下單結(jié)果下單失敗。我的做法是每個(gè)用例自己創(chuàng)建自己需要的數(shù)據(jù)用完自己清理。不要依賴全局的種子數(shù)據(jù)因?yàn)槿謹(jǐn)?shù)據(jù)一旦被某個(gè)用例改了其他用例就遭殃了。創(chuàng)建數(shù)據(jù)的時(shí)候用帶隨機(jī)后綴的標(biāo)識(shí)符比如test_user_${timestamp}_${random}避免命名沖突。清理數(shù)據(jù)的時(shí)候放在用例的teardown階段即使用例失敗了也要執(zhí)行清理。如果有些數(shù)據(jù)創(chuàng)建成本很高比如需要走審批流程才能創(chuàng)建的數(shù)據(jù)那可以用“數(shù)據(jù)池”的方式預(yù)先創(chuàng)建一批數(shù)據(jù)用例從池子里取用完還回去。但這種方式要小心并發(fā)問題多個(gè)用例同時(shí)取數(shù)據(jù)的時(shí)候要加鎖或者用隊(duì)列。還有一個(gè)技巧在測(cè)試環(huán)境里給測(cè)試數(shù)據(jù)打上特殊標(biāo)記比如用戶名的前綴是e2e_這樣清理的時(shí)候可以批量刪除不會(huì)誤刪人工創(chuàng)建的數(shù)據(jù)。4.4 并行執(zhí)行快是王道但別犧牲穩(wěn)定端到端測(cè)試跑得慢是一個(gè)普遍問題。一個(gè)完整的套件跑一兩個(gè)小時(shí)是常事如果每次提交都跑這么久開發(fā)體驗(yàn)會(huì)很差。并行執(zhí)行是提速的主要手段但并行會(huì)帶來新的問題資源競(jìng)爭(zhēng)、數(shù)據(jù)沖突、端口占用。我的經(jīng)驗(yàn)是并行粒度要控制好。如果用例之間完全獨(dú)立可以按用例并行如果用例之間有依賴可以按測(cè)試文件并行如果測(cè)試文件之間也有依賴那就只能串行。Playwright和Cypress都支持并行執(zhí)行配置起來也不復(fù)雜但前提是用例本身是獨(dú)立的。并行執(zhí)行的時(shí)候每個(gè)worker要有自己獨(dú)立的數(shù)據(jù)庫(kù)schema或者獨(dú)立的測(cè)試數(shù)據(jù)命名空間。比如worker1用test_db_1worker2用test_db_2互不干擾。端口也要?jiǎng)討B(tài)分配不要寫死。如果被測(cè)系統(tǒng)有單點(diǎn)限制比如某個(gè)服務(wù)只能同時(shí)處理一個(gè)請(qǐng)求那并行度就不能超過這個(gè)限制。我一般會(huì)先串行跑一遍確認(rèn)所有用例都是穩(wěn)定的然后再開并行。并行之后如果出現(xiàn)新的失敗優(yōu)先懷疑是并行導(dǎo)致的數(shù)據(jù)沖突或資源競(jìng)爭(zhēng)而不是業(yè)務(wù)邏輯問題。5. 端到端測(cè)試的常見誤區(qū)與我的踩坑記錄5.1 追求100%覆蓋端到端測(cè)試不是越多越好我見過一個(gè)團(tuán)隊(duì)寫了上千個(gè)端到端用例每次跑要三個(gè)小時(shí)而且經(jīng)常掛。他們的目標(biāo)是“端到端測(cè)試覆蓋所有功能”結(jié)果就是用例數(shù)量爆炸維護(hù)成本極高而且因?yàn)榕艿锰_發(fā)人員根本不愿意在提交前跑都是等CI掛了才去看。端到端測(cè)試的覆蓋目標(biāo)不應(yīng)該是“所有功能”而應(yīng)該是“所有關(guān)鍵用戶旅程”。什么是關(guān)鍵用戶旅程就是用戶為了完成某個(gè)核心目標(biāo)而必須經(jīng)過的路徑。比如電商系統(tǒng)的“下單支付”、社交系統(tǒng)的“發(fā)布內(nèi)容”、SaaS系統(tǒng)的“注冊(cè)開通”。這些旅程的數(shù)量通常不多一個(gè)中等規(guī)模的系統(tǒng)也就十幾到幾十個(gè)。把每個(gè)旅程的端到端用例寫扎實(shí)比寫一千個(gè)零散用例有價(jià)值得多。那其他功能怎么測(cè)用單元測(cè)試和集成測(cè)試。端到端測(cè)試是金字塔的塔尖不是塔基。塔基應(yīng)該是大量的單元測(cè)試中間是集成測(cè)試塔尖才是少量的端到端測(cè)試。如果倒過來維護(hù)成本會(huì)壓垮團(tuán)隊(duì)。5.2 忽視測(cè)試代碼的質(zhì)量測(cè)試代碼也是代碼很多團(tuán)隊(duì)把測(cè)試代碼當(dāng)成“二等公民”不review、不重構(gòu)、不寫注釋。結(jié)果就是測(cè)試代碼越來越亂新人看不懂老人不想改最后變成沒人敢動(dòng)的遺留系統(tǒng)。我踩過這個(gè)坑后來痛定思痛把測(cè)試代碼和業(yè)務(wù)代碼同等對(duì)待。測(cè)試代碼也要有良好的結(jié)構(gòu)。頁(yè)面對(duì)象模式Page Object Model是Web端到端測(cè)試的經(jīng)典模式把頁(yè)面元素和操作封裝成類用例代碼只調(diào)用類的方法不直接操作元素。這樣頁(yè)面改版的時(shí)候只需要改頁(yè)面對(duì)象類不需要改所有用例。API測(cè)試可以用“請(qǐng)求構(gòu)建器”模式把請(qǐng)求的構(gòu)造和斷言邏輯封裝起來用例代碼只關(guān)心業(yè)務(wù)語(yǔ)義。測(cè)試代碼也要有命名規(guī)范。用例名稱要能說明它在測(cè)什么比如test_user_can_checkout_with_valid_address而不是test_case_1。變量名要清晰不要用a、b、c這種。注釋要寫清楚為什么這么測(cè)而不是測(cè)什么。5.3 環(huán)境不一致導(dǎo)致的“在我機(jī)器上是好的”“在我機(jī)器上是好的”這句話在端到端測(cè)試?yán)镉绕渲旅R驗(yàn)槎说蕉藴y(cè)試依賴的環(huán)境最復(fù)雜本地環(huán)境和CI環(huán)境的差異最容易暴露問題。我遇到過本地跑得好好的到了CI就掛查了半天發(fā)現(xiàn)是CI環(huán)境的時(shí)區(qū)設(shè)置不一樣導(dǎo)致時(shí)間相關(guān)的斷言失敗。還遇到過本地用的是最新版的ChromeCI用的是舊版某個(gè)CSS選擇器行為不一樣。解決這個(gè)問題的根本方法是環(huán)境即代碼。把測(cè)試環(huán)境的配置、依賴版本、瀏覽器版本全部用代碼管理起來本地和CI用同一套配置。Docker鏡像是一個(gè)好方案把測(cè)試運(yùn)行器和瀏覽器都打包進(jìn)鏡像本地和CI用同一個(gè)鏡像環(huán)境差異就消除了。如果做不到完全一致至少要把關(guān)鍵依賴的版本鎖定比如瀏覽器版本、數(shù)據(jù)庫(kù)版本、Node版本。還有一個(gè)細(xì)節(jié)本地開發(fā)的時(shí)候很多人喜歡用headless模式跑測(cè)試覺得快。但headless模式和headed模式的行為有時(shí)候不一樣比如某些CSS動(dòng)畫在headless下不執(zhí)行導(dǎo)致元素位置計(jì)算錯(cuò)誤。我的建議是本地開發(fā)用headed模式調(diào)試CI用headless模式跑但CI的headless配置要和本地的headed配置盡可能一致。5.4 沒有失敗重試和告警機(jī)制端到端測(cè)試的失敗率天然比單元測(cè)試高因?yàn)橐蕾嚨沫h(huán)節(jié)多。如果沒有重試機(jī)制一個(gè)網(wǎng)絡(luò)抖動(dòng)就會(huì)導(dǎo)致整個(gè)CI失敗然后開發(fā)人員重新跑一遍過了就忽略了。這種“狼來了”的次數(shù)多了真正的失敗也會(huì)被忽略。重試機(jī)制要合理。我一般會(huì)配置最多重試兩次并且只對(duì)“間歇性失敗”的用例重試。如果一個(gè)用例連續(xù)三次都失敗那就不再重試直接報(bào)錯(cuò)。重試的時(shí)候要記錄日志方便后續(xù)分析哪些用例經(jīng)常需要重試這些用例就是穩(wěn)定性治理的重點(diǎn)對(duì)象。告警機(jī)制也很重要。端到端測(cè)試失敗之后要能通知到相關(guān)的開發(fā)人員。通知渠道可以是郵件、即時(shí)通訊工具、或者CI系統(tǒng)的通知。但告警不能太頻繁否則會(huì)被當(dāng)成噪音。我的做法是提交時(shí)觸發(fā)的測(cè)試失敗通知到提交者定時(shí)觸發(fā)的測(cè)試失敗通知到測(cè)試負(fù)責(zé)人發(fā)布前觸發(fā)的測(cè)試失敗通知到整個(gè)發(fā)布團(tuán)隊(duì)。6. 從端到端測(cè)試到端到端思維一種做事的方法論寫到這里我想把話題拉回到“端到端”這三個(gè)字本身。端到端測(cè)試只是端到端思維在軟件測(cè)試領(lǐng)域的一個(gè)應(yīng)用。這種思維的核心是對(duì)結(jié)果負(fù)責(zé)而不是對(duì)過程負(fù)責(zé)。在測(cè)試領(lǐng)域端到端測(cè)試對(duì)“用戶能完成操作”這個(gè)結(jié)果負(fù)責(zé)而不是對(duì)“某個(gè)函數(shù)返回了正確值”這個(gè)過程負(fù)責(zé)。在產(chǎn)品領(lǐng)域端到端流程對(duì)“用戶需求被滿足”這個(gè)結(jié)果負(fù)責(zé)而不是對(duì)“某個(gè)環(huán)節(jié)被處理了”這個(gè)過程負(fù)責(zé)。在運(yùn)維領(lǐng)域端到端監(jiān)控對(duì)“服務(wù)可用”這個(gè)結(jié)果負(fù)責(zé)而不是對(duì)“某個(gè)指標(biāo)正?!边@個(gè)過程負(fù)責(zé)。這種思維方式的價(jià)值在于它能幫你跳出局部視角看到全局。當(dāng)你只關(guān)注一個(gè)函數(shù)的時(shí)候你可能會(huì)寫出很優(yōu)雅的代碼但這個(gè)函數(shù)在整個(gè)鏈路里可能根本不被調(diào)用。當(dāng)你只關(guān)注一個(gè)服務(wù)的時(shí)候你可能會(huì)把它優(yōu)化到極致但這個(gè)服務(wù)可能不是瓶頸。端到端思維逼著你從起點(diǎn)看到終點(diǎn)從用戶看到系統(tǒng)從輸入看到輸出。我在帶團(tuán)隊(duì)的時(shí)候經(jīng)常讓新人做一件事把你負(fù)責(zé)的功能從用戶點(diǎn)擊按鈕開始到用戶看到結(jié)果為止中間經(jīng)過的每一個(gè)環(huán)節(jié)都畫出來。很多人畫到一半就卡住了因?yàn)樗麄儼l(fā)現(xiàn)自己根本不了解上下游的服務(wù)。這個(gè)過程本身就是一種端到端思維的訓(xùn)練。當(dāng)你對(duì)整條鏈路都清楚了你寫代碼的時(shí)候就會(huì)知道哪些地方要加日志哪些地方要加監(jiān)控哪些地方要加容錯(cuò)。端到端測(cè)試的終極目標(biāo)不是寫出一堆用例而是建立一種對(duì)系統(tǒng)完整性的信心。這種信心來自于你知道每一個(gè)關(guān)鍵路徑都被驗(yàn)證過每一個(gè)環(huán)節(jié)都被覆蓋到每一個(gè)失敗都能被快速定位。這種信心是單元測(cè)試給不了的也是集成測(cè)試給不了的。它只能來自于端到端測(cè)試來自于你對(duì)整條鏈路的掌控。最后分享一個(gè)我自己的小習(xí)慣每次端到端測(cè)試跑完不管成功還是失敗我都會(huì)花兩分鐘看一眼測(cè)試報(bào)告里的執(zhí)行時(shí)間。如果某個(gè)用例的執(zhí)行時(shí)間突然變長(zhǎng)了即使它通過了我也會(huì)去查一下原因。因?yàn)閳?zhí)行時(shí)間變長(zhǎng)往往是性能退化的早期信號(hào)早發(fā)現(xiàn)早處理比等到用戶投訴了再查要輕松得多。這個(gè)習(xí)慣幫我提前發(fā)現(xiàn)過好幾次數(shù)據(jù)庫(kù)索引失效和緩存穿透的問題算是端到端測(cè)試帶來的額外收益。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美一区二区在线资源| 欧美色吧综合| 疯操AV| 国产67194| 久操国产在线| 国产精品久久久久久夜夜夜| 熟女人妇一区二区三区| 春色91| 亚洲综合图片在线| 蜜臀久久久久久999| 国产白丝AV| 9久久精品| 天堂69亚洲精品中文字| 国产成人亚洲精品无码古代早漏男 | 日本一二三免费久久| 国产18精品亚洲精品| 欧日韩一二三f区| 午夜婷婷| 欧美黑人精品在线播放| 97在线免费观看| 97在线观看免费视频l| 91成人久久| 一区二区视频在看| 欧亚日韩中文在线| yy少妇精品久久| 在线观看精品国产免费| 色吧91| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 中文字幕日韩情色| 日夜久久久九九九久| 久操网视频| 欧美日韩国产成人高清| 综合大香蕉美。| 五月丁香激情综合网| 翔田千里无码一区| 国模私拍一区二区三区神乳| 美女91网站| 久久99精品国产| 久久亚洲人妻| 久久男人的天堂国产| 人人操人人搞人人草| 亚欧色图在线激情| 男人综合网| 91熟女丨老女人| 成人小电影网站tex| 九九超碰综合网| 天天操熟妇| 久久久青青草| 久久一区二区蜜桃| 我爱操| 久久大香蕉97| 日韩兔费看黄片| 9久精品| 久久久97| 日韩黄色一区二区三区| 超碰超碰欧美| 九九热免费国产视频婷婷伊人五月 | 久久久免费一级黄片| 亚洲欧洲日韩国产自在线| 欧美色交| 日韩欧美日韩| 人妻日日干| 91久久婷婷| 国产suv精品一区二区四| 五月天婷婷基地| 校园春色制服丝袜中文字亚洲| 日韩人妻资源在线看| 欧美黑人精品一区二区| 九九热免费国产视频婷婷伊人五月| 玖玖综合色| 午夜欧美J进J出白浆流出久久久| 亚洲少妇诱惑| 日本高清熟女久久一区| 日韩亚洲97| 青青草在线视频欧美| 久草精品一区| a片 xxxx受爽视频| 熟女五十路一区二区三| 九九九九久久久| 狠狠狠狠狠狠| 9精品在线| 人妻少妇无码| 亚洲一级特黄大片在线播放91| 欧美成人A天堂片在线观看| 日韩av影片在线观看| 色妹子A V| 97精品全部| 影音先锋日本一区二区| 亚洲色图在线视频| 国产精品午夜精品| 粉嫩av久久一区二区三区| 99这里只有精品国产| 国产一区二区三区精品观看啪| 日韩精品中文字幕二区| 亚洲国产一区二区三区在线| 天天久久久久久| 99re热有精品视频国产| 亚州日韩97| 视频国产成人精品日本亚洲18| WWW黄片COM| 双插在线| 欧美性爱精品七区| 日本污ww视频网站| 欧亚韩国999| 国产美女裸体秘 永久无遮挡| www.99在线| 欧美色图在线视频少妇| 特色a在线上| 在线人人人人人人精品超| 日本97久久久精品| 国产久久免费精品视频| 九九久久综合| 亚州精品人妻一二三区| 欧美性猛交美女自慰91| 日本大香蕉综合网| 人妻在线大香蕉| 加勒比aⅴ| 国产精品探花在线| 国产AV线| 搡老女人老妇女AAA一VU麻豆| 中文字日本乱码| 欧美亚洲高清| 亚洲中文字幕乱码无码一区二区| 欧美狠狠干| 综合网,亚洲,欧美| jizz啪啪| 中国熟女91| 玖玖玖玖精品国产剧情| 日韩干B| 在线强奷到舒服的无码视频 | 亚洲97成人在线观看| 天天干2区3区| 日韩免费福利在线观看| 天天综合网国产| A级片一区| 天天干天天爽| 国产成人五月天丁香花| 国产不卡片| 2024年最新色情网站在线观看| 中文伊人大香蕉视频| 蜜桃臀一区二区aV| 伊人五月天| 精品人妻一二三| 欧洲射精91| 欧美激情另类一区二区| 男人的天堂日韩| 欧美精品久久久久久久久88| 久久精品国产亚洲粉嫩| 一区二区三区男女操逼黄色小电影| 国产乱伦性爱区| 一本色道久久综合亚洲二区三区| 男人天堂久久精品| 人妻献身系列第54部| 999九九九九国产动| 国内毛片免费h片在线| 99久久99九九99九九九| 东北女人的毛片| 强奸乱伦αv片| 综合欧美亚洲| 日产123区精品免费观看| 欧美日韩插逼视频| 欧美黑人日韩少妇色情| 久久欧洲| 开心激情婷婷| 欧美日韩国产黄色片| 9I1性色影院| 日韩精品99999| 可以免费观看的日韩av毛片| 超碰无码加勒比| 高清肉丝中文无码| 久久久久久性爱视频| 玖玖爱免费观看视频| 亚洲一区二区在线观看91| 97这里只精品| 91狠狠色丁香婷婷综合久久| 噜噜噜在线视频| 国产精品九九| 精品九九九九九九九| 婷婷色色五月天| 美女极品一区二区三区| 无码精品久久| 青青草中文字幕| 97在线欧洲| 涩五月婷婷| 亚欧无码在线| www.伪伪| 欧美日韩亚洲一区二区在线观看| 欧美成人免费在线观看| 友优传媒精品在线一区二区| 欧美亚洲丝袜人妻制服中文99| 亚洲drav色图| 国产一区二区三区久久精品太古里| 又黄又爽在线观看视频| 色五月婷婷在线| 午夜福利精品| 干干干天天| 少妇熟女1区2区3区| 97操碰| 九99久久| 另类图片五月天| 欧美后入视频| 综合色久欲| 亚洲综合夜色| 午夜AV污污污| 国产精品一二三| www被窝色com| 美女好片色日本| 亚洲AV色图一区| 中文字幕一区二区三四五区日日骚| 久久久久久中文字幕中文字幕最新| 大香蕉乱伦视频网| 国产一区二区精品久久99| 人人做,人人操,人人摸| 成人aⅴ一区二区三区| 四虎影视永久在线免费| 九九黄色网| 色五月激情网| 日本午夜福利视频| 激情视频一二三| 久久久99999久网站| 91欧美长吊| 情色五月天久久久| 少妇蹲下买菜露大唇0| 欧美人妖内射| 青娱乐淫乱1314| 性爱综合一区二区| 亚洲超碰AV| www.狠狠| Aa东京男人的天堂| 精品国产乱码久久久久久久久久毛片| 成人国产二区三区在线,男女精品。| 另类欧美色| 欲香欲色| 91操人| 精品国产自在在线99| 天操天操夜操夜月操月年年操| 嗯嗯嗯好爽| 亚洲欧美日韩免费观看| 太久视频| 精品久久久久久中文字幕视频免费| 在线视频一区二区传媒| 亚州欧美综合| 超碰78| 大香蕉乱级| 人人操人人大香蕉| 亚洲九九爱| 蜜臀99久| 久久久久久久亚洲Av无码| 99热婷婷| 久久久久久久久久久999| 国产97色在线 | 亚洲| 激情综合网激情综合| 国产一区二区成人av在线播放| 超碰人妻天天干| 天天爱天天韩国日本牛牛牛牛| 综合久欧洲| 亚洲天堂久| 91免费看一区二区三区| 日韩人妻无码专区| 爱丝福利| 日本一级婬片试看三分钟| 中文字幕二区日韩天堂| 天天日骚逼熟女| 青青操网| 久久秀这里有精品| 精品久久久久成人码免| 久操凹凸视频| 成人日韩中文字幕| 国产精品久久| 日本不卡高清免v欧美日韩在线观看| 欧洲Au麻豆| 热G综合热G中文| 操www| 韩国女主播青草福利视频| 日韩无码人妻中字久久三区四区| 老熟女乱子伦中文字幕一区二区| 999久久久久久久精| 精品人妻一区二区蜜桃视频| 免费又黄又裸乳的视频| 超碰这里只有精品| 91成人在线免费视频| 久久偷拍人| 激情婷婷综合久久| 嫩草 人人网精品| 俄罗斯及免费在线看| 2020国产精品| 后入人妻无码| 五月婷婷无码| 亚洲资源站| 日本人妻中文字幕精品| 欧美性暴力猛交XXXX| 欧美97爱| www鬼畜国产男人的天堂| 99re99| 男人天堂一区二区| 好色综合| 久久久穴999| 欧美日韩*字幕一区| 亚洲天堂另类小说男人| 美女视频尤物网在线看| 热久日综合| blacked精品一区国产| 麻豆传媒一区二区在线观看| 久久亚洲AV成人精品无码| 先锋精品av色鲁| 亚州性色| av操操不卡| 性爱综合一区二区| 99热线麻豆| 长长久久88视频| 97天堂| 玖玖爱综合| 久久首页| 亚洲成人AB| 91啪啪视频| 蜜桃狠狠色伊人亚洲综合网站| 国产视频一区二区在线| 巨爆乳一区二区爆乳区| 精品人妻伦一区二区三区久久| 一区二区三区四区免费视频| 天天爱天天操| 人妻 制服 日韩 中文 在线| 欧美日韩操逼嗦吊| 97超碰欧美| 国产精品高潮久久AV| 国产日韩欧美亚洲精品95| 亚洲色棕合| 91欧美高清| 国产日产精品久久快鸭的功能介绍| 激情视频一二三| 91精品丝袜在线观看| 精品人妻一区二区三区四区不卡在| 91日日| 美女自卫慰黄网站免费| 九九热久久99精品re| 国产精品久久久午夜夜伦鲁鲁| 亚洲天堂性爱| 久久久久亚洲Aⅴ无码| 91美女视频在线观看| 久久综合超碰| 亚洲成人精品久久久| 国产黄色av大片网站| 超碰97久久| 97av,com| 日韩钢筋无码高清啾啾啾| 国产成人 综合亚洲 天堂| 久久久久久九九九九九九| 黄色二级片网站| www黄片免费看com| 无码人妻精品一区二区中文| juliaann欧美丝袜办公室| 9长久久精品| 观看免费区二区三区二| 91丨九色丨东北熟女| jk白丝没脱就开始啪啪| 欧美岛国精品在线观看| 嗯嗯啊啊啊好爽| 日日日日做夜夜夜夜做无码97| av在线人气| 很很干很很操| 中文字幕二区日韩天堂| 熟女人妻av在线资源,黄色的资源| 国产精品无码在线| 永久免费发布性爱网| 人人操人人插 - 百度 - 百度| 黑丝制服中文字幕| 蜜桃狠狠色伊人亚洲综合 | 俺去啦自拍| 亚洲 另类 丝袜 自拍 动漫| 美女91在线观看| 亚洲综合码| 青青草日本无码| 久久xx| 91狠狠综合久久| 国产一区二区啪啪视频| 午夜影美女日鸡鸡天天视频国产| 亚洲国产成人福利在线观看| 啪啪视频亚洲第一| 人妻一二三区| www.伪伪| 亚洲αv一区二区三区| 日韩激情毛片一级久久久| 亚洲欧美综合| 午夜小电影在线插入淫高潮| 中文?日韩?免费?精品| 亚洲色图欧美| 国产 亚洲 一二三四| 偷拍精品一区二区三区| AV麻豆免费一区| 日韩一级久久毛片| 精品日韩中文在线| 日本精品无码三级网站| 久久九九99| 女优免费一区二区永久| 日韩天堂av电影在线观看| 99久久综合| 久草在| 大香蕉之青青草原| av草草在线电影| 凹凸 69堂 在线播放| 日本Suv精品一区二区| 五十路三区在线| 亚欧免费观看视频| 亚洲色图欧美色图日韩色图| 每日更新AV| 99热超碰| 亚洲综合小视频小说在线观看| 97日视频| 揉揉揉夜夜| 国产精品免费久久久久久久久久| 国产精品毛片?v一区二区三区 | 国产精品久久久视频| 麻豆性爱视频在线播放| 操死我了啊啊啊| 在线天堂资源亚洲| 岛国片在线播放| 综合一区中亚洲国产成人综合精品 | 久久香蕉国产传媒一区剧情天美| 欧美色图亚州激情| 日韩精品人妻中文字幕不卡乱码| 日日爱99| 成人性爱视频在线看| 婷婷99狠狠| 中文字幕久久精视频久久大全| 操淫穴亚洲五月丁香 | 久久久久久久人妻丝袜| 欧美成人一级免费电影| 97AV爱| 久草久日| 精品国产91av一区二区三区| 婷婷伊人綜合中文字幕| 91性高| 91丝袜| 强奸乱伦大香蕉网| 色综合加勒比四四季| 男人的天堂三级| 黄色操人| 免费看美国人人爽,人人操| 欧美日韩97在线| 极品销魂美女一区二区| 97在线精品| 国产性爱欧美性爱在线| 亚洲一区中文精品| 免费看污网站| 欧美天天综合| Julia在线播放亚洲久久| 欧美日韩国产人人| 日韩性爱视频在线免费观看| 日韩三四五区| 97国产精品一区| 亚洲最大无码中文字幕网站| 国产精品丝袜久久亚洲不卡| 国产 亚洲 一二三四| 天天干少妇| 91超碰丝袜制服| 大香蕉久| 欧美黑人91| 亚洲 自拍偷拍 欧美| 久久综合中文国产| 欧美日韩大香蕉| 天堂九九九九九九九九九| 国产一区二区精品久久久不卡蜜臀| 色婷婷视频| 天天干人妻| 精品久久久久久无码| 爆乳免费黄网站| 91网站18| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 国产精品伦理| 五月天激情小说| 91精品丝袜久久久久久| 91视频国品一二三区| 日韩日韩日韩-国产乱码精品一区二区| 中文字幕乱在线伦视频中文字幕乱码在线 | 青青草字幕AV| 久久久久久AⅤ无码免费肉站| 激情四射五月天| h无码动漫在线观看| 伊人久久蜜月| 91在线精品| 久久九九热| 伊人婷婷五月天| 少妇天堂| 天天亚洲综合| 高清成年美女黄网站免费大全| 九九九九欧美| 国模精品一区二区三区苹果色戒| 熟妇人妻丰满久久久久久久无码| 久久久久久久久久久久久久久性生活视频| 日本淫乱女一区二区三区视频| 嗯嗯啊啊啊好舒服| 91丨豆花丨熟女| 蜜臀一二三区| 一区二区你上我| 操逼A∨| 狠色婷婷久久一区二区三区_| 国产精品自在线发布| 久久久极品| av在线人气| 亚洲欧美在线观看免费| 久久日韩肥臀| 老师充足的奶水小说| 欧美日韩国产三级黄色| 嗯嗯啊啊啊好爽| 亚洲91网。| 麻豆啪啪啪视频| 久久伊人最新网址视频| 丰满人妻一区| 综精品久久久aaaa| 日韩乱伦视频| 人人操人人色网| 超碰69| 青青草原人妻| 国产女人操逼视频| 国产一国产一级毛片古装| 99热日| 欧美久久草熟女| 全免费a敌肛交毛片免费| 97色在线视频| 玖玖大干人妻| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 日韩精品中文字幕人妻| 欧美手机在线综合| 国产乱码精品久久久久久| 色婷婷基地| www.99中文字幕| 中国人高清www色视频免费| av东京热男人的天堂| 男人天堂一区二区| 日韩精品一区二区三区色欲| 97在线观看播放视频| 91综合网站| 亚洲第一男人天堂| 亚洲天天精品| 男人网站婷婷| 欧美激情超碰777| 加勒比大香蕉视频在线| 无码国产精品午夜不卡(| 91午夜无码| V A在线| 91亚洲网站| 97国产精选| 欧美激色| 色欧洲97| 夜色97| 欧美久久人妻少妇一区二区| 成人综合视频久久| 色婷婷aV一区二区三区麻豆综合| 一区二区三区精品黑丝白丝酒店对鸡 | 2023天天操夜夜操| 日日骚中文字幕| 殴美性天天| 久久东京热成人| 97中文综合| 色哟哟av| 日韩精品人妻中文字幕不卡乱码| 941超碰| 日本 情色 1区2区3区| 久久久久久裸体| 呦女网站| 大香交| 高清孕妇孕交 交孕妇| 美熟女逼导航AV操逼| 国产久久男人天堂| 91精品久久久久久77777| 天天插夜夜爽| 风月影院男女十八禁| 色综合1991| 青草伊人网| 一区二区视频在看| 日本一区不卡| 亚洲欧洲中文日韩女优乱码| 天天干天天燥| 亚洲成熟国产精品美女| 日本片日本片祼观看网站在线看中文版网页在线看 | 久久成人午夜精品影院| 亚洲强奸乱伦影视网| www.色99| 人人操天天爽| 久久久久久久久国产| 91黄射| 测评在线观看AV| 黑人美精品 A片| 国产亚洲色婷婷久久99精品91葵花宝典| 人看人人摸人人操| 夜夜爽77777| 1区2区3区中文字幕日韩| 都市激情人妻一区二区青青操视频 | 久久久91| 69少妇一区二区| 黄色视频特级毛片| 亚洲色人妻综合| 国产盗摄美女如厕大神作品在线观看| 加勒比性爱成人在线| 亚洲黄色电影| 国产精品原创巨作?v网站| a级成人毛片免费视频高清| 婷婷五月天成人| 久久久久9999妇女| 干B网| 操日韩第| 嗯嗯嗯嗯啊啊啊好紧好大| 亚洲AV不卡在线观看尤物| 欧美在线亚洲| 911av网站免费观看| 色欲天天综合网| 极品粉嫩少妇视频| 蜜臀久久99精品久久久久久酒店| 国产一级特黄大片处女| 嗯嗯嗯好爽| 91无摭挡| 天天视频网站黄| 青草视频在线看看看看看看看看看| 亚洲淫乱骚妇AV| 国产sv美女内射| 91c色| 暖暖精品二区三区观看| 少妇大屁屁| 中文字幕交换人妻| 亚洲自拍另类丝袜综合| 久久人| 欧美做爰无码A片视频| 老汉网| 欧州一区二区三区四区| 99久久久| 欧美日韩人妻精品一区二区三区| 日韩Va亚洲va欧美Ⅴa久久| 欧美中文字幕男人天堂久久精品 | 51一区二区三区| 手机不卡视频不卡在线一二三区| 网友自拍第1页 | 欧美 亚洲精品首页| 国产 无码 一区二区| 加勒比综合九九99视频在线播放| 香蕉欧美| 欧美综合97www| 欧美色图20p| 日本一本一区二区三区四区五区欧美日韩中文字幕 | 另类图片五月| 大香蕉综合网| 亚洲男人天堂2019| 亚洲欧美另类小说| 五月丁香在线| 亚洲在线91| 混色激情av| 国产久久久久久| 无码免费一区二区三区啪啪| 青青在线视频日韩欧美| 国产按摩一区二区三区| 97超碰欧美中文字幕| 人人色97| 秋霞怕怕片| 日韩欧美成人大香蕉| 日韩偷拍一区二区三区| 超硑97精品| 巨爆乳一区二区爆乳区| 亚洲男人的天堂网| 911粉嫩人妻| 91热热色| 18精品一区| 被男人吃奶很爽的毛片| 精品久久久不卡一区二区| 18禁网站在线播放| 99久久久| 1区2区3区在线视频| 成年人网站在线免费观看| 热久久九九热| 啪一啪免费视频| 新怡红院| 中文字幕一区二区三区人妻少妇在线| 国产又色又粗又黄又爽| 曰韩香蕉97| www.天天干| 丰满人妻被猛烈进入中| 青青草字幕AV| 在线只有精品| 国产一区二区成人av在线播放| 99在线视频播放| 日本理论在线| 日本欧美中文字幕| 欧美亚洲成人在线一区二区三区| 日韩av乱伦| 思思热国产高清| 久久亚洲色图中文字幕| 婷婷五月天基地| 性爱综合一区二区| 操逼精品视频| 国产乱伦性爱区| 亚洲欧洲激情卡通另类文学四射小说网站| 色狠狠 - 百度| 国产乱弄免费在线视频。| 欧美性爱中文字幕无线码| 欧美九九九| 偷拍亚洲高清图片| 手机看片1025| 国产精品一区二区手机看片| 东方亚洲在线操逼天堂| 久久国产精品91| 中国国产精品一区视频| 酒色综合网| 久久美国毛片| 亚洲男人的天堂V| 日韩精品中文字幕二区| 国产第12页| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 强奸国产精品视频| 日韩97在线| 粉嫩久久久久| 日韩av三四区| 久久天堂婷婷网| 无码人妻丰满热妇又大又粗| 26UUU欧美日本| 大香蕉中文网| 亚洲色综网| 久久一二三四不卡 | 日本道人妻久久久在线不卡色视频| 欧美激情视频一区二区三区不卡| 激情四射五月天| 国产操偷| 亚洲成aⅴ人片不卡无码| 丰满少妇一区二区三区免费看| 丰满人妻一区二区中文| 密臀AV在线| 男人天堂站| 大香蕉色十月| 26uuu国产| 九九久久99| 国产精品成人无码av| 中日韩熟女| 欧美一级国产一级| 日本精品网站在线中文| 久久久久久亚洲Av无码| 三级日韩一区二区三区| 日韩中文字墓| 日韩一级欧美一级国产一级台湾 | 丁香婷婷九月| 免费人成?大片在线播放| 岛国黄色短视频| 曰韩精品视频一区二区| 国产女同视频在线播放| 收看日本人日bb| 人人贴人人摸| 天天操夜夜操狠很操| 日小BB小视频| 欧美一级黄片视频在线| 欧美日韩国产黄色片| av在线观看不卡网站| 国产亚洲性生活视频播放| 激情天天视频| 91国产精品熟女| 欧美黑人精品一区二区| 夜夜嗨视频| 久操91视频| 欧美午夜视频免费观看| 欧美一级特黄淫片在线观看| 天天综合欧美综合| 久久精品无码专区| 婷婷在线视频| 人妻熟女午夜精品在线| 亚洲国男人的天堂| 成人无码专区精品视频| 亚洲色图国产另类| 五月天亚洲网| 91精品丝袜久久久久久| 东京热一区二区中文字幕| 精品视频在线观看精品| 人人操我人人干| 国产偷拍自拍在线视频| 色999亚洲人成色| 不卡超碰护士AV在线免费播放| 99热在线不卡| 久久原创中文| 欧美一二三| 国产亚洲女v在线观看| 亚洲第一在线视频| 1区2区3区在线视频| 日韩中文字幕2020| 午夜精品久久久久久久第一页按摩| 色综合加勒比| 另类 日韩 熟女| 亚码激情| 97国产精品久久久久| 亚洲高清自拍| 欧美经典一区二区三区| 9/A片 | 国产精品不卡一区二区三区| 老熟女天天操| 久久久久人妻二区精品叶可怜| 乱伦熟女区| 91国产大片| 九九九久久久W精品| 黄色电影在线播放综合网站| 天天爽夜夜操| 久久久噜噜噜久久人妻| 久久久久97| 日韩精品中文字幕二区| 老熟妇综合| 东京热男人天堂| 中文字幕123| 中文字幕乱碼在线| 精品人妻一区二区三区免费视频| 日韩性爱1级片视频| 亚洲午夜免费狠狠干| 午夜综合在线| 女人与公拘交酡2020视频| 丰满的三级少妇欧美久久久| 欧美在线55555| 青草综合| 一本久道久久综合狠狠爱| 毛片麻豆91糖心精品毛情片| 亚洲A曰本VA欧美VA视频| 97五月天| 国产欧美日产一区二区三区 - 国产欧美日 | 天堂综合网| 综合欧美日本三级| 久久久久久久六六| 极品综合| 亚洲最大的黄色电影网站。 | 九九久久首页| 天天拍夜夜| 五月天成人综合| 淫纸中9区| 午夜高清成人在线视频| 久草久日| 另类小色呦| 91欧美丝袜| 欧美日韩 强奸乱伦| 蜜桃久久久久久久久久久久| 中文字幕日韩电影人妻| 91色综合激情| 老熟女乱伦一区| 日韩一区二区熟女| 日韩强奸av| 综合激情97| 女欧美一区二三区| 少妇一区二区三区在线观看| 在线免费观看高清无码视频| 久久久久骚| 在线免费观看高清无码视频| 中文字幕在线观看AV| 十八禁啪啪视频| AV天堂电影网| 久久久久久久伊人精品| 亚洲综合图色在线| 99re公开精品免费视频| 亚洲青青草| 精品一区二区亚洲国产| 97ai亚洲| 99热超碰| 天天爽夜夜爽夜夜爽精| 夜夜操一区二区| 国产精品成人无码av无码免费| 东京热AV男人的天堂| 天天插天天操| 色欲天天综合久久久无码网中文| 天天摸夜夜摸| 精品一区二区成人| 欧美瑟综合| 亚洲精品819| 亚洲激情综合另类男同| 欧美青青草视频| 丁香婷婷色五月| 亚洲国产美女久久久久| 中文字幕97色| 秋霞欧美性爰视频| 亚洲久久久久| 东京热精品97综合网| 国产成人自拍视频在线| 91亚州| 欧美天堂亚洲电影院一区在线播放 | 久久大香蕉手机高清视频| 日韩免费簧片| 加勒比性爱成人在线| 精品视频久久久久九九九九9999| 亚洲性爱成人| 蜜臀99久久精品久久久久久| 青娱乐 成人娱乐在线| 岛国黄| 97极品无码| 人妻人妻天天碰| 色情成人五月天| 日本欧美韩国国产在线| 欧美色图99| SS久久| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 天堂综合| 四虎影视在线| 国产又操| 日韩无码精品综合久久| 啊啊啊啊免费视频| 都市激情人妻一区二区青青操视频| 三级片网站在线播放| 日本成人免费一区二区三区| 噜噜噜噜天天狠狠| 日韩 成人 有码| 嗯嗯啊在线视频| 人妻日日干| 激情天天视频| 激情小说亚洲色图| 神马久久免费电影观看| 久草毛片电影怡| 人妻天堂综合网| 国产树林里野战在线看| 欧美日韩啪啪电影| 精品九区| 欧美后入式| 亚洲色图 图片| 黄色高清久久无码依人| 视频二区美腿丝袜制服人妻欧美 | www久久精品| 天天插夜夜爽| 91欧美成人色站| 尻女朋友一夜| 熟女人妻av在线资源,黄色的资源| av日韩在线观看电影| se01国产在线视频| 91色人妻| 人妻性爱一区二区| 精品九九九| 蜜臀久久99精品久久久久| 欧美日韩制服| 欧美性Fer办公室秘书| 60秒免费小视频| 久插综合| 91日日| 超碰97玖玖爱| 久久成年精品| 国产AV人人 夜夜人人澡| 蜜臀在线免费观看在线免费观看| 天天色综合图片| 美女刺激久久国产欧美| 久久九九99| 能看的AV| av天天在线观看| 欧美午夜精品久久久久久超碰| 激情六月天| 婷婷五月花| 亚洲AV小说| 国产欧美一区二区| 大香蕉在线86| 中文字幕天天操| 欧美亚洲se91| 黄色一区三区| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 97超碰色屌| 中文字幕久久精品一区| 亚洲综合射| 夜夜嗨老熟女AV一区二区三区| 综合大香蕉美。| 骚货操死你| 天天射日日干| 乱伦一二三区| 亚洲成a人片在线观看中文!!!| 黄片aaaaa一区| 亚洲av强奸乱伦| 青青操青娱乐| 二对二中文字幕。| 亚洲综合射| 色约约一区=区三区| 免费观看一区| 小日子操bb在线看| 天天色播亚洲综合网站| 日日爽夜夜爽| 97精品视频免费| 成人久久久精品| 国产精品久久久久久久久久久久久久吹| 丰满人妻一区二区三区免费| 色吧5亚洲| 亚洲日韩美国人妻| 99爱精品| 加勒比日本在线| 久久有码视频| 69XX一中文字幕人妻91| 深夜国产一区二区三区在线看| 大香蕉五月天婷婷| 欧美性,亚州色| 97亚洲自在精品在线观看| 翔田千里AV无码秘 三区| 老熟女乱子伦中文字幕一区二区| 色婷婷综合网站| 9 7超碰在线免费观看| 色综九九九一区| 一道α片欧美| 亚洲人妻av| 蜜屁Av| 精…码一二三区| av无码av无码专区| 久久本道| 久久超碰天天| 欧美爱三级日韩久久| 亚洲成人免费电影| 新视频sss国产| 啊啊啊想要| 国产尹人在线视频免费| 91色图片| 91丝袜美女视频| 人人摸人人叼| 美女主播色欲91抠b在线播放| 国产精品伦理| 3028国产精品| 香蕉久久精品| 七月丁香婷婷| 国产激情久久久| AV中文字幕剧情1区2区3| 亚洲成人激情小说视频| 色婷婷香蕉| 丝袜美女诱惑 91 视频| 欧美精品成人一区二区在线观看| 日本韩欧美在线播放a| 最新精品久久蜜桃 | 亚洲精品97久久| 26uuu国产免费观看| 亚洲视频,小说| 91社区伊人| 亚洲午夜免费狠狠干| 丝袜美腿91| 免费操逼视频下载| 96久久久精品| 成人小说视频在线精品欧美| 久久久久久久少妇| 另类天堂| 天无日色综合| 欧美资源| 欧美嫩性色| 国产精品96久久久久久| 九九久久精品| 91色亚洲| 男人的天堂啪啪| 久久这里只| 九九九九久久久| 搡老女人老熟女91老熟女综合网| 玖玖婷婷五月天| 国产9熟妇视频网站| 毛片电影一区二区三区| 啊啊在线| 色欲天天综合网| 校园激情狠狠四射| 五月丁香激情综合| 亚洲色图欧洲| 五月天春色激情网| 国产精品久久久吖| 校园春色综合色| 国产精品亚洲无码| 欧美91精彩| 日本高清有码网址视频| 久久熟女嫩草成人片免费| 国产精品久久久三级无码| 这里只有97精品| 久久婷婷一区二| 精品无码一区二区三区色欲| 超碰性爱97| 久久久久久亚洲中文| 玖玖草久草99蜜月一区二区三区| 免费啪啪一级视频| 欧美九九九| 日本人妻一区二区| 国产人妖的免费的视频| 久热大香蕉网站| 久久伊人五月天| 极品国产内射| 操死我了嗯嗯嗯| 国产精品视频精品一二| 天天看片青娱乐| 91亚洲欧美色图| 播播亚洲小说亚洲| 玖玖久久久| 日日橹狠狠爱欧美超碰| 亞洲久久直播| 中文字幕在线免费观看 | 九九九精品成人免费视频小说| 1二区9| 色色色99| 精品国产Av无码久久久亚洲| 夜夜 中文视频rt| 91丨九色丨东北熟女| 97精品一区二区视频| 青青草玖玖爱| 黄色网址久久精品欧美喷水| 色欲久久久久综合网| 91性网| 特污精品女优骚货黄色视频在线免费观看| 99∨VTV| 九九热av| 亚洲性猛交| 亚洲精品色| 免费一级黄色录像影片| 国语精品对白| 狠狠亚洲| 蜜臀av一区二区三区免费观看| 日韩成人在线性爱视频| 校园激情狠狠四射| 欧美变态激情网| 亚州宗合另类| 在线v中文字幕一区二区三区| 男人的天堂网页| 欧美熟女逼久久久久久| 亚洲精品一区二区三区新线路| 亚洲成a人在线观看久| 亚洲高清自拍| 亚洲91射| 一区二区三区 丝袜高跟| 精品人妻伦一二三区久久| 欧美大香蕉同搞| 午夜小电影在线插入淫高潮| 91超碰丝袜制服| 伊人991| 国产不卡片| 开心五月天激情网| 中文字幕狠狠玩| 久久久久久久伊人精品| 天天肏天天干| 就去色综合| 久久国产999| 四虎国产成人精品免费一女五男| 这里只有精品视频| 亚洲国产欧美中文永久| 欧美一区二区三区另类精品| 色在线视频导航| 天天色欧美| 9 1果冻精品视频| 中文字幕在线第二页| oumeizonghese,www| 久久e6只有精品| 99丝袜福利在线播放| 成人日韩欧美| 超碰在线人妻| 怡红院一区二区熟女人妻| 亚洲制服aⅴ中文字幕| 在线岛国新天堂8| а√天堂资源官网在线资源| 神马久久午夜| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | av一区二区三区四区五区久草臀| 好看的91视频| 亚洲天堂男人在线| 日日干日日| 国产一级片| 五月婷婷大香蕉| 狠狠色婷婷7777久| www.久久99| 丁香五月综合| 自拍啪啪视频| 久九干| ,成人免费啪啪视频| 人人性爱视频免费| 婷婷久久五月综合激情| 伊人天天久久动态图| 91操操操操| 亚洲av无码国产精品字幕| 啪啪性爱免费视频| 飘花国产午夜精品不卡| 中文字幕人成乱码熟女香港| 一级片在线观看高清无码| 欧美精品99久久久**| 成人亚欧免费视频| 无码聚合| 99婷婷| 91 丝袜在线| 欧美97日韩精品| 啊啊啊啊啊啊啊啊要喷了|