<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          漫話:圣誕夜,如何給女朋友解釋什么是Mock? | IDCF

          共 2299字,需瀏覽 5分鐘

           ·

          2020-12-28 00:05


          來(lái)源:漫話編程(mhcoding)

          ?圣誕快樂(lè),文末有禮?

          某天晚上,接到測(cè)試的電話,他問(wèn)為什么在日常環(huán)境我的接口使用不同的用戶測(cè)試返回的內(nèi)容都一樣,我回答他:接口數(shù)據(jù)被我mock掉了,現(xiàn)在返回的都是mock數(shù)據(jù),需要調(diào)一下mock的邏輯才行。
          掛斷電話之后,女朋友滿懷好奇的來(lái)問(wèn)我:
          Mock,直譯過(guò)來(lái)的話是虛假的意思,但是在面向?qū)ο蟪绦蛟O(shè)計(jì)中,一般翻譯成模擬。如接口mock、mock對(duì)象等,通常表示接口模擬、模擬對(duì)象等。
          在程序開發(fā)中,一般在兩種場(chǎng)景中會(huì)是用到mock技術(shù):第一種是在單元測(cè)試的時(shí)候,第二種是在接口測(cè)試的時(shí)候。

          一、單元測(cè)試mock



          最初,mock主要應(yīng)用在單元測(cè)試中,因?yàn)閱卧獪y(cè)試的目的是只想針對(duì)自己關(guān)注的這個(gè)"單元"部分進(jìn)行測(cè)試,所以需要對(duì)屏蔽掉一些外部依賴的影響,這時(shí)候就可以使用mock技術(shù)。
          不僅僅是軟件開發(fā)領(lǐng)域的單元測(cè)試,其實(shí)在很多工業(yè)測(cè)試場(chǎng)景中,也會(huì)使用一些Mock技術(shù),比如常見的汽車碰撞測(cè)試。
          汽車在上市之前都需要經(jīng)過(guò)碰撞測(cè)試,并且公布測(cè)試結(jié)果。碰撞測(cè)試過(guò)程中需要通過(guò)真實(shí)撞擊來(lái)評(píng)定汽車的耐撞能力以及對(duì)內(nèi)部駕駛?cè)藛T的保護(hù)能力。

          但是,為了保證驗(yàn)證的準(zhǔn)確性,有為了保證測(cè)試人員的安全,一般會(huì)采用假人來(lái)進(jìn)行測(cè)試。這些假人都是經(jīng)過(guò)特制的,他們的生物學(xué)性能一般和真人是一樣的,比如體重、關(guān)節(jié)能力、組織強(qiáng)度等。
          而且有時(shí)候,為了保證測(cè)試的全面性,還會(huì)采用各種各樣的假人,如成年人、老人、小孩子、男性、女性等都需要充分測(cè)試到。
          所以,這個(gè)假人其實(shí)就是一個(gè)Mock對(duì)象。在軟件單元測(cè)試中,我們也需要用到這些測(cè)試對(duì)象。目的也類似,就是為了保證測(cè)試的全面性及準(zhǔn)確性。
          之所以要在測(cè)試中使用Mock對(duì)象,其實(shí)有很多原因,其中最重要的原因就是真實(shí)對(duì)象的構(gòu)造成本太高。這時(shí)候一般就會(huì)采用mock對(duì)象。
          而市面上也有很多工具可以方便的幫助我們進(jìn)行單元測(cè)試的mock,如Easymock、jMock、Mockito、Unitils Mock、PowerMock、JMockit等。
          其中比較常用的就是Easymock(https://easymock.org/ )、JMockit(https://jmockit.github.io/index.html )和Mockito(https://site.mockito.org/ )這三種,用起來(lái)都比較簡(jiǎn)單。
          關(guān)于這些工具的對(duì)比,在JMockit官網(wǎng)中有一張圖還是挺明顯的,如下:


          二、接口mock



          如我們的要測(cè)試的一個(gè)方法,其中依賴了一個(gè)RPC遠(yuǎn)程服務(wù),因?yàn)檫h(yuǎn)程服務(wù)的返回值可能是各種各樣的,我們?yōu)榱藴y(cè)試我們的接口的魯棒性,就會(huì)針對(duì)各種邊界情況進(jìn)行充分測(cè)試。
          如果把外部接口mock掉,也就是把外部接口的返回值當(dāng)做一個(gè)mock對(duì)象,那么我們就可以很方便的模擬各種情況。如外部接口正常返回、異常返回、請(qǐng)求超時(shí)等等,都可以很方便的被測(cè)試。
          其實(shí),隨著軟件開發(fā)這么多年的發(fā)展,mock技術(shù)已經(jīng)不僅僅局限于單元測(cè)試階段了,尤其是隨著微服務(wù)的興起,應(yīng)用拆分的越來(lái)越細(xì),應(yīng)用依賴也越來(lái)越多。

          這時(shí)候Mock技術(shù)就顯得尤為重要了。
          很多時(shí)候,一個(gè)項(xiàng)目中,大家可能是同時(shí)開發(fā)的,而我們的很多下游依賴可能還沒(méi)開完完,或者有些特殊case沒(méi)辦法構(gòu)造,那這時(shí)候就可以利用mock技術(shù)來(lái)mock掉下游接口。
          我們?nèi)粘i_發(fā)中用到的時(shí)候很多,比如日常開發(fā)環(huán)境調(diào)用支付寶,我們需要經(jīng)常構(gòu)造諸如協(xié)議過(guò)期、余額不足、請(qǐng)求超時(shí)、賬戶不存在等case的時(shí)候,就可以想辦法將他們的接口mock掉。
          市面上現(xiàn)在也有很多接口mock工具可以使用,如RAP、Yapi、Moco和DOClever等。
          2.1 RAP
          RAP是阿里團(tuán)隊(duì)出的一款接口管理工具,能給你提供方便的接口文檔管理、Mock、導(dǎo)出等功能。他可以通過(guò)分析接口結(jié)構(gòu),動(dòng)態(tài)生成模擬數(shù)據(jù),校驗(yàn)真實(shí)接口正確性,圍繞接口定義,通過(guò)一系列自動(dòng)化工具提升我們的協(xié)作效率。
          現(xiàn)在該項(xiàng)目已暫停維護(hù),但是官方團(tuán)隊(duì)推出了RAP2,RAP2 是在 RAP1 基礎(chǔ)上重做的新項(xiàng)目,項(xiàng)目地址:https://github.com/thx/rap2-delos

          2.2 YApi
          YApi是去哪兒網(wǎng)移動(dòng)架構(gòu)組開發(fā)的一個(gè)開源項(xiàng)目,旨在為開發(fā)、產(chǎn)品、測(cè)試人員提供更優(yōu)雅的接口管理服務(wù)。可以幫助開發(fā)者輕松創(chuàng)建、發(fā)布、維護(hù) API。官網(wǎng)地址:https://hellosean1025.github.io/yapi/

          2.3 Moco
          Moco 是一個(gè)搭建模擬服務(wù)器的工具,其支持 API 和獨(dú)立運(yùn)行兩種方式,前者通常是在 junit 等測(cè)試框架中使用,后者則是通過(guò)運(yùn)行一個(gè) jar 包開啟服務(wù)。項(xiàng)目地址:https://github.com/dreamhead/moco
          2.4 DOClever
          DOClever是一個(gè)可視化免費(fèi)開源的接口管理工具 ,可以分析接口結(jié)構(gòu),校驗(yàn)接口正確性, 圍繞接口定義文檔,通過(guò)一系列自動(dòng)化工具提升我們的協(xié)作效率。主要提供接口信息管理、接口調(diào)試運(yùn)行、接口Mock、自動(dòng)化測(cè)試、團(tuán)隊(duì)協(xié)作等功能。官網(wǎng)地址:http://doclever.cn/controller/index/index.html

          ?Merry Christmas!?
          ?IDCF圣誕禮物?
          價(jià)值200元的DevOps在線學(xué)習(xí)工具箱
          限量500份免費(fèi)領(lǐng)取啦!
          ?數(shù)量有限,趕緊掃碼?

          瀏覽 64
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产黄色视频免费观看 | 日本一级一片免费视频 | 影音先锋福利资源91p | 日本亲与子乱人妻hd | 欧美日韩黄色大片 |