MockServer 服務(wù)框架設(shè)計(jì)
大部分現(xiàn)有的 mock 工具只能滿足 HTTP 協(xié)議下簡單業(yè)務(wù)場景的使用。但是面對(duì)一些復(fù)雜的業(yè)務(wù)場景就顯得捉襟見肘,比如對(duì) socket 協(xié)議的應(yīng)用進(jìn)行 mock,或者對(duì)于支付接口的失敗重試的定制化 mock 場景。
為解決上述問題,霍格沃茲測試學(xué)院設(shè)計(jì)并研發(fā)了 CSRMockServer 在下面的文章中簡稱 mock server。
mock server 相較于這些 mock 工具,具有規(guī)則更靈活、定制化更強(qiáng)、支持拓展多協(xié)議的特點(diǎn)。在本章節(jié)將會(huì)從架構(gòu)設(shè)計(jì)介紹如何實(shí)現(xiàn)以上的特點(diǎn),而在實(shí)戰(zhàn)章節(jié),會(huì)針對(duì)具體的測試場景,演示不同的解決方案。
框架設(shè)計(jì)
若想實(shí)現(xiàn)上述特點(diǎn),一定要有一個(gè)合理的架構(gòu)設(shè)計(jì)。
mock server 架構(gòu)設(shè)計(jì):

框架的設(shè)計(jì)主要分為五個(gè)部分:
客戶端
客戶端主要負(fù)責(zé)與 mock 服務(wù)的交互,由測試人員制定 mock 的請(qǐng)求響應(yīng)規(guī)則,以及啟動(dòng)/停止 mock 服務(wù)。
代理
負(fù)責(zé)請(qǐng)求和響應(yīng)的收發(fā),接收到請(qǐng)求后,先轉(zhuǎn)發(fā)給 Mock 引擎,mock 引擎收到請(qǐng)求響應(yīng)數(shù)據(jù)進(jìn)行處理后,再返回給代理響應(yīng)信息,代理給服務(wù)器返回模擬的響應(yīng)值。
協(xié)議(protocol)
不同的協(xié)議的請(qǐng)求、響應(yīng)數(shù)據(jù)格式往往不相同,既有標(biāo)準(zhǔn)的 json 結(jié)構(gòu)體,也有二進(jìn)制或十六進(jìn)制的數(shù)據(jù)類型。這部分?jǐn)?shù)據(jù)需要在協(xié)議層進(jìn)行處理之后,才好進(jìn)行相關(guān)的邏輯處理。所以協(xié)議層(protocol)主要負(fù)責(zé)和協(xié)議相關(guān)的數(shù)據(jù)處理。
protocol 還具備很強(qiáng)的很拓展性,如果一個(gè)系統(tǒng)涉及到了多協(xié)議的 mock,測試人員可以給不同的協(xié)議指定不同的規(guī)則,以此達(dá)到多協(xié)議 mock 的作用。具體的使用會(huì)在后面的章節(jié)進(jìn)行演示。
Mock引擎
mock 邏輯的驅(qū)動(dòng)引擎,根據(jù)不同功能模塊的請(qǐng)求,分發(fā)給 mock 服務(wù)的對(duì)應(yīng)的實(shí)現(xiàn)接口。
后臺(tái)服務(wù)
提供與 mock 服務(wù)交互的對(duì)外接口。
設(shè)計(jì)優(yōu)點(diǎn)
提供了后臺(tái)服務(wù)接口,測試人員添加規(guī)則、控制 mock 服務(wù)更加靈活
定制化更強(qiáng),內(nèi)置支持根據(jù)索引、消耗、mock 后添加動(dòng)作等操作
通過切換不同的 protocol 與代理服務(wù),即可實(shí)現(xiàn)多協(xié)議的支持,擴(kuò)展性強(qiáng)
mock server 框架就先介紹這些,后面將會(huì)演示 mock server 的使用流程哦。