五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Apifox 進(jìn)行團(tuán)隊(duì)接口管理指南

2022-03-30 10:29 作者:Apifox  | 我要投稿

Apifox,同 postman 一樣,最基本的功能用來(lái)接口聯(lián)調(diào)。

稍微高級(jí)點(diǎn)的用法可以使用 Apifox 生成各個(gè)語(yǔ)言發(fā)送請(qǐng)求的代碼,針對(duì) Image/File 進(jìn)行請(qǐng)求,對(duì) Request Body 與 Response Body 進(jìn)行數(shù)據(jù)校驗(yàn)及測(cè)試。

「僅僅做到這些只是滿足一個(gè)開發(fā)者的使用場(chǎng)景。而 Apifox 更高級(jí)的用法可以使整個(gè)團(tuán)隊(duì)進(jìn)行受益,滿足開發(fā)測(cè)試的各個(gè)階段,對(duì)開發(fā)環(huán)境,測(cè)試環(huán)境,生產(chǎn)環(huán)境進(jìn)行全環(huán)境覆蓋。對(duì)開發(fā)、測(cè)試、文檔進(jìn)行更進(jìn)一步的自動(dòng)化」

1.?Apifox API 管理分層

Apifox 可對(duì)后端的所有請(qǐng)求按功能或者業(yè)務(wù)模塊進(jìn)行組織,使用 markdown 對(duì)所有請(qǐng)求和示例添加適當(dāng)?shù)拿枋觥?/p>

我們看一下 Apifox 關(guān)于組織請(qǐng)求及分組的建議。

  • 項(xiàng)目: 對(duì)應(yīng)一個(gè)團(tuán)隊(duì)中某個(gè)服務(wù)。項(xiàng)目在項(xiàng)目組內(nèi)各個(gè)成員(server, client, QA)間進(jìn)行共享。可以對(duì)整個(gè)項(xiàng)目添加請(qǐng)求,文檔、單API測(cè)試等。最重要的是可以添加「測(cè)試流程」「數(shù)據(jù)模型」,后續(xù)講到。對(duì)于一開始未在 apifox 組織請(qǐng)求的項(xiàng)目,可以「根據(jù) apidoc、swagger 等文檔自動(dòng)轉(zhuǎn)化為 apifox 組織好的項(xiàng)目」。

  • 分組: 對(duì)應(yīng)一個(gè)模塊,或者各層級(jí)子路由。如?router.use('/users')?所有的請(qǐng)求都在一個(gè)分組,可以根據(jù)路由互相嵌套分組。

  • 請(qǐng)求: 對(duì)應(yīng)一個(gè)API請(qǐng)求,一個(gè)文檔。

  • 實(shí)例: 對(duì)應(yīng)一個(gè)請(qǐng)求不同的參數(shù)以及響應(yīng),用于 Mock Server 以及文檔。

PS: 關(guān)于 Mock Server 和團(tuán)隊(duì)共享 API,在 postman 中也存在,不過(guò) apifox 全部免費(fèi),優(yōu)勢(shì)在我。

PS2: 一個(gè)小建議,如果能夠通過(guò)一個(gè) Proxy,跑一遍項(xiàng)目,將所有請(qǐng)求收集起來(lái)并存儲(chǔ)為 Apifox 的項(xiàng)目,可最大幅度地節(jié)省了人為添加 API 的繁瑣性。特別是由其它工具,剛轉(zhuǎn)化為 apifox 時(shí)。

1.1.?文檔

apifox 自動(dòng)生成文檔有助于團(tuán)隊(duì)協(xié)作,解決了手動(dòng)寫文檔,「以及更新不及時(shí)的重大bug」。

喂,那個(gè)后端,就是說(shuō)你了,你文檔沒(méi)更新害我白折騰了三天三夜。

不過(guò)這樣冗余字段過(guò)多,更好的解決方案是在測(cè)試中對(duì)請(qǐng)求進(jìn)行 json 校驗(yàn),同時(shí)充當(dāng)了一部分文檔的功能。畢竟 json-schema 就是用來(lái)描述數(shù)據(jù)使數(shù)據(jù)更加可讀。

以上說(shuō)到請(qǐng)求,對(duì)于響應(yīng)的文檔,可以 json-schema 校驗(yàn)或者每個(gè)字段的描述,以及更多的測(cè)試用例代表更多的細(xì)節(jié)。

1.2.?Mock

當(dāng)服務(wù)器端還沒(méi)有寫好 API 時(shí),客戶端可以自定義規(guī)則來(lái)生成接口。

更多參考 「前端該如何優(yōu)雅地Mock數(shù)據(jù)??」每個(gè)前端都應(yīng)該學(xué)會(huì)的技巧[1]

2.?測(cè)試

對(duì)于每一個(gè) Request 都需要有測(cè)試用例,驗(yàn)證響應(yīng)是否成功,響應(yīng)時(shí)間是否過(guò)長(zhǎng)或者響應(yīng) json 的數(shù)據(jù)類型是否正確。

測(cè)試可以使用?pm.expect?進(jìn)行?BDD?測(cè)試,風(fēng)格和?chai?很像,如果熟悉?chai?就很容易上手,pm.expect?底層使用 chai 實(shí)現(xiàn),與 chai BDD API 一致。

apifox 也有一些 HTTP 相關(guān)的測(cè)試 API,如 status code,header, body,并且也提供了一些 snippets。

// 響應(yīng)成功
pm.test('Status code is 200', () => {
?pm.response.to.have.status(200)
})

// 響應(yīng)成功 chai.expect
pm.test('Status code is 200', () => {
?chai.expect(pm.response).to.have.property('code', 200)
})

// 校驗(yàn)響應(yīng)數(shù)據(jù)
pm.test('Page is 100', () => {
?const jsonData = pm.response.json()
?chai.expect(jsonData.page).to.eql(100)
})

重點(diǎn)不在這里,使用?「apifox 可以使用圖形界面交互式無(wú)需寫代碼對(duì)接口進(jìn)行測(cè)試」

以上截圖對(duì)以下數(shù)據(jù)進(jìn)行了校驗(yàn)

  1. API 請(qǐng)求成功,狀態(tài)碼必須是 200

  2. 響應(yīng)體數(shù)據(jù)必須是 JSON

  3. 響應(yīng)體中 code 字段必須是數(shù)字

2.1.?示例: 測(cè)試請(qǐng)求參數(shù)

一個(gè)請(qǐng)求帶有若干參數(shù),如?GET?的?querystring(search)?以及?POST?的?body,「不同的參數(shù)會(huì)有不同數(shù)據(jù)結(jié)構(gòu)的響應(yīng)」

假設(shè)一個(gè)請(qǐng)求不同參數(shù)返回的 json schema 完全不同,則可以寫成兩個(gè) API 分開測(cè)試。

如果返回的 Json Schema 相同,只是值不同,則使用兩個(gè)不同的示例進(jìn)行測(cè)試。

3.?集成測(cè)試

單個(gè)API測(cè)試通過(guò)后,需要把所有請(qǐng)求集成在一起進(jìn)行測(cè)試。這時(shí)候出現(xiàn)了兩個(gè)問(wèn)題

  1. 如何確保API依賴

  2. API之間如何傳遞數(shù)據(jù)

在 apifox 中可以使用環(huán)境變量維護(hù)數(shù)據(jù),在請(qǐng)求中用?{{}}?占位符替代。

一個(gè)常見(jiàn)的場(chǎng)景是項(xiàng)目使用 token 來(lái)保存登錄信息,每次請(qǐng)求都需要攜帶token??梢栽诘卿浀臏y(cè)試代碼中設(shè)置 token 的環(huán)境變量

const url = 'http://{{HOST}}/api/login'

pm.test('There is a token', () => {
?const jsonData = pm.response.json()
?pm.expect(jsonData.token).to.a('string')
?pm.environment.set('token', jsonData.token)
})

const urlNext = 'http://{{HOST}}/api/profile?token={{token}}'

PS: 那如何自動(dòng)控制所有測(cè)試的順序呢?比如以下三步,登錄成功后走第二步,登錄失敗走第三步

  1. 登錄

  2. 發(fā)帖

  3. XXX

4.?持續(xù)集成

如何將集成測(cè)試與項(xiàng)目集成在一起,納入版本管理,保留測(cè)試記錄,方便準(zhǔn)時(shí)定位 bug。

可以可使用 Apifox CLI,不過(guò)僅僅能測(cè)試離線數(shù)據(jù)??蓞⒖嘉臋n Apifox: 持續(xù)集成[2]

$ apifox run examples/sample.apifox-cli.json -r cli,html

5.?總結(jié)及更多疑問(wèn)總結(jié)

  1. 如何編寫測(cè)試用例

    1. apifox 底層使用?[chai.js](http://chaijs.com/api/bdd/)?的 bdd 語(yǔ)法作為斷言庫(kù),另外加了一些特有的語(yǔ)法。

    2. apifox 可通過(guò)圖形化界面交互式校驗(yàn)數(shù)據(jù)

  2. 如何debug

    點(diǎn)擊菜單欄 View -> Show Devtools (Show Postman Console) 可以查看響應(yīng),檢查輸出。

  3. 集成測(cè)試如何管理請(qǐng)求依賴

    比如: 兩個(gè)API需要有依賴關(guān)系,比如當(dāng)創(chuàng)建完一個(gè)用戶后(注冊(cè)),獲取他的個(gè)人信息。獲取個(gè)人信息就需要依賴創(chuàng)建用戶這個(gè)API。

    使用 Environment Variables 可以管理依賴

  4. 如何集成到服務(wù)器端項(xiàng)目中

    可以使用 npm 包 apifox-cli 來(lái)集成到項(xiàng)目中


Apifox 進(jìn)行團(tuán)隊(duì)接口管理指南的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
左贡县| 望奎县| 五指山市| 隆德县| 旬阳县| 洞头县| 新绛县| 师宗县| 镇远县| 崇文区| 宁海县| 庄河市| 方山县| 乐亭县| 大同市| 印江| 德兴市| 望江县| 杭锦后旗| 温泉县| 九寨沟县| 汕头市| 东台市| 聊城市| 黄梅县| 讷河市| 吐鲁番市| 凤凰县| 桦南县| 西贡区| 商城县| 天镇县| 淮安市| 毕节市| 扶余县| 阿坝县| 达拉特旗| 大庆市| 奉节县| 松桃| 治县。|