精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用契約先行開發(fā)減少契約測(cè)試??

開發(fā) 測(cè)試
如何采用一個(gè)合理的機(jī)制,維護(hù)服務(wù)間契約,使服務(wù)提供方和消費(fèi)房能夠在不造成事故的前提下,保持各自的高效開發(fā),越來越成為各團(tuán)隊(duì)日常開發(fā)中要面對(duì)的問題。

作者  | 劉俊男 ?

契約維護(hù)的難題

如今微服務(wù)憑借其靈活、易開發(fā)、易擴(kuò)展等優(yōu)勢(shì)深入人心,不同服務(wù)之間的集成和交互日漸繁多且復(fù)雜。這些服務(wù)之間交互的方式是多樣的,常見的有 HTTP 請(qǐng)求和消息隊(duì)列。在它們交互的過程中,會(huì)有服務(wù)的版本演進(jìn),交互信息的格式或方式就會(huì)產(chǎn)生變化,前后版本的接口可能并不兼容,甚至開發(fā)環(huán)境經(jīng)常會(huì)宕機(jī)更新,加之不同服務(wù)的開發(fā)進(jìn)度有快有慢,各團(tuán)隊(duì)的優(yōu)先級(jí)有高有低,在開發(fā)過程中,服務(wù)間交互方式的匹配性就成了一個(gè)問題。

這里,不同團(tuán)隊(duì)之間,對(duì)服務(wù)間如何進(jìn)行發(fā)送和接受消息所能達(dá)成的共同理解,我們稱之為契約 (contract)。如何采用一個(gè)合理的機(jī)制,維護(hù)服務(wù)間契約,使服務(wù)提供方和消費(fèi)房能夠在不造成事故的前提下,保持各自的高效開發(fā),越來越成為各團(tuán)隊(duì)日常開發(fā)中要面對(duì)的問題。

契約測(cè)試

契約測(cè)試 (contract testing) 就是在這樣的背景下應(yīng)運(yùn)而生,以下引用 Pact 官網(wǎng)的定義:

Contract testing is a technique for testing an integration point by checking each application in isolation to ensure the messages it sends or receives conform to a shared understanding that is documented in a "contract".

契約測(cè)試是一種測(cè)試集成點(diǎn)的技術(shù),它通過隔離檢查每個(gè)應(yīng)用程序,以確保其發(fā)送或接收的消息,符合記錄在“契約”中的共同理解。

也就是說,在測(cè)試己方服務(wù)時(shí),通過使用測(cè)試替身 (test double),讓它能夠模仿我們所依賴的外界系統(tǒng),返回相對(duì)真實(shí)的消息響應(yīng),從而讓我方團(tuán)隊(duì)在盡可能保證與外界系統(tǒng)兼容的前提下,避免受到外界系統(tǒng)宕機(jī)或開發(fā)新版本等影響,提升開發(fā)效率。再結(jié)合消費(fèi)者驅(qū)動(dòng)開發(fā)的優(yōu)勢(shì),可以避免服務(wù)提供端浪費(fèi)精力去實(shí)現(xiàn)不必要的功能,因此,很多團(tuán)隊(duì)采用了消費(fèi)者驅(qū)動(dòng)的契約測(cè)試 (consumer-driven contract test) 的實(shí)踐。

消費(fèi)者驅(qū)動(dòng)的契約測(cè)試實(shí)踐

在契約測(cè)試的幫助下,很多團(tuán)隊(duì)真正提升了開發(fā)效率,掌握了自己的節(jié)奏,但也有些團(tuán)隊(duì)發(fā)現(xiàn)效果并不明顯,因?yàn)槠跫s測(cè)試帶來的收益并不是免費(fèi)的。契約測(cè)試有著不少的開發(fā)成本,每有一個(gè)新的需求,新的接口,新的字段,或是老字段的可空性發(fā)生了改變,以及枚舉值的增加或減少,都需要增加或減少一些測(cè)試用例,然后在測(cè)試的過程中生成新的契約。這些契約大多以 OpenAPI 文檔的形式存在,作為兩個(gè)團(tuán)隊(duì)日后討論的基準(zhǔn)。

契約測(cè)試驅(qū)動(dòng)的合作流程

  1. 消費(fèi)方與提供方溝通,達(dá)成基本契約:增加一個(gè)接口,調(diào)用的時(shí)候傳一個(gè) RequestDto,接口返回一個(gè) ResponseDto,其中 RequestDto 和 ResponseDto 哪幾個(gè)字段要非空。
  2. 消費(fèi)方回去寫自己的契約測(cè)試,生成契約 (通常以 OpenApi doc 形式),然后以契約測(cè)試驅(qū)動(dòng),開發(fā)自己的邏輯
  3. 服務(wù)方拿到生成的契約,進(jìn)行測(cè)試驅(qū)動(dòng)開發(fā),驗(yàn)證契約是否被滿足

契約測(cè)試驅(qū)動(dòng)的合作流程

契約測(cè)試有時(shí)修改代價(jià)高

在使用契約測(cè)試時(shí)經(jīng)常有這樣的感受:比如,一些簡(jiǎn)單的契約,比如非空字段和格式校驗(yàn)等,每種情況都要專門的測(cè)試用例,而實(shí)現(xiàn)它卻只需要一個(gè)注解,有點(diǎn)得不償失。

更重要的是,隨著測(cè)試的編寫,生成的契約可能比當(dāng)時(shí)商討的更為簡(jiǎn)單,比如一些 400, 401 等情況,有時(shí)并不會(huì)為每一個(gè) API 寫足夠細(xì)節(jié)足夠詳盡的測(cè)試;也可能生成的契約比商討的更為詳細(xì),比如消費(fèi)方在編寫契約測(cè)試的過程中考慮到了更多的邊緣場(chǎng)景。因而每當(dāng)由以上情況導(dǎo)致修改契約時(shí),我們都會(huì)重新溝通,再等待消費(fèi)方重新寫契約測(cè)試,再生成契約,然后服務(wù)提供方再開發(fā)。這個(gè)從溝通到落地的閉環(huán)比較長(zhǎng),每次修改時(shí),服務(wù)提供方需要等待消費(fèi)方編寫測(cè)試,生成契約,然后消費(fèi)方等待服務(wù)方按照契約開發(fā)完成,才能發(fā)布新的版本,這些等待都會(huì)拉低開發(fā)效率。

解決的思路

反饋周期長(zhǎng)是我們經(jīng)常需要面對(duì)的問題,比如我們要搞快速迭代,定期 showcase,就是為了及時(shí)得到客戶的反饋;再比如我們搞結(jié)對(duì)編程,也是為了將 pull request 上可能出現(xiàn)的溝通提前,避免盲目開始之后又造成返工。這個(gè)時(shí)候我們?cè)倏撮_發(fā)流程時(shí)就會(huì)想,如果第一步的溝通可以直接產(chǎn)出固化的契約,足夠直觀和詳盡,讓雙方及早溝通,同時(shí)又可以使用自動(dòng)化的方式約束消費(fèi)方和服務(wù)方雙方,省掉重復(fù)瑣碎的契約測(cè)試,讓溝通過后雙方都可以直接開始開發(fā)就好了。

契約先行開發(fā)

這里說的契約先行,指的是在寫所有代碼之前,把我們溝通好的契約手寫出來,或者通過一些圖形化工具生成出來,比如手寫或生成一個(gè) yaml 格式的 OpenAPI 文檔,這樣溝通的產(chǎn)出足夠直觀。把這個(gè)文檔放在代碼庫(kù)中維護(hù),然后以它為依據(jù),通過自動(dòng)化流水線生成各方的溝通組件(sdk),既能使雙方同時(shí)開始開發(fā),又能對(duì)雙方進(jìn)行約束。

以下以 Java + Spring 為例,通過使用 OpenAPI generator 工具生成代碼,達(dá)到以上效果。

對(duì)于消費(fèi)方來說,流水線可以根據(jù)定好的契約,生成封裝好的 client 類,它提供一個(gè)簡(jiǎn)單的方法,這個(gè)方法包含了 RestTemplate 的參數(shù)和邏輯,以及對(duì)應(yīng)的 RequestDto/ResponseDto。消費(fèi)方開發(fā)人員只需要關(guān)注己方業(yè)務(wù)需要,將合適的參數(shù)傳給該方法,無需關(guān)注這些參數(shù)是用于 path 還是用于 body,該方法會(huì)以合適的方式與服務(wù)方溝通。同時(shí)我們可以定制化生成的方法,對(duì)非空字段進(jìn)行校驗(yàn),達(dá)到約束效果。

對(duì)服務(wù)方來說,流水線可以生成對(duì)應(yīng)的 Controller 組件,http path 和方法的匹配等,服務(wù)方只需要復(fù)寫相應(yīng)的方法來完成自己的業(yè)務(wù)需求,無需關(guān)心傳進(jìn)來的參數(shù)是屬于 path、header 或者是 body。由于定制化生成的 server 端 sdk 嚴(yán)格根據(jù)契約生成了合適的注解,比如 @NotNull?, @Size?, @Pattern 等,Spring 可以自動(dòng)對(duì)注解進(jìn)行校驗(yàn),server 端就可以自動(dòng)拒絕不符合契約的請(qǐng)求。同時(shí),由于生成的 ResponseDto 也帶有響應(yīng) validation 注解,我們也可以對(duì)服務(wù)端返回的 ResponseDto 進(jìn)行約束。

契約先行模式下,團(tuán)隊(duì)的溝通閉環(huán)

這樣以來,團(tuán)隊(duì)的合作流程如下:

  1. 消費(fèi)方與提供方溝通,達(dá)成契約,并在契約代碼庫(kù)中一起提交契約代碼,即 OpenAPI doc。然后觸發(fā)流水線,生成各方代碼 sdk。
  2. 雙方各自引入 sdk 進(jìn)入開發(fā)。

契約先行模式下,團(tuán)隊(duì)的溝通閉環(huán)

通過觀察以上流程可以發(fā)現(xiàn),與契約測(cè)試相比,該流程提前對(duì)溝通結(jié)果進(jìn)行了直觀的固化,使雙方基于細(xì)節(jié)的溝通提前,從而將反饋周期縮短,減少返工概率。另外,契約一旦提交,自動(dòng)生成的 server 端和 client 端 sdk 也同時(shí)可用,消除了開發(fā)過程中消費(fèi)方和服務(wù)方之間的依賴,兩端可以并行開發(fā),減少等待時(shí)間,提升開發(fā)效率。

如果在開發(fā)的過程中,哪一方再出現(xiàn)細(xì)節(jié)問題,需要調(diào)整契約時(shí),可以盡早找到另一方進(jìn)行討論。此時(shí)由于雙方都已經(jīng)進(jìn)入開發(fā),都了解一些相應(yīng)的細(xì)節(jié),討論內(nèi)容更加具體,更加高效,而且討論產(chǎn)生的契約變動(dòng)也會(huì)更早產(chǎn)生效果。

契約先行的適用場(chǎng)景

契約先行開發(fā)并非銀彈,它在解決特定場(chǎng)景下的問題時(shí),才更“劃得來”。

比如契約應(yīng)簡(jiǎn)單直接。 一些非空校驗(yàn),格式要求,簡(jiǎn)單的字段間匹配,使用契約先行和生成代碼都是低投入高回報(bào),生成的代碼具有非常好的約束性。但是如果契約中包含了豐富的業(yè)務(wù)邏輯,不容易在單個(gè) OpenAPI doc 中描述的,還是手寫契約測(cè)試更加明晰,維護(hù)性也更好。

再比如我們使用的編程語言或框架需要得到 OpenAPI generator 良好的支持。 如果不能根據(jù)契約生成好用的代碼,或者在生成代碼的過程中需要做過多的定制化,那么該方法可能并不適用,或者并不劃算。

在開發(fā)過程中需要有健全的集成測(cè)試或者組件測(cè)試。 上述生成的代碼中,雖然 sdk 可以對(duì)服務(wù)間的通信進(jìn)行合法性約束,但是很多單元測(cè)試并不能提前發(fā)現(xiàn)問題。比如在 server 端,我們生成的 @NotNull 等注解,需要把 Spring 啟動(dòng),且測(cè)試用例對(duì)業(yè)務(wù)邏輯具有足夠的覆蓋,才能及早發(fā)現(xiàn)問題,避免線上報(bào)錯(cuò)。

契約先行的成本

天下沒有免費(fèi)的午餐,在帶來上述優(yōu)勢(shì)的同時(shí),契約先行開發(fā)也會(huì)帶來一些成本。

最主要的成本是 OpenAPI generator 的學(xué)習(xí)成本。目前 OpenAPI generator 雖然已經(jīng)可以支撐大多數(shù)的語言和框架,但是要做到足夠好用,還需要對(duì)生成代碼進(jìn)行一些定制化,這些定制化需要一些時(shí)間投入。

結(jié)論

在服務(wù)間合作開發(fā)的過程中,為了維護(hù)契約的有效性,適用契約測(cè)試可以讓不同團(tuán)隊(duì)之間的開發(fā)在一定程度上解耦。在一定場(chǎng)景下,使用契約先行的合作方式可能更高效,比如契約足夠簡(jiǎn)單直接,開發(fā)使用的技術(shù)適用于生成的代碼,開發(fā)過程中已經(jīng)有足夠的集成測(cè)試或組件測(cè)試時(shí),契約先行可以縮短團(tuán)隊(duì)間的反饋閉環(huán),減少等待時(shí)間,提升開發(fā)效率。

責(zé)任編輯:趙寧寧 來源: Thoughtworks洞見
相關(guān)推薦

2022-07-27 11:51:39

契約測(cè)試開發(fā)測(cè)試

2018-06-07 13:17:12

契約測(cè)試單元測(cè)試API測(cè)試

2010-02-22 13:56:35

WCF服務(wù)契約

2022-10-21 17:24:34

契約測(cè)試定位

2010-02-22 15:27:05

WCF數(shù)據(jù)契約

2009-11-09 09:23:10

WCF數(shù)據(jù)契約

2010-02-24 16:58:14

WCF Session

2010-01-27 16:24:52

2017-11-22 15:13:20

集成測(cè)試自動(dòng)化測(cè)試契約測(cè)試

2009-03-11 10:29:23

代碼契約.NETCLR

2009-11-06 15:02:47

WCF契約查詢

2015-08-03 09:36:15

大數(shù)據(jù)時(shí)代契約

2009-11-09 14:46:09

WCF集合契約等價(jià)

2016-11-23 13:46:08

Android

2009-03-04 09:52:35

代碼契約組件接口

2010-02-23 13:46:37

WCF數(shù)據(jù)契約

2009-12-22 09:11:31

WCF雙向通信

2009-11-05 16:27:51

WCF數(shù)據(jù)契約

2010-03-01 16:04:31

WCF服務(wù)契約

2009-12-21 14:05:18

WCF契約
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

97中文字幕在线观看| 国产麻豆乱码精品一区二区三区| 成人黄色在线网站| 欧美在线亚洲一区| 992在线观看| 99a精品视频在线观看| 福利二区91精品bt7086| 中文字幕免费在线不卡| 日本激情视频网站| 青青草原综合久久大伊人精品优势 | 亚洲色图图片| 精品二区三区线观看| 亚洲国产一区二区三区在线播 | 99久久久久久久久| 大片网站久久| 亚洲国产日韩欧美综合久久| 天天色综合社区| 国产精品蜜芽在线观看| 国产精品久久久久aaaa樱花 | 911精品美国片911久久久| 黄视频网站在线看| 久久av免费看| 91麻豆精品国产91久久久| 国产男女免费视频| 国产黄色在线网站| 国产欧美日韩三级| 精品国产免费一区二区三区 | 亚洲欧美高清| 国产一区二区在线观看免费视频| 亚洲精品国产一区二| 狂野欧美一区| 高清欧美电影在线| 亚洲一二三在线观看| 蜜桃tv一区二区三区| 欧美变态tickling挠脚心| 15—17女人毛片| 亚洲美女尤物影院| 精品国产福利在线| 国产av国片精品| 丝袜在线观看| 曰韩精品一区二区| 中文字幕中文字幕在线中高清免费版 | 亚洲国产91精品在线观看| 爱爱爱爱免费视频| 456成人影院在线观看| 午夜日韩在线电影| 搞av.com| 1区2区在线| 午夜亚洲国产au精品一区二区| 91国在线高清视频| 性直播体位视频在线观看| 亚洲精品欧美专区| av中文字幕av| 91麻豆一二三四在线| 亚洲欧洲日韩av| 日本不卡一区二区三区四区| 国产在线激情视频| 亚洲视频 欧洲视频| 国产一区一区三区| 污污的视频在线观看| 亚洲精品免费看| 日韩精品在线观看av| 91九色porn在线资源| 欧美日在线观看| 国产成人精品无码播放| 国产精品av一区二区三区| 91黄色在线观看| av中文字幕网址| 精品伊人久久| 亚洲成人网在线| 37p粉嫩大胆色噜噜噜| sdde在线播放一区二区| 久久久久www| 久久久久久久久久久97| 国产亚洲在线观看| 国产精品7m视频| 国产精品伦一区二区三区| 国产69精品久久久久毛片| 国产精品久久久久久久久久直播 | 国内精品美女av在线播放| 欧美一级视频免费观看| 国产女优一区| 国产日韩欧美一二三区| 亚洲黄色小说网| 91视频你懂的| 致1999电视剧免费观看策驰影院| www免费在线观看| 黑人狂躁日本妞一区二区三区 | 最好看的2019的中文字幕视频| 欧美三级黄色大片| 在线欧美一区| 国产精品久久久av| 亚洲av综合色区无码一二三区 | 日韩欧美成人一区二区| bl动漫在线观看| 欧美成免费一区二区视频| 久久久久久国产免费| 中文字幕一区二区人妻视频| 国产在线视视频有精品| 久久久久久久久一区| 精品视频在线一区二区| 日韩欧美在线免费观看| 波多野结衣中文字幕在线播放| 欧美大奶一区二区| 欧美成aaa人片在线观看蜜臀| 日韩av女优在线观看| 久久99热狠狠色一区二区| 久久精品五月婷婷| 伊人春色在线观看| 欧美视频一区在线观看| aaaaaav| 永久91嫩草亚洲精品人人| 国产91在线播放| 日韩一级片免费| 亚洲欧美日本在线| 嫩草影院国产精品| 天天久久夜夜| 国产69精品久久久久99| hs视频在线观看| 国产精品区一区二区三区| 免费在线观看亚洲视频| 日韩精品免费视频一区二区三区 | 精品国产99久久久久久| 色噜噜狠狠色综合中国| 图片区偷拍区小说区| 国产精品国内免费一区二区三区| 全球成人中文在线| 视频一区二区三区在线看免费看| 亚洲精品成人悠悠色影视| 亚洲免费看av| 精品久久一区| 青青久久aⅴ北条麻妃| 懂色av一区二区三区四区| 亚洲乱码国产乱码精品精的特点| 亚洲综合激情视频| 不卡av一区二区| 茄子视频成人在线| 日本福利在线观看| 欧美日韩中文字幕在线| 人妖粗暴刺激videos呻吟| 国产精品地址| 不卡视频一区二区| 欧美高清另类hdvideosexjaⅴ| 欧美另类videos死尸| 91n在线视频| 精品一区二区影视| 自拍偷拍99| 91精品在线免费视频| 久久精品99久久久久久久久| 中文字幕精品一区二| 国产人成亚洲第一网站在线播放| 国产乱子夫妻xx黑人xyx真爽| 婷婷成人综合| 国产精品成人aaaaa网站| eeuss影院www在线观看| 欧美性生活久久| 日本免费www| 老色鬼精品视频在线观看播放| 亚洲一区二区在线看| 国产一区二区三区免费在线 | 蜜桃麻豆av在线| 亚洲理论在线a中文字幕| 中文字幕69页| 国产精品久久午夜| 麻豆传媒在线看| 在线看片一区| 日本高清不卡一区二区三| 成人全视频免费观看在线看| 日韩视频免费看| 欧美猛烈性xbxbxbxb| 欧美激情综合五月色丁香| 网站一区二区三区| 99精品视频在线观看播放| 久久久久久亚洲综合影院红桃| 992tv成人免费视频| 五月婷婷丁香网| 一本一本大道香蕉久在线精品 | 成人av网站在线观看| av免费观看网| 狠狠色综合日日| 亚洲欧美日韩精品综合在线观看| 日韩大陆av| 欧美精品videossex88| 欧美在线 | 亚洲| 91激情五月电影| 无码人妻精品一区二区三区夜夜嗨 | 亚欧美中日韩视频| 国产精品国产一区二区| 四虎4545www国产精品| 久久精品视频播放| 天堂中文字幕av| 日本福利一区二区| 免费看一级一片| 久久精品亚洲乱码伦伦中文 | www国产精品视频| 免费看日韩av| 欧美日韩国产经典色站一区二区三区 | 国产日产欧美一区二区三区| 日韩视频在线观看一区二区三区| 国产精品毛片在线看| 免费观看黄色大片| 精品在线手机视频| 成人欧美一区二区三区黑人免费| av有声小说一区二区三区| 欧美激情视频一区二区| 成人精品一区二区三区校园激情 | av在线电影院| 亚洲精品99久久久久中文字幕| 一起草av在线| 色狠狠桃花综合| 欧美日韩综合在线观看| 亚洲精品国产一区二区精华液 | 豆国产97在线| 成人亚洲精品| 国产精品爽爽ⅴa在线观看| 老牛影视精品| 久久久久久久爱| 国精产品一区| 久久精品国产2020观看福利| 精品99又大又爽又硬少妇毛片| 亚洲精品在线观看网站| 国产巨乳在线观看| 欧美日韩在线播放一区| 亚洲熟妇无码乱子av电影| 婷婷久久综合九色国产成人 | 国产精品视频500部| 亚洲成人高清| 国产精品日韩在线观看| 美女露胸视频在线观看| 欧美激情亚洲自拍| 亚洲h片在线看| 久久精品视频播放| 免费看美女视频在线网站| 一区二区亚洲欧洲国产日韩| 男女av在线| 亚洲天堂一区二区三区| 暖暖视频在线免费观看| 亚洲精品美女在线| 秋霞视频一区二区| 日韩精品中文字幕在线不卡尤物| 国产三级小视频| 日韩丝袜情趣美女图片| 黑人无套内谢中国美女| 国产亚洲毛片| 欧美色偷偷大香| 人妻精品久久久久中文| 首页国产精品| 久久婷婷人人澡人人喊人人爽| 五十路在线观看| 亚洲精品一区二区三区婷婷月| 992在线观看| 国产清纯美女被跳蛋高潮一区二区久久w | 精品一级视频| 欧美一级片在线| 国产精品久久久久久久久夜色| 一本大道av伊人久久综合| 一二三区免费视频| 欧美亚洲动漫另类| 一级片在线免费观看视频| 欧美日韩高清一区| 中文字幕在线日亚洲9| 欧美揉bbbbb揉bbbbb| 91 中文字幕| 欧美疯狂做受xxxx富婆| 亚洲精品久久久久久动漫器材一区| 日韩美女视频在线| 香蕉视频国产在线| 国产一区二区三区丝袜| 国产黄网站在线观看| 欧美精品videos另类日本| 92国产精品| 国产精品白嫩初高中害羞小美女| 白嫩亚洲一区二区三区| 国产亚洲第一区| 国产精品一国产精品| 在线免费观看成人网| 欧美精品一区二区久久| 日本免费黄色小视频| 国产真实久久| 日本xxxxxxx免费视频| 国产在线国偷精品免费看| 国产日韩视频一区| 日本一区二区综合亚洲| 国产精品老熟女一区二区| 欧美日韩亚洲国产一区 | 精品国产一区a| 国产精品视频二区三区| 久久色精品视频| 日本黄色免费在线| 成人a在线观看| 偷拍亚洲色图| 中国女人做爰视频| 久久久久久久欧美精品| 人妻精油按摩bd高清中文字幕| 久久新电视剧免费观看| 国产大学生自拍| 欧美在线一区二区| 黄色aaa毛片| 日韩网站免费观看| 免费毛片b在线观看| 91性高湖久久久久久久久_久久99| 欧美激情极品| 麻豆映画在线观看| 免费在线观看一区二区三区| 久久精品女同亚洲女同13| 亚洲三级免费电影| 国产精品第六页| 亚洲精品国产精品国自产观看浪潮| 欧美被日视频| 国产精品com| 校园春色另类视频| 日韩国产一级片| 国产精品99久久久久久有的能看| 黄色片网站免费| 欧美日韩国产一中文字不卡| 99久久久久成人国产免费| 综合久久五月天| 中文字幕av一区二区三区佐山爱| 国产99在线免费| 欧美一区二区| 久久久久xxxx| 中文字幕一区二区三| 亚洲国产精品无码久久久| 亚洲国内精品视频| 国产深夜视频在线观看| 97人人澡人人爽| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | 夜夜操天天操亚洲| 99精品人妻无码专区在线视频区| 综合激情国产一区| 看片一区二区| 色综合666| 日本不卡中文字幕| 99久久久无码国产精品性| 欧美午夜美女看片| 亚洲 国产 欧美 日韩| 97人人爽人人喊人人模波多| 超碰成人在线观看| 久久综合久久网| 高清成人在线观看| 国产精品成人免费一区二区视频| 欧美zozo另类异族| 黄页网站在线| 国内精品久久久久久久果冻传媒| 狠狠干综合网| 中文视频在线观看| 欧美视频第一页| 高清在线观看av| 国产精品亚洲综合天堂夜夜| 视频在线不卡免费观看| 天天av天天操| 洋洋成人永久网站入口| 手机看片1024日韩| 日韩av理论片| 国产精品久久久久久麻豆一区软件| 在线a免费观看| 亚洲欧美欧美一区二区三区| 国产99999| 97热精品视频官网| 精品美女视频| 亚洲色图欧美自拍| 亚洲综合免费观看高清在线观看| 日本激情视频网站| 国产999在线| 亚洲免费二区| 在线播放第一页| 日本韩国欧美三级| 黄色精品免费看| 高清国产在线一区| 久久只有精品| 色婷婷在线视频观看| 亚洲国产精品va在线| 亚洲播播91| 日本xxxxx18| 91在线国内视频| 一二三四区在线| 久久欧美在线电影| 成人高清电影网站| 91大神免费观看| 色婷婷精品久久二区二区蜜臂av| 午夜视频在线观看免费视频| 亚洲最大的成人网| 亚洲精品资源| 91免费在线看片| 精品国产乱码久久久久久图片| 欧美国产大片| 操bbb操bbb| 久久久久久久综合色一本| 国产精品久久久久久久一区二区| 午夜精品久久久久久久99热| 波多野结衣一区| 色婷婷免费视频| 欧美老肥妇做.爰bbww| 玖玖在线播放| 国产女教师bbwbbwbbw| 欧美激情在线一区二区| 国产成人手机在线| 成人黄色短视频在线观看| 午夜在线a亚洲v天堂网2018| 国产这里有精品|