亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

Java接口自動化實戰(zhàn):RestAssured+TestNG+Allure構建博客系統(tǒng)測試框架

Java接口自動化實戰(zhàn):RestAssured+TestNG+Allure構建博客系統(tǒng)測試框架 做了小半年博客接口自動化從零搭了一套 Java RestAssured TestNG Allure 的工程中間踩的坑比寫的用例還多。這篇東西不聊虛的直接把整個實戰(zhàn)過程拆開講怎么選型、怎么設計用例、怎么處理依賴數據、怎么接 CI 定時跑最后把常見問題也一并整理了。博客系統(tǒng)是我見過最適合練手接口自動化的業(yè)務場景沒有之一。用戶、文章、評論、標簽、分類這些模塊互相關聯(lián)接口數量適中既有基礎 CRUD又有帶鑒權的復雜操作還有分頁、搜索、權限校驗這些典型邏輯。把這套系統(tǒng)的接口自動化做透了換到任何業(yè)務系統(tǒng)都不會慌。1. 項目拆解為什么博客系統(tǒng)是練接口自動化的好靶場1.1 被測系統(tǒng)的模塊與核心鏈路先說我選定的博客系統(tǒng)采用了前后端分離的架構后端是 Spring Boot 構建的 RESTful API前端獨立部署測試只針對后端的接口層。這種架構方式其實比單體傳統(tǒng) Web 應用更適合做接口自動化因為所有交互都通過 HTTP JSON 完成天然就是為接口測試設計的。博客系統(tǒng)的核心模塊可以拆成這幾個用戶模塊注冊、登錄、獲取個人信息、更新資料、修改密碼文章模塊創(chuàng)建文章、編輯文章、刪除文章、文章列表分頁、文章詳情評論模塊發(fā)表評論、刪除評論、評論列表標簽與分類模塊創(chuàng)建標簽、查詢標簽、按分類篩選文章文件上傳模塊圖片上傳主要用于文章封面模塊之間不是孤立的存在明顯的依賴關系用戶先注冊登錄拿到 Token才能創(chuàng)建文章文章創(chuàng)建成功后才能往這篇文章下面發(fā)表評論標簽要在文章創(chuàng)建時綁定。這種依賴鏈路恰恰是接口自動化測試設計中最需要注意的地方它決定了測試用例的執(zhí)行順序和數據準備方式。1.2 接口自動化要解決的問題不只是“能通不通”很多人做接口自動化只停留在“調通接口斷言狀態(tài)碼是 200”這個層面。這個階段只能叫接口冒煙測試價值很有限。真正有意義的接口自動化至少要覆蓋三個層次的問題功能正確性、業(yè)務規(guī)則、數據一致性。功能正確性就是最基礎的請求參數組合正確接口返回預期的數據結構正常流程能走通。業(yè)務規(guī)則會更復雜一點未登錄用戶不能創(chuàng)建文章、不能刪除別人的評論、文章標題超過長度限制會被截斷或拒絕、評論內容為空會被攔截。這些規(guī)則分布在接口的各個處理邏輯里必須通過用例設計去覆蓋。數據一致性是很多人忽略的創(chuàng)建一篇文章之后列表接口能查到、數據庫里的記錄數和接口返回的 total 值一致、修改用戶昵稱后文章作者名同步更新。這些跨接口、跨模塊的數據關聯(lián)問題只靠“狀態(tài)碼 200”根本發(fā)現不了必須做數據庫層的校驗。1.3 技術選型為什么選了 Java RestAssured TestNG這是我第一次在做選型對比時列了一張表最終敲定 Java RestAssured TestNG 這套組合。對比維度RestAssuredHttpClientOkHttpPython Requests接口語義表達非常好DSL風格貼近HTTP自然語言一般模板代碼多較好好斷言能力內置JSONPath/Hamcrest斷言鏈式優(yōu)雅需要自己封裝需要自己封裝需借助 pytest 插件數據驅動配合 TestNG DataProvider 很順暢同樣可配合 TestNG同樣可配合 TestNGpytest 參數化也可以團隊技術棧與后端Java一致排障成本低Java原生Java原生需另外維護Python環(huán)境報告生態(tài)完美集成 Allure集成 Allure 需少量適配同上也可以但稍麻煩選 RestAssured 最關鍵的一點是它的 API 設計邏輯和 HTTP 本身是一致的請求路徑、查詢參數、請求頭、請求體、響應體每個環(huán)節(jié)都有對應的 DSL 語法寫出來的代碼幾乎可以當作接口文檔來讀。它內置的 JSONPath 讓響應體字段提取變得極其簡單再配合 Hamcrest 的斷言風格一個接口的完整校驗可以濃縮在幾行代碼里完成。TestNG 的數據驅動能力和并發(fā)控制是選它的核心理由。接口自動化的用例往往是海量的參數組合驗證如果每個參數組合都寫一條用例方法代碼會膨脹到沒法維護。DataProvider 功能可以把測試數據從測試邏輯中完全剝離出來數據放在外部文件里用例方法本身只有一套。TestNG 的并發(fā)執(zhí)行機制也讓后期跑全量用例時節(jié)省大量時間普通的 JUnit 在這方面要弱一些。2. 環(huán)境準備與工程骨架搭建2.1 本地起一個干凈的博客系統(tǒng)環(huán)境做接口自動化環(huán)境隔離是第一原則。我堅持用一套獨立的測試環(huán)境絕不在開發(fā)環(huán)境上跑自動化用例因為自動化會產生大量測試數據會干擾開發(fā)調試反過來開發(fā)的改動也會隨時讓自動化用例崩掉。具體操作上在本地用 Docker 起了一個 MySQL 實例把博客系統(tǒng)的數據庫腳本導入進去然后直接本地跑起 Spring Boot 服務。接口地址統(tǒng)一走http://localhost:8080/api環(huán)境配置放在獨立的配置文件中和正式庫完全隔離。數據庫的表結構雖然不用全背下來但核心的表一定要清楚users、articles、comments、tags、article_tag 關聯(lián)表。因為后面做斷言時我需要去查數據庫驗證數據是否真的寫進去了需要執(zhí)行 SELECT 語句核心表的字段結構必須足夠熟悉。比如 articles 表里的 status 字段含義、deleted 字段做軟刪除的設計都會直接影響斷言查詢語句的寫法。2.2 Maven 工程目錄與依賴落地工程采用標準的 Maven 多模塊結構但初期其實單模塊就夠用。我用單個 Maven 工程包名按業(yè)務分層這樣結構最清晰blog-api-test/ ├── pom.xml ├── src/test/java/ │ ├── com.blog.test/ │ │ ├── base/ # 測試基類、全局配置 │ │ ├── client/ # API封裝層每個模塊一個Client │ │ ├── case/ # 測試用例層 │ │ ├── model/ # 請求/響應數據模型 │ │ ├── util/ # 工具類、數據庫連接工具 │ │ └── data/ # 測試數據準備與清理 └── src/test/resources/ ├── config.yaml # 環(huán)境配置 ├── data/ # 測試數據文件 └── testng.xml # TestNG套件配置這個包結構非常重要的一點是把“用例層”和“操作層”分開。用例層只描述測試邏輯準備數據→調用接口→斷言結果。操作層封裝了具體 HTTP 請求的發(fā)送細節(jié)。這樣換來一個直接收益當接口地址或參數名變動時只需要改 Client 封裝層用例層一行都不用動。我見過太多人把所有請求邏輯寫在用例方法里接口一變幾十條用例全要改。pom.xml 里核心依賴就四個RestAssured、TestNG、Allure 適配包、MySQL 驅動另外加一個 snakeyaml 用來解析配置文件dependencies dependency groupIdio.rest-assured/groupId artifactIdrest-assured/artifactId version5.4.0/version scopetest/scope /dependency dependency groupIdorg.testng/groupId artifactIdtestng/artifactId version7.8.0/version scopetest/scope /dependency dependency groupIdio.qameta.allure/groupId artifactIdallure-testng/artifactId version2.24.0/version scopetest/scope /dependency dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.33/version scopetest/scope /dependency dependency groupIdorg.yaml/groupId artifactIdsnakeyaml/artifactId version2.2/version scopetest/scope /dependency /dependencies2.3 配置分層環(huán)境地址、賬號、數據庫連接怎么管配置文件用了 YAML 格式核心思路是“環(huán)境隔離、配置集中、敏感信息不硬編碼”。我把所有環(huán)境相關信息集中到一個 config.yaml 里代碼中不出現任何硬編碼的環(huán)境地址和賬號口令。env: base_url: http://localhost:8080/api blog: admin: username: test_admin password: Test12345 normal_user: username: test_user_01 password: Test67890 db: host: localhost port: 3306 database: blog_test username: blog_test password: Test12345通過一個 ConfigLoader 工具類來讀取這個 YAML在測試基類中一次性加載到靜態(tài)變量中。這里值得多說一句每個測試賬號的密碼不要用真實生產密碼也不要用過于簡單的弱口令因為自動化用例會反復登錄、反復修改數據賬號數據的穩(wěn)定性直接影響測試可靠性。關鍵經驗環(huán)境配置統(tǒng)一集中在 config.yaml 中好處是換環(huán)境時只改一個文件不用改任何測試代碼。我花了不少時間硬編碼后來環(huán)境和代碼分離后切換測試環(huán)境從一小時縮短到一條命令。3. 用例設計把博客業(yè)務拆成可自動化的測試場景3.1 業(yè)務鏈路梳理與用例優(yōu)先級劃分寫用例之前我先把博客系統(tǒng)的核心業(yè)務鏈路畫出來用文字描述從用戶的視角走一遍完整流程注冊新用戶→登錄→查看首頁文章列表→查看文章詳情→創(chuàng)建文章→修改文章→發(fā)表評論→查看評論→刪除評論→刪除文章→退出登錄。這條主鏈路覆蓋了系統(tǒng)最核心的功能優(yōu)先級最高任何一次接口改動都優(yōu)先保證這條鏈路是通的。第二優(yōu)先級是權限和邊界用例未登錄創(chuàng)建文章、未登錄刪除評論、普通用戶刪除他人文章、重復用戶名注冊、空標題創(chuàng)建文章、超長內容評論、分頁參數非法取值等。這類用例的價值在于不是驗證“功能能跑通”而是驗證“系統(tǒng)在異常輸入下是否頂得住”。第三優(yōu)先級才是數據維度的校驗數據庫落庫數據是否與接口返回一致、列表總數是否正確、評論數統(tǒng)計是否正確、文章軟刪除后列表是否還顯示。自動化測試需要數據庫層面校驗時我會在用例中把 SQL 校驗和接口響應校驗放在一起形成“接口數據庫”雙重斷言。3.2 登錄鑒權與統(tǒng)一 Token 管理登錄是幾乎所有接口的前置條件Token 管理做不好后續(xù)用例全部受影響。博客系統(tǒng)采用的是 JWT 方案登錄成功后返回 Token后續(xù)請求在 request header 中攜帶Authorization: Bearer token。我用一個全局 TokenManager 來處理所有與鑒權相關的邏輯核心思路是每個測試賬號的 Token 只獲取一次之后進入全局緩存用同一個 Token 跑完全部用例絕不每個用例都重新登錄。這樣做的原因很簡單——登錄接口也有成本和延遲每個用例都登錄一遍會讓整體執(zhí)行時間翻倍而且頻繁登錄可能觸發(fā)系統(tǒng)限流。public class TokenManager { private static MapString, String tokenCache new ConcurrentHashMap(); public static String getToken(String username, String password) { String cached tokenCache.get(username); if (cached ! null !isTokenExpired(cached)) { return cached; } String newToken doLogin(username, password); tokenCache.put(username, newToken); return newToken; } private static String doLogin(String username, String password) { return given() .contentType(ContentType.JSON) .body({\username\:\ username \,\password\:\ password \}) .post(/auth/login) .then() .statusCode(200) .extract().path(data.token); } }Token 過期是個很實際的問題。JWT 一般有有效期如果 Token 過期后面的用例會集體報 401。在框架層我做了兩個兜底方案第一是 Token 即將過期前會自動重新獲取在獲取時判斷剩余有效期第二是在斷言層加邏輯如果收到 401 響應就重新登錄后再重試一次該請求。實際跑下來后后一個方案更簡單有效前一個需要解析 JWT 內容增加復雜度但收益不大。3.3 四層斷言狀態(tài)碼、業(yè)務碼、字段、數據庫接口自動化測試決不能在斷言上任性只斷言一個 HTTP 狀態(tài)碼遠不夠。經過這個項目我把斷言拆成了四層每一層都有明確用途第一層是 HTTP 狀態(tài)碼斷言它只能證明“網絡層面請求成功/失敗”比如 200 表示服務器沒有返回 500但不代表業(yè)務邏輯正確。第二層是業(yè)務狀態(tài)碼斷言博客系統(tǒng)接口會返回業(yè)務碼例如code: 0表示成功、code: 1001表示參數錯誤、code: 1003表示無權限。這層比 HTTP 狀態(tài)碼更接近業(yè)務實際。第三層是核心字段斷言驗證返回的 JSON 中關鍵字段的值是否符合預期比如創(chuàng)建文章后返回的articleId不為空、列表第一篇文章的標題與提交一致。第四層是數據庫斷言直接查詢數據庫驗證數據確實被正確寫入或修改。下面是一個典型的四層斷言的完整用例場景是“登錄成功后獲取用戶信息”Test(description 登錄成功后獲取當前用戶信息) public void testGetCurrentUserInfo() { String token TokenManager.getToken(ADMIN_USERNAME, ADMIN_PASSWORD); given() .header(Authorization, Bearer token) .when() .get(/user/profile) .then() .statusCode(200) // 第一層HTTP狀態(tài)碼 .body(code, equalTo(0)) // 第二層業(yè)務碼 .body(data.username, equalTo(test_admin)) // 第三層核心字段 .body(data.email, matchesPattern(..\\..)); }數據庫斷言我用了 JDBC 連接工具類核心方法是執(zhí)行傳入的 SQL 并返回結果然后在用例中斷言數據庫查詢結果。例如創(chuàng)建文章成功后查詢數據庫確認 article 表里多了一條對應記錄且 status 字段為正常狀態(tài)。注意事項數據庫斷言不能每一條用例都加否則執(zhí)行效率會明顯下降。我的原則是“涉及寫操作的核心用例加數據庫斷言”讀操作的用例重點做字段校驗就夠了。把數據庫校驗放在創(chuàng)建、更新、刪除這三類操作上性價比最高。4. 框架落地封裝、數據驅動與報告4.1 API Client 封裝讓用例代碼真正可讀在這個項目里我體會最深的是“封裝不是裝飾而是工程化的命脈”。如果不做任何封裝所有接口調用邏輯平鋪在用例里寫起來非常爽但維護起來完全是災難。換一個接口地址要翻遍幾十個用例去改。我按照業(yè)務模塊劃分了 Client 類每個 Client 負責一個模塊的所有接口操作。以 ArticlesClient 為例它封裝了博客文章模塊的所有接口public class ArticlesClient { private static final String BASE /articles; public static Response createArticle(String token, String title, String content, ListInteger tagIds) { return given() .header(Authorization, Bearer token) .contentType(ContentType.JSON) .body(buildCreateBody(title, content, tagIds)) .post(BASE); } public static Response getArticleList(int page, int size, String keyword) { return given() .queryParam(page, page) .queryParam(size, size) .queryParam(keyword, keyword) .get(BASE /list); } public static Response getArticleDetail(int articleId) { return given().get(BASE / articleId); } public static Response updateArticle(String token, int articleId, String title, String content) { MapString, Object body new HashMap(); body.put(title, title); body.put(content, content); return given() .header(Authorization, Bearer token) .contentType(ContentType.JSON) .body(body) .put(BASE / articleId); } }封裝后的用例層代碼像在讀一篇測試文檔邏輯一目了然。舉個例子創(chuàng)建文章并驗證的基本用例是這樣的Test(description 創(chuàng)建文章成功后返回文章ID) public void testCreateArticleSuccess() { Response response ArticlesClient.createArticle( TokenManager.getToken(ADMIN_USERNAME, ADMIN_PASSWORD), 自動化測試文章-標題, 自動化測試文章-正文內容, Arrays.asList(1, 2) ); response.then().statusCode(200).body(code, equalTo(0)); int articleId response.jsonPath().getInt(data.articleId); Assert.assertTrue(articleId 0, 創(chuàng)建文章返回ID應該大于0); }這里注意Client 層的方法返回的是 Response 對象這個設計是有意為之。好處是讓用例層自己決定要做什么斷言和提取什么數據Client 層不做過于貼身的斷言保持了靈活性。曾經我把斷言也寫進了 Client 層后來發(fā)現不同的用例對同一個接口斷言的側重點完全不同塞在一起的代碼反而別扭。4.2 測試數據驅動數據準備與清理閉環(huán)接口自動化的測試數據管理是整個項目成敗的關鍵也是我覺得最難啃的骨頭。沒有系統(tǒng)化的數據管理用例跑幾次之后就互相污染今天能過明天就崩。我的方案分兩部分數據準備和數據清理。數據準備用兩種方式一種是 TestNG 的 DataProvider適用于參數化的用例另一種是專門的 TestDataFactory在用例執(zhí)行前通過調用接口創(chuàng)建所需的數據。一個典型的場景是“創(chuàng)建文章接口的參數化校驗”要求覆蓋標題為空、標題超長、內容為空、標簽不存在、正常提交等多個參數組合。我用 DataProvider 把這些數據抽到 JSON 文件中[ {title: , content: 內容, tagIds: [1], expectCode: 1001, desc: 標題為空}, {title: 超長標題 a.repeat(300), content: 內容, tagIds: [1], expectCode: 1001, desc: 標題超長}, {title: 正常標題, content: , tagIds: [1], expectCode: 1001, desc: 內容為空}, {title: 正常標題, content: 內容, tagIds: [99999], expectCode: 1002, desc: 標簽不存在}, {title: 正常標題-演示, content: 演示內容, tagIds: [1, 2], expectCode: 0, desc: 正常提交} ]配合 DataProvider 加載 JSON一條用例方法秒變五條用例邏輯而且數據放在外部文件維護人員不需要懂代碼就能增刪用例數據。數據清理這一塊我踩過的坑最深。剛開始沒做清理同一批測試數據反復創(chuàng)建數據庫積累了幾千條“自動化測試文章”垃圾數據讓后面的列表用例 total 斷言永遠對不上排查起來極其痛苦。后來定了鐵律每個用到的測試數據都必須在測試結束后清掉清理方式首選調接口刪除接口刪不到的直接 SQL 刪除。4.3 Allure 報告接入與失敗用例定位報告選 Allure因為它在測試領域基本屬于事實標準。接入主要通過依賴和監(jiān)聽器實現用一步配置好 Listeners 注解把 TestNG 的執(zhí)行結果自動接入 Allure 引擎。真正讓 Allure 報告好用的訣竅是在用例中主動加入步驟信息。在關鍵操作前用Allure.step()標注操作步驟斷言失敗時報告里就能看到精確的操作路徑Test(description 更新文章成功后數據庫字段被修改) public void testUpdateArticleUpdatesDatabase() { Allure.step(創(chuàng)建一篇測試文章作為前置數據); int articleId TestDataFactory.createArticle(原始標題, 原始內容); Allure.step(調用更新接口修改文章標題); Response updateResp ArticlesClient.updateArticle(getToken(), articleId, 新標題, 原始內容); updateResp.then().statusCode(200); Allure.step(查詢數據庫驗證標題已更新); String dbTitle DbUtil.queryOne(SELECT title FROM articles WHERE id articleId); Assert.assertEquals(dbTitle, 新標題); }這樣一來每次失敗用例的排查都非常輕松。打開 Allure 報告左邊是完整步驟樹哪一步失敗一目了然失敗時還會自動截取響應體和請求體。協(xié)同排查問題時直接把 Allure 報告鏈接發(fā)給開發(fā)比在聊天窗口里貼一大段日志高效很多。5. 持續(xù)集成讓接口測試定時自動跑5.1 用 GitHub Actions 跑自動化用例接口自動化必須與 CI 結合才有長期價值不能只在本地跑完看一眼就完了。我把博客接口自動化工程托管到 GitHub 私有倉庫用 GitHub Actions 做持續(xù)集成每次代碼推送自動觸發(fā)測試執(zhí)行。workflow 配置文件的思路不復雜拉代碼、裝 JDK、跑 Maven 命令、上傳 Allure 報告、推送結果通知。核心配置大概是這樣name: Blog API Test CI on: push: branches: [ main ] schedule: - cron: 0 2 * * * # 每天凌晨2點定時跑 jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkoutv3 - name: Set up JDK 17 uses: actions/setup-javav3 with: java-version: 17 distribution: temurin - name: Run API tests run: mvn clean test - name: Upload Allure Report uses: actions/upload-artifactv3 with: name: allure-report path: target/allure-results這里值得說清楚的是schedule定時的價值。接口自動化的主要作用不是守著開發(fā)提交代碼時跑一遍而是發(fā)現“系統(tǒng)悄悄變了”的問題。數據庫連接池耗盡、第三方依賴臨時掛掉、定時任務導致的臟數據這些沒有代碼變更也會發(fā)生的問題正是定時任務能發(fā)現的。我個人把定時執(zhí)行時間定在凌晨 2 點原因是這個時段業(yè)務流量低、數據庫負載小如果測試失敗大概率是代碼或環(huán)境問題而不是偶發(fā)流量干擾。5.2 并發(fā)執(zhí)行、失敗重試與穩(wěn)定性策略用例數量漲到 100 條以后串行執(zhí)行時間會變得非常長。我在 TestNG 層面啟用了并發(fā)執(zhí)行配置了線程池可以讓執(zhí)行時間壓縮一半以上。!DOCTYPE suite SYSTEM http://testng.org/testng-1.0.dtd suite nameBlogApiTestSuite parallelmethods thread-count4 test nameBlogApiTests packages package namecom.blog.test.case/ /packages /test /suite并發(fā)執(zhí)行有一個反直覺的坑測試數據也會并發(fā)沖突。比如多個用例同時在創(chuàng)建文章用于校驗列表接口的第一篇文章標題就會互相影響。針對這個問題我做了兩件事一是并發(fā)用例間共享的數據用獨立前綴區(qū)分例如“auto_test_并發(fā)標識_當前時間戳”二是核心鏈路的用例串行執(zhí)行只有純查詢類和數據隔離良好的用例并發(fā)。失敗重試也很重要。接口測試跑在真實環(huán)境上偶發(fā)超時、連接中斷都會導致用例失敗但這類失敗不代表系統(tǒng)有 bug。我在框架中寫了一個 RetryListener針對“連接超時”“讀超時”“500 臨時錯誤”這幾類異常做自動重試配置了每次最多重試兩次。如果重試后還是失敗基本可以確認是系統(tǒng)真實問題。關鍵提醒重試機制只對“非確定性失敗”有效像斷言失敗這種確定性失敗不能重試重試只會掩蓋真實缺陷。我的實現是只針對特定異常類型重試而不是盲目重跑所有失敗用例。6. 常見問題與排查技巧實錄6.1 我踩過的坑與排查思路整個項目做下來積累了不少“血淚教訓”挑幾個最典型的分享出來這些坑基本每個人做接口自動化都會遇到。第一個坑是測試數據沒有清理這個前面已經提過。最開始跑了兩天數據庫里的測試文章堆成了山。后來建立了“前置創(chuàng)建→用例執(zhí)行→后置清理”的標準流程并且數據清理必須用和用例創(chuàng)建方式對應的方式接口能刪的走接口接口刪不到的用 SQL。同時定期做全庫清掃把歷史殘留的垃圾測試數據一次性清理掉。第二個坑是 Token 過期的隱蔽問題。JWT Token 有效期設置的是 2 小時剛開始用例跑得快時沒問題后來并發(fā)執(zhí)行時間拉長部分用例執(zhí)行時 Token 已經過期出現一批莫名其妙的 401 失敗。排查時看日志才發(fā)現是同一個 Token 在 2 小時前獲取的后續(xù)用例一直復用。解決辦法是 TokenManager 中加入有效期檢查并增加 401 自動重登重試的兜底邏輯。第三個坑是響應中的時間戳字段斷言。創(chuàng)建文章接口返回的createTime是毫秒時間戳每次執(zhí)行都不一樣導致斷言 JSON 時無法用固定值校驗。這類動態(tài)字段的策略是只斷言“存在但不為空”或者斷言格式正確而不是斷言具體值。如果一定要斷言范圍就用當前時間前后偏移來校驗createTime應該在請求發(fā)出前后幾秒內。第四個坑是同學最容易被坑的接口文檔和實際行為不一致。文檔寫的是DELETE /articles/{id}實際接口可能需要加查詢參數?forcetrue才能徹底刪除文章否則只是軟刪。這提醒我一件事接口自動化用例必須基于真實接口行為寫不能照搬文檔第一次調試時先手工調一遍接口再落用例。6.2 失敗用例快速定位的五步法做了大量用例之后總結出了一套快速定位失敗用例的方法排查速度提升非常明顯第一步先在 Allure 報告里看失敗發(fā)生在哪一步。如果失敗步驟是“創(chuàng)建前置數據”說明是前置問題和被測接口本身無關。第二步看失敗類型是什么斷言失敗是業(yè)務邏輯問題異常是環(huán)境或者框架問題。第三步打開失敗時的請求體和響應體對比文檔和要求看是否是參數傳錯或響應格式變化。第四步如果是數據庫斷言失敗直接執(zhí)行對應的 SQL看數據庫實際數據和預期之間的差異。第五步把這幾個信息組合起來基本就能判斷失敗原因是業(yè)務改動、數據污染還是框架 bug。這個方法支撐了這套自動化用例幾個月穩(wěn)定運行以來的所有問題排查。團隊里同事遇到失敗用例直接按這個順序查完80% 的情況不再需要問我。關于這套博客接口自動化測試工程我最后再說一個自己的體會真正讓自動化有價值的不是自動化本身而是它能持續(xù)地告訴你“系統(tǒng)現在到底行不行”。測試數據的管理、框架封裝的邊界、對待重試和并發(fā)的心態(tài)這些都是在這個項目里逐步建立的工程方法。踩坑不可怕怕的是踩完了不總結那才是真的白做。這套工程跑起來之后我最大的感受是它已經成為團隊把控系統(tǒng)質量的重要一環(huán)希望這篇實戰(zhàn)記錄也能幫你少走些彎路。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美久久人妻少妇一区二区| 国产熟妇 码视频户外直播| 囯产操逼片| 亚洲日韩97| 99久久婷婷国产综合| 久久r精品| 欧美中出1| 日韩熟女精一区二区三区不卡| 老色69| 人妻9117c| 久久精彩视频9| 欧美国产精品久久九九| 99精品久久久久久| 日韩人妻资源网| 伊人操你| 91天堂丝袜美腿| 97超碰天天爱天天爱| 精品一区二区综合熟妇| 蜜臀久久99精品久久久久久| 精品国产乱码久久久影院| 超碰在线看| 亚洲天天在线| 日本二区不卡| 97视频新免费| 妇女视频网站| 免費人妻夜夜爽天天爽爽一区| 乱论91| 国产97色在线| 欧美玖玖爱免费玖玖| 920日本午夜免费| 欧美精品23| 火箭成精品视频884必出精品| 亚洲自拍一区夜夜操| 国产剧情AV不卡在线观看| 999精品女人| 综合激情一一91| 高清不卡视频| 成人无码专区精品视频| 五月开心网| 国产免费操逼| 国产特级毛片AAAAAA高潮流水| 久久三区四区| 日韩日韩日韩-国产乱码精品一区二区| 江都AV在线| 亚洲第一成人影院色播| 久草免费在线一区二区| 亚洲一区二区三区中文字幕| 亚洲精品一区二区精品| 久久久久久网址| 唯美清纯 妖精视频| 人人妻天天做天天爽| 亚洲最大的黄色电影网站。 | 精品久久在线区一区| 亚洲一本大道中文字幕无码在线| 性色av网站| 搞中出久久| 国产美女自拍AV| 黑人猛交| 欧美性爱免费短视频| 懂色aV一区二区天美传媒| 亚洲在线a| 夜夜欢天天干| 亚洲丝袜诱惑| 蜜桃久久综合视频| 亚洲女毛多水多21P| 国产家庭乱伦网址| 性爱1区| 嫩草在线视频| 亚洲欧美中文一区二区三| 超碰国产精品无码| 欧美黄色片AAAAA| 成视频在线观看免费看| 亚洲色图激情小说| 天天香香欲综合| 91伊人大香蕉| 97 国产精品| 偷拍盗拍亚洲色图图片| 人妻一区二区三区四区视频| 草草电影院| 久综合国内精品自在自线| 日韩欧美福利视频看看| 久久国产免费激情视频| 黄片免费看黄片免费看| 一区久久久二区| 欧美国产一区二区三区麻豆传媒 | 精品小视频在线| 欧美色图亚洲特色| 少妇高潮喷水无套久久久久久| 99久在线精品99re8| 哑洲在线| 极品内射| 亚洲九九视频| 一级毛片久久久久久久女人18| 伊人黄色片| 51一区二区三区| www.夜夜操| 日韩97视频!在线| 综合九九| 97精品一区| 97香蕉网| 日本三级中国三级99人妇网站| 禁止观看美女黄| 亚洲十八禁止| 欧美亚洲高清| 亚洲精品精品一区二区| 久久综合乱子伦国产免费| 日本欧美韩国日产片片在线看免| 久久久久久少妇| 大香蕉久久| 超碰国产精品无码| 大香蕉伊在线久草麻豆天堂故事| …亚洲黄色厕厕女女在线播…| 免费的黄片有限公司| 日韩亚洲Av人人夜夜澡人人爽| 五月丁香综合激情| 啊啊啊轻点在线观看| 超碰95| 在线v中文字幕一区二区三区| 免费看毛片操穴| 无码男人天堂| 亚洲国产奇米影视久久| 97色97好| 日韩精品一区二区高清| 丁香六月综合激情| 久射吧| 欧美激情性久久久久久| 999日韩中文精品观看视频。| 久偷拍| 天美精品原创av片国产| 亚洲天堂区| 职场同事知名国产国产精品久久欧美日韩| 婷婷伊人五月| 亚洲另类欧美精品| 国产污视频麻豆传媒一区二区| 色噜噜国产精品视频一区二区| 天天做日日做| 精品.99999| 综合亚洲欧美| 小少妇| 欧美洲精品一级| 3PAV乱伦视频| 天天干2区3区| 亚洲精品一二牛牛| 国产精品suv一区| 人人操人人摸人人看人人插| 五月开心久久AV官网| 丰满人妻aA一区二区三区| 五月色网| 久久久久久99AV无码免费网站| 无码人妻一区二区一牛影视| 国产偷人伦激情在线观看| av九九| 就去色综合| 高清国产av无码| 精品成人女人久久| 午夜高清成人在线视频| 国产9熟妇视频网站| 亚洲一区日韩| 99中文字幕| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 乱色视频中文字幕| 高清无码91| 99热这里都是精品| 免费一级a毛片久久久久久鸭绿欲| 黑人与人妻| 人妻人人做人人澡人人爽欧美一区| 1二区9| 巨爆乳一区二区爆乳区 | 亚洲精品天堂久久A∨51成人漫| 九九视品黄色| 日韩卡一卡二卡三在线| 天天色综合影视网| 九九热超碰97亚洲最新香蕉| 国产自产自拍| 欧美在线电影| 欧美一区二区传媒| 亚洲精品乱码久久久久久蜜桃麻豆 | 精品国产乱码久久久久久久久1 | 国产欧美日韩一区二区三区| 啊啊啊啊嗯嗯在线久久久| 丁香六月婷婷久久综合| 99精品国产户外露出| 日本欧美色| 啪啪91| 综合97| 97公开久久| 色色婷婷五月天| 一级乱伦网站| 婷婷性网| 超碰97久| 丝袜狂射91| 男人天堂.AB| 日本Xx性爱| 91人人| 男人天堂免费| 青青操97| 五月婷婷六月丁香| 中文字幕成人理论在线| 国产精品99精品视频网站| 亚洲色综网| 亚熟在线| 日本熟妇一区二区三区| 去干网最新版| 国内精品久久久久影院亚洲| 一二三四视频中文字幕在线看| 婷婷8月天青娱乐| 亚洲综合113页| 少妇一线天久久久久久| 91无码中出人妻视频| 国产黄片精品在线| 亚洲一区二区三区中文字幕| 熟妇乱伦一区二区| 中文字幕99999| 亚洲精品乱码久久久久久蜜桃麻豆| 综合网色| 国产精品探花在线| 蜜臀操逼黄色视频操的好爽| 看大黄色大片原件| 老熟女乱伦片| 波多野结衣AV无码一区| 综合影院永久入口国产| 天天躁日日躁成人字幕aⅴ| 狠狠爱综合网| 欧美性第一页| 亚洲激情综合另类男同| 日韩激情毛片一级久久久| A一区片| 91在线免费精品视频| 亚洲欧美在线丝袜| 四虎在线观看视频| 东北少妇高潮zzzz| 99精品国产户外露出| www.男人的天堂| 亚洲视频精选| suv精产一二三区| 视频二区美腿制服人妻欧美| 欧中美三级一区二区三区| 校园春色欧美| 亚洲欧美伦综合| 九九九九精品精| 久久婷婷一区二| 精品超碰中文在线| av操操不卡| 亚洲自拍另类丝袜综合| 国产午夜福利专区综合| 亚洲人人操| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 很很干很很操| 操九九九九九九| 91日日| 蜜伊人色综合97| 91在线限制级| 啊啊啊啊啊啊啊啊啊啊在线观看| 韩国国产欧美情侣视频在线| 亚洲第一页综合在线| 春色91| 九九九九9999| 日韩人妻播放| 欧美九九爱| 久久亚州高清| 欲色综合| 天天操天天射天天日| 九九探花视频在线观看| 成人午夜无码视频| 婷婷另类小说| 欧美精品一二三| 亚欧高清| 91精品国产麻豆国产自产在| 天天日日舔舔| 国产情色在线| 久久精品福利影院| 婷婷久草| 色老牛| 久久粉色| 奇米狠999| 五月天色图影视| 中文字幕一二三区| 日本大香蕉综合网红本杳社区| 亚洲国产综合图区中文字幕| 十八禁的黄污污免费网站| 婷婷久久五月天| 色五月69夫妻| 国产精品操| 夜夜影视四色| 国产丝袜视频| 极品美女嘿咻| 永久免费发布性爱网| 天天日B夜夜干B时时操B| 色五月婷婷麻豆在| 久婷婷一区| 亚洲狠| 中文字幕精品区先锋资源| 啊嗯好大视频在线观看| 91天堂| 亚洲午夜福利在线影院| 神马久久久久久久久久| 91色婷婷综合久久中文字幕二区| 麻豆三极片| 熟女视频久久| 91亚洲丝袜熟女| 97色网| 婷色五月| 东北女人高潮视频| JULIA一区二区三区在线播放| 色欲色香天天天综合网www-亚洲综合国| 老熟妇91| www.91色综合| 久久9久| 亚洲激情网| 亚洲 一区二区 自拍| 日本熟妇熟色97一本在线观看| 婷婷20月天青娱乐| 99无码视频| 亚洲欧美国产精品久久久久久久| 五月婷婷丁香中文字幕| 色原狠狠天天天| 国产色精品午夜大片| 国精综合一二三区影视| 亚洲中文国际强奸字幕| 久久久免费懂色| 可以在线观看的黄色网址| 熟妇熟女视频一区二区三区| 神马久久久久久久| 有码人妻系列| 啪啪啪东京| 欧美一区二区传媒| 久久亚洲AV无码专区国产精品 | 亚洲精品蜜桃久久久| 屁屁影院一区二区三区国产| 欧美久久人体| 熟妇最新先锋一二三区| 香伊人在线| 亚洲天堂综合AV| 中文字幕国产在线天堂| 热久日综合| 亚洲国产精品有声| 久久久久久免费电影| 色五月综合网| 无码高清操逼| sewuyueav| 精品久久久九九九孕妇| 中文字幕日韩电影人妻| 亚洲成熟国产精品美女| 精品国产久久乱码| 国内毛片无码一级毛片| 国产精品人妻无码久久久老鸭窝 | 久久久久深夜无码| 国产av高清版| 精品人妻一区二区视频| 久久久78| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV | 午夜福利合集| 婷婷国产精品九区| 在线观看国产黄色| 香伊人在线| 色偷偷人人玩人人舔人人操人人摸人人爽| 欧美性爱五月天| 永久电影三级在线观看| 亚州精品人妻一二三区| 91ise欧美| 色官网色综合| 老熟妇乱轮| 亚洲一二三四区在线免费看视频| 好湿好紧好爽 视频| 欧美精品日韩久久久九| 人妻丝袜日本| 欧美日韩亚洲国产中文永久天天看| 青青草日韩无码| 久久精品国产亚洲AV嘿嘿| 东京热,男人的天堂| 狠狠图片青青草| 亚洲成人网站在线观看| 东亚亚洲无码高清| 天天谢天天干| 极品色综合| 亚洲四虎熟女精品| 狠狠操官网| 毛片久久| 欧洲在线性爱视频| 欧美欧美少妇| 97在线日韩中文字幕| 午夜精品久久久久| 淫色网综合| 色婷五月天| 欧美疯狂做爰xxxx| 久久久久久久国产视频| 久久精品福利影院| 亚洲成人在线高清| 欧洲欧美视频一区二区| 国产又猛又粗又爽又黄| 国产91福利小视频在线观看| 毛片麻豆91糖心精品毛情片| 国产丰满熟夫69mpp| 大奶啊啊好爽| 在线啊啊啊啊| 大香蕉亚洲中文| 免费久久精品麻豆一区二区av| 伊人精品久久网站| 成人无码在线超碰网| 国产精品人妻无码久久久老鸭窝 | 9999免费精彩视频| 黄片无码在线制服| 中文字幕日韩电影人妻| 亚洲性爱成人| 大香蕉黄色一级片免费看| 日韩av在线精品观看| 神马久久久久| 欧美性xxxxx狂欢| 日日夜夜精品视频| 亚洲电影中字一区二区| 最新日本中文字幕| 无码WWW免费视频网站| 老熟妇一区二区三区…| 日韩欧美午夜视频在线| 天天色播亚洲综合网站| 99精品网| 九久9热| 99xav| 18禁久极品美女久久哦哟呀!| 吉川爱美亚洲二区在线| 日韩色图 一区二区| 超碰久草| 欧美色就是色| 这里只有精品视频在线观看麻豆| ?亚洲伊人伊成久久人综合网| 天操老女人| 1204金沙人妻懂旧版免费| 男人天堂综合| 9Ⅰ超碰| 久久伊人最新网址视频| 亚洲第一狼人丝袜美女另类| 日本片日本片祼观看网站在线看中文版网页在线看 | 人人操人人操人人操人人操人人操人人人11.CM | 九九性爱网| 五月婷婷六月激情| 色999偷自拍拍| 色香伊人| 永久免费观看的毛片的网站| 熟女五十路一区二区三| 91丨九色丨43老版熟女| 午夜天堂精品久久| 一本色道久久综合狠狠操| 玖玖综合网| 国产精品亚洲天堂网址| 欧美在线视频99| 欧美页片| 色婷婷一区二区三区久久| 久久这里只精品免费福利| 亚洲AV永久无码一区仙野| 国产青一二三| 超碰97极品9| 乱操乱伦AV| av凤凰久久久| 中出789在线视频| 亚洲图片欧美另类综合免费视频大大香| 久久久久久97| 99热这里是精品| 久艾草在线精品视频在线观看| 一本一道vs波多野结衣| 亚州成人a∨| 91免费看中出视频| 男女性感激情网站| 日本天堂网| 亚洲色性| 激情五月天丁香社区| 色老汉色| 欧美乱伦专区| 超碰碰碰碰| 久草精品一区| 亚洲少妇在线观看| 丁香色五月 97干| 亚洲天堂美臀在线| 国产一区二区三区免费视频在性观看 | 久久xxxx| 狠狠爱AV| 青娱乐久久艹| 任我爽在线视频免费观看 | 国产女人操逼视频| 好看的91视频| 欧美亚洲特P| 日韩欧美aⅴ综合网站发布| 黄色片大香蕉| 精品久久久一本一道| h无码动漫在线观看| 福利一级版子| 久久青青草原免费视频| 精品国产一区二区三区av在线资源| 亚州欧美综合| 日本视频一区二区三区| 神马久久69| 福利社区午夜一区二区| 大香蕉男人的天堂| 国产成年精品高清在线观看91| 9超碰免费| 国产福利电影| 亚洲宗合网| 日韩 欧美 另类 人妻| 欧美国产成人在线| 26uuu国产成人综合| 日本三级韩国三级美三级91| 看免费一级在线播放毛片| 色爱综合网欧美| 按摩中文字幕| 天天看天天干| 国产风韵犹存熟妇三区| 色情五月综合婷婷| 成年人黄色| 性欧美另类高清| 亚洲国产成人精品999| 玖玖资源中文字幕制服丝袜| 免费簧片在线观看| 色眯眯av| 五月天婷婷综合| 一区二区三区一亚洲中文字幕、综合区灬| 超碰久久性爱| 午夜精品久久久久久久99蜜桃一| 欧美91精品国产自产| 夜夜操一区二区| 国产后入精品| 欧美综合区| 国产粉嫩蜜臀av一区二区三区| 色婷婷淫色网| 欧美综合加勒比在线| 超碰在线人妻| 亚洲AV噜噜狠狠网址蜜桃动漫| 欧美色图亚洲色| 久久视频,这里只有精品| 香一区二区三区| 蜜乳av首页| 超碰人人操97碰| 欧美狠狠| 一二三区精品视频| 青青草影视蜜久久| 六月婷婷一区二区三区| 嗯嗯,啊啊,国产精品| 九九亚洲视频| 久久久 国产精品| 26uuu偷拍亚洲欧洲综合| 精品国产Av无码久久久伦古装| 在线 欧美 亚洲| 欧美亚洲涩涩| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | jk白丝没脱就开始啪啪| 性无码专区2020| 国产一二三在线视频五十路| aV中文麻| 熟女熟妇一区二区三区视频| 在线观看岛国有码| 日本十八禁免费看污网站| jazzjazz国产精品麻豆| 久久精品国产亚洲AV清纯| 一区二区视频在看| 大香蕉狠狠爱| 中文字幕制服诱惑| 日本不卡在线二区三区| 欧美九九九| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 久久丝袜| 97超碰站| 波多野结衣AV无码一区| 边做饭边操逼逼| 亚洲欧洲无码bt精品合集| 91综合在线| a'v在线资源| 男女一进一出视频久久| 操国产逼| 欧美,日韩综合久久| 手机在线中文字幕国产| 黄色免费网页无码| 久操不卡视频| 男人亚洲91首页在线| 成人精品电影| 亚洲视频小说| 欧美日韩亚洲少妇寂寞影院正在播放| 大粗鳼巴久久久久| 亚洲美女AV无码| 中文字幕黄片在线| 日韩不卡毛片Av免费高清| 婷婷亚洲色| 亚洲 欧美 91| 91美女看B| 97亚洲自在精品在线观看| 欧美人妻少妇| 中文字幕乱在线伦视频中文字幕乱码在线 | 亚洲AV成人无码一二三久久| 人人操,操人人| 国产精品大香蕉| 97亚洲国产影视| 国产精品丝袜久久亚洲不卡| 国产乱码久久久| 久久精品一区二区一8| 97在线精品观看视频| 操逼操操操91| 欧美亚洲丝袜美女电影| 精品女同一区| 欧美成年人性爱视频免费观看| 久久av成人无码免费| 色色操| 久久久性爱视频| 无码自拍SM| 天美国产精品| 人澡逼| 国产精品久久aV| 精品久久人妻成人网| 久久女人视频| 精品国产99999| 一个国产在线综合网站| 久久久久久久人妻| AV色五月天| 女性喷水高潮在线观看| 久久99精品视频| 9999亚洲电影| 国产肏逼网站| 黑丝少妇在线观看| www.av不卡中文字幕| 亚洲 无码 偷拍| 五月香婷婷| 精彩久久中文| 国产乱色国产精品免费视| 日本超碰在线国产一区| 五月天人妻综合| 再深点灬舒服灬太大了添视频| av优播| 三及片网站| 无码日韩网站| 久艹视频在线| 一类无码操逼视频| 中文字幕久久精视频久久大全| 国产欧美另类久久久精品课程| 亚洲国产一区二区入口| 亚洲精品一二三四区| 熟妇人妻丰满久久久久久久无码| 男女真人网18| 在线小说视频一区| 99re公开精品免费视频| 久久久18禁| 被男人吃奶很爽的毛片| 欧美性爱一内片一区二区三区| 97超碰人妻| 天天综合91在线| 超清中文乱码字幕| 超碰97欧美在线| 青青草中文字幕| 野狼激情网| 亚洲天堂男人的天堂| 国产欧美伊人| 激情小说在线视频| 欧美日韩国第一区| 丰满美女一级毛片在线播放| 亚洲日韩精品久久久久一区壹牛| 青娱乐av在线| 国产精品96| www激情| 欧美+日产+中文| 校园春色制服丝袜中文字亚洲| 亚洲欧美日韩激情不卡| 人人手机欧洲亚洲国产人妻| 日本黄大片在线观看视频| 欧美性爱一区| 欧美顶级黄色大片免费| 99热这里只有精品1| www.91色| 色综合一区二区三区| 色鬼在线综合| 日韩国产欧美伦理在线| 少妇久久久免费| 色色综合网站| 无遮挡男女激烈动态图| 国产一区二区三区,在线观看观看| 国产一区在线观看无码AV| 色哟哟av| 久久久久国产亚洲一区欧美色图日韩| 日韩成人在线性爱视频| 久久久久极品| 亚洲天天艹| 国产精品美女久久久久AⅤ国产馆| 四虎精品一区| 久久超碰久| 色五天伊人| 久久丝袜| 淫乱图区 | 日韩综合色图| 综合97亚洲| 婷婷综合视频| 欧美偷拍区| 欧洲亚洲人妻无码高清久久三区四区| 人人操天天爽| 日本午夜福利影院| 欧美日韩啪啪电影| 少妇大屁屁| 亚洲 欧美 小说| 婷婷色婷婷| 人人操人人操人人人操| 成人无码欧美一级A片狼牙直播| 五月天伊人| 高清在线偷拍自拍视频| 足交视频老司机| 妇女一区二区三区| 在线观看岛国有码| 欧美色道啊| 蜜桃久久久久久| 国产人妻天天干精品| 色逼综合| 天天操天天7| 亚洲精品一二三四区| 日韩激情啪啪| 国语对白露脸XXXXXX| 欧美色图在线视频少妇| 亚洲中文字幕有码视频一区二区三区| 天天做日日爱夜夜爽| 一区AV| www.久久超碰| 另类视频在线| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 日韩钢筋无码高清啾啾啾| 在线播放成人网站| 日本高清_区二区三区| A片大香蕉在线| 淫荡网址| 久久婷婷成人综合色怡春院| 国产热av| 人人爽人人精品乱人伦AV| 91在线美女| 狠狠色丁香| 韩国一级婬片A片AAAAA| 欧美系列在线一区二区| 少妇一区二区三区高速| 欧洲在线性爱视频| 超碰95| 久久久一区二区三区四区五区| 丰满欧美放荡少妇在线| 日韩不卡一二三四| 日韩一级二级三级免费看完整版国语版| 人妻一区二区三区| 91女网站| 久久久啊啊| 最新一二三区视频| 欧美综合第一| 97免费视频网| 中文字幕久久精视频久久大全| 91色图片| 亚洲国产精品久久久男人的天堂| 色欲人妻一区二区在线| 十八禁黄色成人网站观看| 少妇一区二区三区在线观看| 96AV久久久| 国产极品久久久| 蜜臀AV成人精品蜜臀| 国产青青美女玩逼视频| 一二三四视频在线社区中文字幕| 国产无遮挡| 在线啊啊啊啊| 91伊人大香蕉| 国产视频大全| 亚洲九九视频| 亚州一区二区| 无码137片内射在线影院| 国产精品露脸在线观看| 国产91啪| 韩国一级做A片免费的| 狠狠操狠狠爱| 超碰激情808| 久噜噜| 99热在线只有精品| 白丝AV| 成人a级高清视频在线观看| 天堂无码精品国产久| 国产精品久久久鸭无码的功能| 任你艹| av操操不卡| 超碰欧美在线欧美| 亚洲男人在线观看天堂| 无码久久亚洲高清,| 日韩色欲久久一二三四区| 丰满人妻av一区二区三区| 亚洲男人的天堂亚洲| 亚洲自拍另类丝袜综合| 亚洲好色人妻| 国产在线观看一区二区三区| 成人三一级一片aaa| 久久婷五月| 99热在线不卡| 久久久999国产精品| 岛国精品视频在线观看 | 777超碰| 26uuu性| 啊啊啊啊嗯嗯嗯用力好爽| 久久久中文版| 久 久无码人妻AV| 99久久婷婷丁香| 大香蕉碰碰| 欧美与日韩97| 色吧5亚洲| 亚洲精品成人激情在线| 天天日天天舔东京热| 易易A毛视频| 久操网址| 好看的91视频| 男人天堂2017| 伊人五月天| 久久久久久9999| 日本成人在线不卡一区二区三区| 色牛牛AV| 男人的天堂久久狠| 岛国A V在线免费看| 亚洲欧美大| 限制级中的三级片中的黑粗大屌屌日人妻熟女| 日韩免费中文字幕视频| 亚洲精品男人的天堂| 韩国毛片一区二区三区| 男人的天堂午夜av| 亚洲国产综合久久久性感熟妇| 超碰人人干天天射| 国产av又色又爽又黄| 91丝袜美腿网站| 久久久精精精| 激情五月天丁香社区| 久久精品中文| 免费人成在线观看网站品爱网| 一个人在线看的黄色电影网站| 97在线公开视频| 99久久精品欧美国产| 日本色婷婷| 97久久天天综合色天天综合色电影| 久久国产AⅤ| 久久精彩视频9| 蜜臀在线视频| 国产精品秘 福利姬在线观看| 亚洲熟女乱色一区二区三区久久久| 亚洲精品一区二区精品| 夜夜操夜夜爽夜夜高潮| 极品销魂美女一区二区 | 中字一区| 熟女色综合久久| 欲色啪| 婷婷亚洲五月***久久| 午夜精品久久久久久久| 成人免费福利在线观看| 天天天操天天天爱| 少妇人妻在线| 天天色播亚洲综合网站| 91久热| 香蕉综合网| 欧美天天射| 精品人妻二区三区| se吧提供国产乱老熟视频胖女人| 国内操逼视频二区| 激情网色| 91操熟妇| 日本有码久久| 欧美亚洲自拍另类人妻| 99热导航| 欧美视频边做饭边橾| 亚洲中文字幕久久无码精品| 玖玖在线视频| 精品无码一区二区三区色欲| 刺激精品视频| 亚洲欧美一区二区三区一猛片| 少妇大屁屁| 99丝袜福利在线播放| 亚洲最新Av| 热热色色综合| 婷婷综合视频| 国产兽交视频在线播放| 久草线上视频免费看| 久热超碰| 欧美十八禁视频| 色综合1991| 一二三四日本视频高清| 国产精品点击进入在线影院| 吊色| 美女黄页| 九一精品牛牛一区二区| 日本999精品| 中文字幕乱码人妻二区三区| 精国久久一区二区三区98| 大屁股xxxxx| 97爱| 超碰是碰在线观看| 久草精品热视| 免费在线观看国内色片网站网址 | 91久久久亚洲| 超碰久在线天天做| 男人天堂婷婷五月天校园春色| 日韩在线一区二区| 快灬快灬 一下爽蜜桃在线观看| 宗合情欲网| 日本三级韩三级99久久| 中文字幕AV乱伦| 欧美色综合网| 2019午夜福利视频| 中文字暮97| av片在线观看免费播放| 欧美日韩电影成人在线| 日韩有码中文字幕女同性恋 | 国产精品久久久久久照片| 天堂亚洲精品| 99re这里| 嗯嗯啊啊用力视频免费| 欧美少妇高潮视频| 抽插爽| 国产按摩一区二区三区| 殴美大黄片| 亚洲国产欧美一区二区潘金莲| 久久伊人影院| 亚洲脚交| 久久久久久久9最新免费视频观看| 97视频观看| 婷婷五月天丁香花| 在线观看精品国产免费| 欧美日韩另类在线播放| 思思热一热婷婷热一热| 亚洲无码 国产无码| 老司机香蕉| 97av,com| 精品二999| 第45页一区二区| 97二区四区| 嗯嗯啊在线视频| 九九综合色| 天天躁日日躁AAA片李宗瑞| 大黄片做爱的大的| 国产一区二区在线播放量| 操国产高清| 亚洲加勒比久久日本道| 777超碰| 淫淫综合网| 欧美日韩欧美| 久久精品28| 欧综合网| 9久久久久| 久久春色| 亚洲无992tv| 日韩av无码网站| 国产在线视频午夜精华在| 欧美色网| 亚洲āv网址在线观看| 国产肏逼网站| 欧美日韩另类在线播放| 日韩性爱1级片视频| 国产在线强奸视频| 淫荡少妇免费| 国产1769在线| 综合色啪| 婷婷久草一区二区三区| 操九九九九九九| 熟女中出视频| 福利在线视频一区二区| 亚洲AV在线资源| 日日玩天天干| 国产精品乱码久久久| 亚洲精品九九九| 精品国模无码| 国产黄片精品在线| 8050午夜少妇无码| 五月综合激情网| 精品人妻二区三区| 精品美女少妇一区二区三区| 一级黄碟| 九九九九精品视频| 欧美日韩国产成人高清| 91精品女厕偷拍视频| 青青操狠狠撩| 婷婷丁香六月天| 高清不卡一二三区视频......| 亚洲天堂自拍| 999久久芭蕾| 日本道不卡| 97精品熟女少妇一区| 巨爆乳肉感一区二区三区竹菊影视| 青青操青娱乐| 日韩丝袜高跟制服在线观看| 日韩综合第八区国产精品| 69天堂| av在线一区二区三区| 中文字幕 码 自拍 视频 区| 欧美午夜色妇色鬼| 五月天人妻综合| 黑人娇小av在线播放| 午夜福利精品| 亚洲无套久久嗯嗯| 亚洲啪啪啪啪视香蕉| 亚洲熟女综合网| 国产精品视频麻豆入口| 天天爽爽爽爽| 91麻豆一二三区| 91亚洲欧洲| 免费伦费视频在线观看| 蜜臀久久99精品久久久老,,| 精品无码久久久久| 国产伦精品| 人妻中文字幕精品无码| 亚洲成人综合在线| 狠狠色一区二区中文字幕| 久久久久白虎| 在线可观看的黄色网址| 日韩pv中文| 伊人久久亚洲色欲综合网站| 啊啊啊啊啊啊在线| 操逼片国产| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 人人喜人人妻| 99色热| 久干9操| 国产福利夜| 男人的天堂网页| 婷婷在线精品| 人妻少妇久久| 天天操夜夜嗨| 久久久久七视频| 精品人妻一区二区三区四区不卡在| 人人操人人摸人| 神马久久69| 白丝被操91| 亚洲天堂另类美腿| 亚洲欧洲自拍| 九九精品热| 蜜臀网址在线| 午夜欧美女人操逼| 97超碰总站| 成人七区| 91丝袜在线视频| 一级二级三级黑人无码| 后入内射蜜桃臀| 中文字幕在线观看网址| 操久久久久久| 成人三级片一区二区三区视频| 人人干人人操人人..com| 亚洲日韩少妇一道本视频| 午夜激情成人在线观看| 加勒比AV网| 中文字幕日韩精品久久| 久久久久久久久久久久久久久乱码| 精品人妻一区二区三区在线视频不卡| 99精品在线观看| 熟妇人妻丰满久久久久久久无码| 人人扣人人操| 久久久青青草| 久久精品国产精品亚洲艾通辽熟妇| 91高清欧美| 色色激情五月天| 人妻丝袜日本| 狠狠久久四虎| 午夜舔阴达高潮视频免费看| 91亚洲不卡一区| 欧美精品69性爱| 麻豆天美制片厂网站视频| 伊人专区一区二区三区| 99国产精品免费| 人人 操人人 操人人| 色网在线| 大香网站| 青草精品视频一日本久久久久网站| 亚洲综合成人网| 熟妇女伦乱视频| 有码免费观看| 岛国激情视频软件| 麻豆黄站| 亚洲操操操| 免费A片三p视频| 久久精9| 日本高清有码网址视频| 精品美女少妇一区二区| 久久啊哟| 欧美黄片免费在线观看视频| 女上位精品在线| 日日夜夜天天| 一级二级三级黑人无码| 精品欧美日韩在线观看| 久久丁香五月天| 日产操逼| 人妻五十路在线| 五月天精品| 强奸乱伦免费网站| 婷婷精品国产欧美精品亚洲人人爽| 色情综合网| 中文字幕精品一区欧美| 四虎精品永久在线观看| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 91丝袜在线观看| 亚洲网污污污污| 五月婷婷色| 2020中文在线一区二区三区| 高精欧美色| 啊操爽品善一区二区三区| 这里都是精品在线观看| 欧美真人抽搐一进一出gif| 国产综合操逼高清| 日本东京热久久久电影| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 色婷婷五月天| 国产性爱在线视频一区二区| 亚洲骚逼少妇| 亚洲一二三| 超碰超碰95| 伊人久久大香大香线蕉中文| 丝袜人妻av一区二区| 国产一区二区精品久久久不卡蜜臀 | BBBBB97COM| 亚洲综合骚逼| 久久久工口| 婷婷色中文字幕| 国产不卡免费在线视频| 2024年最新色情网站在线观看 | 黄片不用下载在线观看| 亚洲欧美日韩制服另类| 超碰色97| 大干人妻| 亚洲日韩东京热一区| 日韩一级二级在线| 六九九九| 亚洲日本韩国在线| 五十路三级片| 一级@啪啪视频| 国产精品直播在线观看直播| 手机在线大香蕉| 欧美日韩99精品麻豆传媒| 欧美美女后入| 欧美一二三区四五区| 69精品少妇一区二区三区蜜桃| 97精品国产精品免费观看| 好一吊区二区| 青青草男人天堂| 中文字幕精品人妻丝袜| 精品久久一区二区三区四区五区| 天天干天天狼在线视频| 亚洲欧美日韩免费电影| 婷婷色色五月天福利| 久久香蕉国产线看观看亚洲女人 | 蜜桃久久精品一区二区三区| 精品一区二区三区最新| 91 手机在线播放 绯色| 开心五月深爱五月| www激情| 亚洲国产欧美中文永久| av天堂5| 色色色色网站| 再深点灬舒服灬太大了好硬好爽| 亚洲国产麻豆一区二区三区| 色天使亚洲综合在线观看| 高潮的A片激情扒开一区| 老外又粗又长一晚做五次| 国产真乱mangent| 岛国免费视频在线| 无码高清操逼网址| 九九精品99| 在线A日本| 美中日韩无码| 丰满人妻av一区二区三区| 国产在线视视频有精品| av国产无码| 午夜天堂精品久久久久91| 人妻AV 中文字幕的| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 欧美亚洲影视| 色色色色色色色色色色色色色色综合 | 日日做夜狠狠爱欧美黑人| 操逼999| 超碰97资源网亚洲| 亚洲高清91|