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

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

Apifox:API 接口自動(dòng)化測(cè)試完全指南

2023-04-10 15:38 作者:Apifox  | 我要投稿


1. 前言

在開始前大家可以先閱讀:深入了解自動(dòng)化測(cè)試:什么是自動(dòng)化測(cè)試及其作用?(https://apifox.com/apiskills/what-is-automation-testing)

大家好,這是一篇關(guān)于?Apifox?的接口自動(dòng)化測(cè)試教程。相信你已經(jīng)對(duì) Apifox 有所了解:“集 API 文檔、API 調(diào)試、API Mock、API 自動(dòng)化測(cè)試,更先進(jìn)的 API 設(shè)計(jì)/開發(fā)/測(cè)試工具”。

筆者是后端開發(fā),因此這篇教程關(guān)注的是?API 自動(dòng)化測(cè)試,如果你也是后端開發(fā),正苦于沒有好的方式測(cè)試接口,對(duì)保證線上接口穩(wěn)定性沒有信心,那么這篇文章就是為你準(zhǔn)備的,如果你學(xué)會(huì)了 Apifox 接口自動(dòng)化測(cè)試,它幾乎是一個(gè)會(huì)陪伴你整個(gè)職業(yè)生涯中的一件稱心應(yīng)手的兵器。

接口測(cè)試可不是簡(jiǎn)單的請(qǐng)求一兩個(gè)接口再檢查一下響應(yīng)結(jié)果那么簡(jiǎn)單,沒有貼近業(yè)務(wù)場(chǎng)景的測(cè)試意義不大,但完全模擬業(yè)務(wù)場(chǎng)景,一比一真實(shí)的去還原用戶操作流程的測(cè)試勢(shì)必會(huì)很復(fù)雜,如 接口需要登陸后才能操作怎么辦?一個(gè)接口依賴上一個(gè)接口請(qǐng)求返回的數(shù)據(jù)怎么辦?后端對(duì)請(qǐng)求有簽名驗(yàn)證怎么辦?后端任務(wù)是異步處理的怎么辦?...

不要擔(dān)心,既然是完全指南,這些問題我們就都會(huì)講到,Apifox 強(qiáng)大的能力可以解決這些問題,下面我們會(huì)用真實(shí)的案例,逐步講解覆蓋到這些所有的場(chǎng)景。建議大家打開?autotest.apifox.cn?這個(gè)項(xiàng)目,一邊學(xué)習(xí)里面的公共腳本(公共腳本、測(cè)試套件等都打包放在?百度網(wǎng)盤),一邊跟著練習(xí)。

2. 接口自動(dòng)鑒權(quán)

知識(shí)點(diǎn):環(huán)境變量、公共腳本、pm.sendRequest腳本發(fā)送請(qǐng)求

我們通過一個(gè)需要登錄才能訪問的后臺(tái)新聞列表接口,來演示接口自動(dòng)登錄鑒權(quán)。

默認(rèn)情況下訪問該接口提示需要登錄:

如果要正常訪問該接口的數(shù)據(jù),需要在 header 中提供?AdminToken: token?頭,這是一個(gè)常見的需要 JWT 登錄認(rèn)證接口。

很自然的我們想到,如果自動(dòng)請(qǐng)求登錄接口獲取?token?值,然后在每次請(qǐng)求前自動(dòng)帶上這個(gè)?AdminToken?頭不就行了嗎,沒錯(cuò)就是這樣簡(jiǎn)單,偽代碼如下:

完整的代碼見 「公共腳本」admin: login and Auth

這里我們從登錄接口獲取 token 后,將其緩存到本地的環(huán)境變量中,這樣就不必每次都請(qǐng)求登錄了。

現(xiàn)在我們已經(jīng)完成了 請(qǐng)求登錄接口獲取 token,并設(shè)置到 請(qǐng)求頭中的功能,然后我們?cè)侔汛?公共腳本 應(yīng)用到 新聞列表的接口上,實(shí)現(xiàn)在 請(qǐng)求新聞列表接口 前自動(dòng)完成 “登錄”。

后臺(tái)有很多接口訪問都需要登錄,如果一個(gè)個(gè)地去設(shè)置 前置腳本 就太麻煩了,所以這里我們直接在 admin 后端接口的分組目錄上設(shè)置?前置操作?公共腳本admin: login and Auth,這樣整個(gè) admin 下的全部接口都能自動(dòng)登錄了:

我們來驗(yàn)證一下:

可以看到返回了數(shù)據(jù),說明自動(dòng)登錄成功了,我們?cè)?控制臺(tái)輸出 中可以看到請(qǐng)求了登錄接口,在實(shí)際請(qǐng)求中 可以看到?AdminToken: token?頭。

在這個(gè)例子中我們是將 用于后臺(tái)登錄的?用戶名?和?密碼?提前配置到了 環(huán)境變量中,然后利用腳本?pm.sendRequest?請(qǐng)求登錄接口獲取 token,并設(shè)置 請(qǐng)求頭,這樣就實(shí)現(xiàn)了接口的自動(dòng)登錄。

關(guān)于變量的優(yōu)先級(jí) 和 腳本的執(zhí)行時(shí)機(jī),如圖所示:

3. 接口自動(dòng)加簽

知識(shí)點(diǎn):參數(shù)注入、內(nèi)置類庫(kù)

有一些對(duì)安全性要求較高的接口可能會(huì)有對(duì)接口請(qǐng)求進(jìn)行驗(yàn)簽的機(jī)制,具體是 接口請(qǐng)求的數(shù)據(jù) 會(huì)額外多一個(gè)?sign?字段,它的值是可以是?md5(k1=v1&k2=v2...),這樣就確保了請(qǐng)求數(shù)據(jù)不會(huì)被篡改,但是這給我們測(cè)試帶來了麻煩,我們?nèi)绾蚊看巫詣?dòng)生成?sign?參數(shù)呢,不用擔(dān)心,這對(duì) Apifox 來說不在話下,利用 Apifox 強(qiáng)大的腳本功能我們甚至能夠調(diào)用外部任何語言的腳本。

知道了請(qǐng)求加簽的原理,那么實(shí)現(xiàn)就很容易了,無非是 在請(qǐng)求前 自動(dòng)算出?sign?,并注入到請(qǐng)求參數(shù)中去,下面是偽代碼:

完整的代碼見 「公共腳本」parkinglot:client: request sign and common params

然后 把 自動(dòng)加簽的公共腳本設(shè)置到?client 停車場(chǎng)設(shè)備端 ???分組 的前置腳本中,這樣其下所有接口請(qǐng)求時(shí)都有?sign?參數(shù)了。

注:這里簡(jiǎn)化了簽名算法,?md5(k1=v1&k2=v2..., key)?其實(shí)簽名算法還有一個(gè)關(guān)鍵的?key參數(shù) ,不過刪減這部分內(nèi)容并不影響我們這里對(duì)接口自動(dòng)加簽的講解。為了力求簡(jiǎn)潔,只關(guān)注最核心的東西,文章都是使用偽代碼的形式,完整代碼請(qǐng)讀者自行查看項(xiàng)目中的公共腳本。

4. 測(cè)試用例

知識(shí)點(diǎn):接口用例(順序)、流程控制(條件、循環(huán)、等待)、測(cè)試數(shù)據(jù)、斷言

在掌握了 Apifox 的強(qiáng)大腳本能力后,你幾乎能夠解決任何鑒權(quán)、加簽等問題了,接下來我們開始搭建完整的測(cè)試流程,以便真實(shí)完整的模擬正常使用時(shí)的業(yè)務(wù)測(cè)試場(chǎng)景。

我假定你已經(jīng)熟悉 Apifox 中 接口用例、環(huán)境變量、變量提取、斷言 等基礎(chǔ)概念,如果不熟悉,那建議你先快速地看一下官方文檔 :Apifox 幫助文檔。

我們先看一個(gè)簡(jiǎn)單的場(chǎng)景測(cè)試:

我們運(yùn)行測(cè)試看一下:

我們?cè)诤笈_(tái)看一下新聞分類和新聞確實(shí)創(chuàng)建成功了。

再看看一個(gè)稍微復(fù)雜一點(diǎn)的測(cè)試場(chǎng)景,一個(gè)異步任務(wù)處理的場(chǎng)景測(cè)試:

相信看到這里已經(jīng)不需要我解釋什么了,如你所見,Apifox 的測(cè)試用例的流程編排功能非常強(qiáng)大,你能 DIY 出任何復(fù)雜的場(chǎng)景。更多用法見文檔:測(cè)試流程控制 | Apifox 幫助文檔

5. Apifox CLI

知識(shí)點(diǎn):命令行

如果每次測(cè)試都需要我們手動(dòng)點(diǎn)擊 運(yùn)行按鈕 就太不方便了,沒錯(cuò),Apifox 當(dāng)然也考慮到了這點(diǎn),Apifox CLI 就可以幫助我們實(shí)現(xiàn)自動(dòng)化的測(cè)試。

點(diǎn)擊持續(xù)集成的按鈕就能夠生成 命令行代碼:

將這行 shell 命令復(fù)制到任意地方執(zhí)行即可實(shí)時(shí)運(yùn)行測(cè)試用例/套件。

6. 持續(xù)集成

知識(shí)點(diǎn):自動(dòng)化測(cè)試

我們先在服務(wù)器上安裝?apifox-cli

然后在發(fā)布工具中集成 測(cè)試命令即可:

為了通用性,我們使用 php 腳本 將?apifox run ...?命令進(jìn)行了封裝,你理解成執(zhí)行的是?apifox run ...?? 命令即可。

這里我們用的是 Spug 發(fā)布工具,類似 Jenkins,請(qǐng)根據(jù)實(shí)際情況配置。

7. 測(cè)試報(bào)告

知識(shí)點(diǎn):報(bào)告解析、釘釘通知

我們?cè)?Apifox.php?腳本執(zhí)行測(cè)試命令,并解析測(cè)試生成的 json 文件,然后將結(jié)果拼裝發(fā)送到釘釘群,如果有失敗會(huì) at 相應(yīng)的開發(fā)人員:

8. 附錄

上面提到的公共腳本、測(cè)試套件等都打包放在這里了:百度網(wǎng)盤,需要的話可以拿去參考,強(qiáng)烈建議直接打開項(xiàng)目查看功能腳本,測(cè)試用例進(jìn)行參考學(xué)習(xí)。

作者:xika


Apifox:API 接口自動(dòng)化測(cè)試完全指南的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
禄丰县| 东城区| 井研县| 营口市| 德惠市| 庆安县| 满城县| 东丰县| 呼和浩特市| 石泉县| 石渠县| 那坡县| 红原县| 崇阳县| 青浦区| 通许县| 霍林郭勒市| 治多县| 贵阳市| 荆门市| 珲春市| 温州市| 航空| 巴中市| 通许县| 通江县| 贡山| 衡山县| 馆陶县| 扶风县| 宁德市| 奉贤区| 乐安县| 濉溪县| 永年县| 林西县| 汝南县| 永德县| 临西县| 台南县| 依安县|