如何輕松實(shí)現(xiàn)用戶充值系統(tǒng)的API自動化測試

在現(xiàn)代軟件開發(fā)中,API(應(yīng)用程序編程接口)作為連接不同系統(tǒng)和模塊的關(guān)鍵組件,其重要性日益凸顯。隨著軟件應(yīng)用的互聯(lián)性不斷增強(qiáng),API的數(shù)量和復(fù)雜度也在不斷增加。傳統(tǒng)的API測試方法面臨著諸多挑戰(zhàn):

1.手動測試效率低下:手動測試API接口耗時耗力,難以覆蓋所有可能的測試場景,容易遺漏潛在的缺陷。

2.數(shù)據(jù)一致性問題:研發(fā)和測試人員使用不同的數(shù)據(jù)源進(jìn)行操作,容易導(dǎo)致數(shù)據(jù)不一致,影響測試結(jié)果的準(zhǔn)確性。

3.測試覆蓋率不足:手動測試難以實(shí)現(xiàn)對大量API的全面測試,導(dǎo)致測試覆蓋率不足,無法充分驗證API的穩(wěn)定性和可靠性。

4.難以融入自動化工作流:傳統(tǒng)的測試工具難以與持續(xù)集成/持續(xù)部署(CI/CD)自動化工作流無縫對接,無法實(shí)現(xiàn)自動化的回歸測試。

一、Apipost自動化測試概況

使用Apipost可視化的API自動化測試功能,研發(fā)人員API管理里設(shè)計、調(diào)試、維護(hù)接口文檔;測試人員無需編寫代碼,在「自動化測試」創(chuàng)建自動化測試腳本時可以直接導(dǎo)入接口,與研發(fā)人員基于同一數(shù)據(jù)源進(jìn)行自動化測試,且能生成功能全面清晰的測試報告。

導(dǎo)入后可以在接口編輯頁面選擇雙向同步或手動同步數(shù)據(jù)。

勾選雙向同步后無論在自動化測試還是API管理中修改接口另一方都會自動同步修改內(nèi)容;如不勾選,在API管理中修改后需要手動獲取最新數(shù)據(jù)。

1、控制器

Apipost提供了多種控制器用以覆蓋多種測試場景:

條件控制器:可以配置條件決定是否調(diào)用接口;

事務(wù)控制器:適用于需要使用測試數(shù)據(jù)的某個接口;

次數(shù)控制器:適用于場景中需要多次調(diào)用的接口;

forEach控制器:適用于循環(huán)獲取某個接口中的變量值的場景;

while循環(huán)控制器:循環(huán)調(diào)用某個接口直至達(dá)到設(shè)置的條件;

等待控制器:為步驟之間添加睡眠時間。

2、核心優(yōu)勢

零代碼:拖拽式編排,對新手友好;

全場景覆蓋:接口測試、性能壓測、數(shù)據(jù)驅(qū)動一應(yīng)俱全;

CI/CD集成一鍵生成CLI命令,無縫對接Jenkins、GitLab!

二、快速上手

1、新建測試用例

打開Apipost,點(diǎn)擊「新建」,給測試任務(wù)起個名字,如「用戶登錄接口測試」。

2、編排測試用例

在測試用例中,可以直接把接口拖拽進(jìn)來,比如:先添加「用戶登錄接口」,再添加「獲取用戶信息接口」

3、設(shè)置測試條件

測試環(huán)境:從下拉菜單中選擇你的測試環(huán)境(比如開發(fā)環(huán)境、預(yù)發(fā)布環(huán)境)。

執(zhí)行輪次:設(shè)置跑多少次測試,比如:跑5次驗證穩(wěn)定性。

間隔時長:每次測試之間隔多久,比如:設(shè)置為3秒。

4、生成測試報告

點(diǎn)擊「保存并執(zhí)行」,Apipost會自動生成一份詳細(xì)的測試報告,包括接口響應(yīng)時間、斷言結(jié)果、失敗原因等。

三、使用測試數(shù)據(jù)

(一)、測試數(shù)據(jù)的創(chuàng)建

1、上傳測試數(shù)據(jù)文件

打開 Apipost,進(jìn)入測試用例編輯頁面,點(diǎn)擊左側(cè)的「測試數(shù)據(jù)」

點(diǎn)擊「新建測試數(shù)據(jù)」,選擇「上傳文件」,支持CSV和?TXT?格式。

示例:準(zhǔn)備一個 CSV 文件,包含用戶登錄所需的`username`?和`password`字段。

username,password

test01@apipost.cn,123456

test02@apipost.cn,789012

上傳后,Apipost 會自動解析文件內(nèi)容,可以在右側(cè)預(yù)覽數(shù)據(jù)。

2、環(huán)境隔離:不同環(huán)境不同數(shù)據(jù)

在 Apipost 中,支持為每個環(huán)境單獨(dú)配置測試數(shù)據(jù)。例如:

開發(fā)環(huán)境使用?`local_users.csv`。

生產(chǎn)環(huán)境使用?`prod_users.csv`。

切換環(huán)境時,系統(tǒng)會自動識別對應(yīng)環(huán)境的測試數(shù)據(jù)。

(二)、測試數(shù)據(jù)的使用

1、參數(shù)化接口請求

編輯接口時,將請求參數(shù)設(shè)置為變量,例如`{{username}}`和`{{password}}`。

在測試條件中選擇剛創(chuàng)建的測試數(shù)據(jù),Apipost 會自動將數(shù)據(jù)填充到接口中。

2、循環(huán)控制器與測試數(shù)據(jù)的結(jié)合

添加「循環(huán)控制器」,選擇「完成所有測試數(shù)據(jù)的迭代」模式。

設(shè)置循環(huán)間隔為 1 秒,確保每次請求之間有足夠的時間。

在循環(huán)體內(nèi)調(diào)用接口,使用`{{username}}`和`{{password}}`引用數(shù)據(jù)。

3、動態(tài)數(shù)據(jù)提取與再利用

如果接口返回的數(shù)據(jù)是數(shù)組格式(如用戶列表),可以通過 JSONPath

{

"code":200,

"success":true,

"msg":"Data generated successfully",

"timestamp":"2023-09-20T14:30:00Z",

"data":[

{?

"id":"e3f5a7b1-9c2d-4f8a-b6c0-1d8e9f2a7b3c",

"username":"alice_m2023",

"password":"Tp9@xQvL!",? ?

"created_at":"2023-09-20T14:00:00Z"

},

{? ?

"id":"a2b4c6d8-e0f1-4a3b-9c5d-7e9f1a2b3c4d",? ?

"username":"maxwell_7",? ?

"password":"8nG#r2sKd",?

"created_at":"2023-09-20T14:05:00Z"

},

{? ?

"id":"5d7f9a1b-3c8e-4a2d-9b0f-6e1a3b5c7d9e",? ?

"username":"zara.frost",?

"password":"qW6$bY9pA",?

"created_at":"2023-09-20T14:10:00Z"

},

{

? "id":"8e1a3b5c-7d9e-4f2a-b6c0-9d8e7f1a2b3c",? ?

"username":"t_robot92",? ?

"password":"Lm3^cF8zN",? ?

"created_at":"2023-09-20T14:15:00Z"

},

{? ?

"id":"1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",? ?

"username":"kira_nexus",? ?

"password":"R@4vP7hXy",? ?

"created_at":"2023-09-20T14:20:00Z"

}

]

}

使用`$.data`提取數(shù)組。

然后在后續(xù)接口中通過使用`{{username}}`和`?{{password}}`引用數(shù)據(jù)。

四、性能測試

Apipost的性能測試功能能幫我們快速定位。

(一)、固定模式壓測

設(shè)置并發(fā)數(shù)為100,模擬100個用戶同時登錄。

查看壓測報告中的「平均響應(yīng)時間」「失敗率」,判斷接口是否能扛住高并發(fā)。

(二)、爬坡模式壓測

從10個并發(fā)開始,逐步增加到100個并發(fā),觀察接口性能的變化趨勢。

如果響應(yīng)時間突然飆升,說明接口在某個并發(fā)點(diǎn)出現(xiàn)了性能問題。

五.CI/CD:從安裝到集成

(一)、Apipost CLI工具

1、安裝 CLI工具

打開終端,運(yùn)行以下命令安裝 Apipost CLI:

npm install -g apipost-cli-pro

如果你之前安裝過舊版本的 Apipost-cli,請先卸載:

npm uninstall -g apipost-cli

2、生成CICD命令

進(jìn)入測試用例頁面。

點(diǎn)擊「持續(xù)集成」,新建--Apipost Cli,系統(tǒng)會自動生成一個唯一的運(yùn)行鏈接和 Token。

復(fù)制生成的命令,例如:

apipost run

"https://open.apipost.net/open/ci/automated_testing?ci_id=xxx&token=xxx"

-r html

(二)、集成到CI/CD 流程

1、Jenkins集成

在 Jenkins 項目配置中,添加一個新的「執(zhí)行 shell」步驟。

粘貼剛才生成的 CI/CD 命令,確保在代碼提交后自動觸發(fā)測試。

示例配置:

pipeline {? ?

agent any? ?

tools {nodejs "node16.14"} //替換替換服務(wù)器支持的node版本。node版本>16? ?

stages {? ? ?

stage('Install Apipost CLI') {? ? ? ?

steps {? ? ? ? ?

sh 'npm install -g apipost-cli'

? ? ? }? ?

}? ? ?

stage('Running Test Scenario') {? ? ? ?

steps {? ? ? ? ?

sh 'apipost run "https://open.apipost.net/open/ci/automated_testing?ci_id=xxx&token=xxx" -r html'

? ? ? ? }?

? }?

? }?

}

2、GitHub Actions集成

在項目根目錄下創(chuàng)建`.github/workflows/test.yml`文件。

添加以下內(nèi)容:

name: Automated API Tests

on: [push, pull_request]

jobs:build:? runs-on: ubuntu-latest

? steps:

- uses: actions/checkout@v3

? - name: Setup Node.js environment

? uses: actions/setup-node@v2

? with:? ? ? node-version: '14'

? - name: Install Apipost CLI

? run: npm install -g apipost-cli

? - name: Running Test Scenario

? run: apipost run "https://open.apipost.net/open/ci/automated_testing?ci_id=xxx&token=xxx" -r html

六.實(shí)戰(zhàn):用戶充值系統(tǒng)查詢的API自動化測試

場景描述

假設(shè)我們有一個用戶管理系統(tǒng),包含以下四個接口:

1. 用戶注冊接口:允許新用戶注冊。

2. 用戶登錄接口:驗證用戶憑據(jù)并返回認(rèn)證token。

3. 用戶充值接口:允許用戶為賬戶充值。

4. 查詢賬戶信息接口:查詢用戶的賬戶余額和充值歷史。

我們將使用Apipost對這些接口進(jìn)行自動化測試,確保系統(tǒng)的穩(wěn)定性和可靠性。

自動化測試流程設(shè)計

(一)、創(chuàng)建測試用例

打開Apipost,點(diǎn)擊「新建測試用例」,給測試任務(wù)起個名字,比如「用戶完整流程測試」

(二)、添加接口并編排順序

按照以下順序?qū)⒔涌谕献У綔y試用例中:

1. 用戶注冊接口;

2. 用戶登錄接口;

3. 用戶充值接口;

4. 查詢賬戶信息接口。

(三)、設(shè)置請求參數(shù)和動態(tài)數(shù)據(jù)提取

1、用戶注冊接口:

請求參數(shù):

{?

"username": "test_user",

"email": "test_user_@example.com",?

"password": "Test@123"

}

斷言:

響應(yīng)狀態(tài)碼為200。

響應(yīng)體中包含"status": "success"。

提取userId并存儲為全局變量.

2、用戶登錄接口

請求參數(shù):

{?

"username": "test_user",?

"password": "Test@123"

}

斷言:

響應(yīng)狀態(tài)碼為200。

響應(yīng)體中包含"token"字段。

提取token并存儲為全局變量。

3、用戶充值接口:

請求頭:

Authorization: Bearer {{token}}

請求參數(shù):

{

"userId": "{{userId}}",

"amount": 100.00,

"currency": "CNY"

}

斷言:

響應(yīng)狀態(tài)碼為200。

響應(yīng)體中包含"transactionId"字段。

4、查詢賬戶信息接口:

請求頭:

Authorization: Bearer {{token}}

查詢參數(shù)

userId={{userId}}

斷言:

響應(yīng)狀態(tài)碼為200。

充值金額是否為100。

4、設(shè)置測試條件

測試環(huán)境:選擇你的測試環(huán)境(如開發(fā)環(huán)境)。

執(zhí)行輪次:設(shè)置為1次(完整流程測試)。

間隔時長:設(shè)置為2秒(確保接口響應(yīng)穩(wěn)定)。

5、生成測試報告

點(diǎn)擊「保存并執(zhí)行」,Apipost會自動生成一份詳細(xì)的測試報告,包括接口響應(yīng)時間、斷言結(jié)果、失敗原因等。

動態(tài)數(shù)據(jù)提取與再利用

在測試過程中,我們使用了動態(tài)數(shù)據(jù)提取功能,將注冊接口返回的`userId`和登錄接口返回的`token`存儲為全局變量,并在后續(xù)接口中引用這些變量。這種方式不僅減少了重復(fù)輸入數(shù)據(jù)的工作量,還確保了測試數(shù)據(jù)的一致性和準(zhǔn)確性。

性能測試

為了驗證接口在高并發(fā)場景下的性能,我們可以在登錄接口上進(jìn)行性能測試:

1.?固定模式壓測:設(shè)置并發(fā)數(shù)為100,模擬100個用戶同時登錄。

2.?爬坡模式壓測:從10個并發(fā)開始,逐步增加到100個并發(fā),觀察接口性能的變化趨勢。

CI/CD集成

將測試用例集成到CI/CD流程中,確保每次代碼提交后自動觸發(fā)測試:

1.?Jenkins集成:在Jenkins項目配置中,添加執(zhí)行shell步驟,粘貼Apipost生成的CI/CD命令。

2.?GitHub Actions集成:在項目根目錄下創(chuàng)建.github/workflows/test.yml文件,添加安裝Apipost CLI和運(yùn)行測試命令的步驟。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容