使用Mock技術(shù)幫助提升測(cè)試效率的小tips,你知道幾個(gè)?
Mock是什么?
我給你描述一下這幾個(gè)場(chǎng)景,你看看是不是熟悉的呢?
測(cè)試一個(gè)業(yè)務(wù)模塊,這個(gè)業(yè)務(wù)模塊中有幾個(gè)接口對(duì)接到了第三方,因?yàn)榈谌窖悠诮桓?,?dǎo)致項(xiàng)目延期,我又背鍋了?
我想測(cè)試前端頁(yè)面字體是不是有做兼容性處理,需要改相關(guān)字段的數(shù)據(jù)庫(kù),但是我又沒有修改數(shù)據(jù)庫(kù)的權(quán)限,我好愁呀
領(lǐng)導(dǎo)讓我測(cè)試部署在某個(gè)機(jī)器上的軟件,可是。。。機(jī)器都沒有部署好,沒辦法測(cè)試呀?
我測(cè)試的模塊嚴(yán)重和其他模塊有耦合,其他模塊還沒開發(fā)完成,我只能干等,導(dǎo)致最后測(cè)試延期了…績(jī)效又打C了?
這些都是我們?cè)谄綍r(shí)測(cè)試過(guò)程中,經(jīng)常碰到的阻塞測(cè)試進(jìn)度的問題,那有什么技術(shù)手段,可以解決這些問題,提升我們的測(cè)試效率呢?
先不要著急知道答案,大家可以看一下上面的這四個(gè)過(guò)程,其實(shí)都是我們的被測(cè)模塊在向某一個(gè)依賴環(huán)境(第三方服務(wù)、后端接口、硬件設(shè)備、其他服務(wù))發(fā)送請(qǐng)求的過(guò)程中,依賴環(huán)境出現(xiàn)了問題,導(dǎo)致影響我們的測(cè)試效率。
那如果我們把這個(gè)“拖后腿”的依賴環(huán)境直接替換,改成我們自己的一個(gè)服務(wù)接口,我們想讓它返回什么就返回什么,測(cè)試起來(lái),是不是就輕松多了?

那上面的這個(gè)場(chǎng)景,其實(shí)所使用的,就是我們接下來(lái)要教給大家的Mock技術(shù)。
如何使用Mock技術(shù)?
Mock的實(shí)現(xiàn)有多種方式,可以通過(guò)mitmproxy+python 實(shí)現(xiàn)深度定制的Mock,也可以通過(guò)fiddler或Charles這種比較簡(jiǎn)單的工具實(shí)現(xiàn)一些基礎(chǔ)的Mock。
首先,我們先來(lái)看如何通過(guò)Charles實(shí)現(xiàn)Mock。在實(shí)現(xiàn)之前,先簡(jiǎn)單介紹一下Charles這個(gè)工具。Charles本身是一個(gè)很強(qiáng)大的代理工具, Charles 主要的功能包括:
支持SSL代理??梢宰ト》治鰄ttps的請(qǐng)求。
支持流量控制??梢阅M慢速網(wǎng)絡(luò)以及等待時(shí)間(latency)較長(zhǎng)的請(qǐng)求。
支持重發(fā)網(wǎng)絡(luò)請(qǐng)求,方便后端調(diào)試。
支持修改網(wǎng)絡(luò)請(qǐng)求參數(shù)。
支持網(wǎng)絡(luò)請(qǐng)求的截獲并動(dòng)態(tài)修改。
可以自動(dòng)將json或xml數(shù)據(jù)格式化,方便查看。
當(dāng)然了,本文的重點(diǎn)是在講Mock技術(shù),那接下來(lái)就看一下,Charles是如何實(shí)現(xiàn)Mock的吧。
通過(guò)Mock技術(shù)修改百度頁(yè)面的效果
1.先保存接口返回?cái)?shù)據(jù),右鍵單擊某接口->點(diǎn)擊 SaveResponse ->文件后綴寫上 .html



2.對(duì)本地的 html 進(jìn)行修改,將“百度一下”改為“霍格沃茲”


3.設(shè)置 Charles 進(jìn)行 map local,右鍵點(diǎn)擊 Map Local->進(jìn)入 Edit Mapping ->點(diǎn)擊 choose ->選擇修改后的 html->點(diǎn)擊 OK



4.此時(shí)再次請(qǐng)求百度,則可以看到“百度一下”變?yōu)榱恕盎舾裎制潯?/span>


通過(guò)Mock技術(shù)修改股票的展示效果
上面這個(gè)案例是 Mock 技術(shù)相對(duì)比較簡(jiǎn)單的一個(gè)應(yīng)用場(chǎng)景,那 Mock 技術(shù)是否可以在App應(yīng)用上取得同樣的效果呢?比如下圖,我們要去測(cè)試雪球股票界面的列表展示顏色是否會(huì)跟隨股價(jià)的漲跌停進(jìn)行變化。

可能到這里,很多同學(xué)說(shuō),改數(shù)據(jù)庫(kù)就可以實(shí)現(xiàn)了呀,但是改數(shù)據(jù)庫(kù)有可能存在兩個(gè)問題:
1、不是所有的測(cè)試都有數(shù)據(jù)庫(kù)的修改權(quán)限。
2、有一些數(shù)據(jù)信息是直接從第三方接口獲取的,測(cè)試也不可能有改第三方服務(wù)數(shù)據(jù)庫(kù)的權(quán)限。
其實(shí)要實(shí)現(xiàn)上面這個(gè)測(cè)試需求是非常簡(jiǎn)單的,只要善用Mock工具,了解Mock的實(shí)現(xiàn)與配置原理,就能夠輕松完成雪球股票界面的列表展示顏色是否會(huì)跟隨股價(jià)的漲跌停進(jìn)行變化,從而提升測(cè)試效率。

總結(jié)
當(dāng)然,以上的小練習(xí)只是實(shí)現(xiàn)了Mock技術(shù)中的一個(gè)簡(jiǎn)單應(yīng)用場(chǎng)景,至于如何解決第三方服務(wù)的依賴等其他更多的Mock技術(shù)的使用場(chǎng)景,以及更進(jìn)階的如何結(jié)合Mock技術(shù)實(shí)現(xiàn)一個(gè)數(shù)據(jù)工廠,大家可以來(lái)我們的《3天接口自動(dòng)化測(cè)試實(shí)戰(zhàn)訓(xùn)練營(yíng)》試聽了解哦~