精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何通過ApiFox來構建API場景測試

Android編程精選 ? 來源:Android編程精選 ? 作者:Android編程精選 ? 2022-09-01 10:48 ? 次閱讀

目錄

  • 簡介

  • Postman 遷移至 ApiFox

    • 結構對比

    • 變量控制

    • ApiFox 導入 Postman

  • ApiFox 展示 API 調用場景

    • 請求的后置腳本

    • 增加斷言驗證 API

    • 使用測試執行場景 API 序列

  • 總結

簡介

在開發前后臺分離項目并且通過不同團隊來實現的時候,如何將后臺設計的 API 準確的傳達到前臺,是一個非常重要的工作。為了簡化這個過程,開源社區做了很多努力,比如 protobuf技術,swagger 的誕生, 以及后面 openapi 的演化,都在試圖解決 API 描述和文檔的問題。這些標準某些程度上大大簡化了 API 文檔的撰寫和維護,但是API設計往往比較復雜,所以另外還有一些痛點沒有解決:

  1. 若干 API 的調用順序是有要求的
  2. 若干 API 的輸入和輸出是相互關聯的
  3. 若干 API 需要重復調用達到不同的效果

舉了具體的例子, 某后端小伙伴X和前端小伙伴Y合作開發一款游戲, X 設計好 API 然后 Y 來調用實現:

Y: API1 根本調用不成功, 得不到我想要的數據?X: balabala 介紹了一遍. (X 默默地完善了文檔)Y: 如何觸發這個游戲邏輯啊?X: 可以參考我的文檔 (自信的說)Y: 這個文檔根本看不懂啊, 還是給我舉個例子吧?X: ... balabala 溝通半天

過了幾天來了一個新的前端開發 Z:

Z: 如何觸發這個游戲邏輯啊X: ...

有時候我們會發現很多時候 API 文檔不足以完成前后端 API 設計的交流, 更多的時間用在相互溝通中. API 管理平臺的誕生,可以說解決了這些痛點. 說起 API 管理平臺首先最成功的的要數 Postman 了,筆者是 Postman 早期用戶,基本使用了大部分的高級功能,近幾年開始推廣 Team 概念. ApiFox 作為中國的一體化 API 協作平臺,從一開始就定位于團隊協作,可以說目標十分明確. 目前在嘗試從 Postman 遷移至 ApiFox,發現過程非常流暢,涵蓋了所有目前我們使用功能.

本文主要介紹兩方面內容:

  1. 如何從 Postman 遷移至 ApiFox
  2. 如何使用 ApiFox 實現展示后臺 API 的調用場景

在介紹第二個方面內容時,盡可能介紹 Postman 對應的功能名稱,從而給那些熟悉 Postman 的開發者以參考.

Postman 遷移至 ApiFox

結構對比

首先我們先了解一下 Postman 和 ApiFox 的管理控制結構,

Postman: Team → Workspace → Collections → Any Level Folders → Request

73d2d96e-2922-11ed-ba43-dac502259ad0.png

ApiFox: Team → Project → Any Level Folders → Request

73e768ca-2922-11ed-ba43-dac502259ad0.png

變量控制

兩者類似:

  1. 支持全局變量
  2. 支持環境變量及切換
73ef9450-2922-11ed-ba43-dac502259ad0.png73fe0d00-2922-11ed-ba43-dac502259ad0.png

ApiFox 導入 Postman

通過上面的管理控制結構,我們可以明確知道,我們只需要將對應的 Postman 的 Collection 導入 ApiFox 的 Project 中即可.

7421ff08-2922-11ed-ba43-dac502259ad0.png74301ee4-2922-11ed-ba43-dac502259ad0.png

其中 ApiFox 提供了詳細的文檔介紹 Postman 的導出以及 ApiFox 導入. 通過測試,目前的 Postman 可以支持所有的數據映射,包含了 Postman 中的 Pre-req 和 test 腳本.

7447a29e-2922-11ed-ba43-dac502259ad0.png

導入完成后兩者對比,可以發現 Postman 的 Collection 映射到 Project 的 Root Folder 之后的結構完全是相同的:

74583b2c-2922-11ed-ba43-dac502259ad0.png

這里唯一美中不足的是, 目前無法導入環境變量, 應該還在開發中.

關于 Script 的導入

這里需要注意的一點是,在 Postman 中我們可以直接在 Request 上進行編輯 pre-req 和 test 來控制 Request 的 Response. 在導入后,ApiFox 把默認的數據創建出一個 API Case,這個 Case 包含了 Postman 的 script 數據.

舉個例子:

這是 Postman 中的一個 API,其中包含 Test script

746c684a-2922-11ed-ba43-dac502259ad0.png

在 ApiFox 中,Request 本身并沒有包含這個 Script

747b7038-2922-11ed-ba43-dac502259ad0.png

ApiFox 創建了一個默認的 Passed API Case,然后在這個 API Case 中加入了這個 Script

749cc652-2922-11ed-ba43-dac502259ad0.png

ApiFox 展示 API 調用場景

介紹完導入工作,下面就開始重點介紹使用 ApiFox 來模擬 API 使用場景. 實現這個目標是基于如下功能:

  1. 無限級別目錄
  2. 動態更新環境變量
  3. 每個請求支持 pre-processer 和 post-processer 來處理返回數據,理論上支持任何操作
  4. 測試用例支持添加某個目錄來執行

總的來說,通過 ApiFox 的腳本引擎,來模擬客戶端的一些操作,從而達到展示 API 使用場景的目的. 本文針對筆者目前使用經驗介紹若干腳本的使用方法,如果需要深入了解腳本系統,請參考官方文檔:

https://www.apifox.cn/help/app/scripts/

ApiFox 提供了比 Postman 更加強大的腳本系統,除了 Javascript,還支持其他語言的調用.

請求的后置腳本

下面我們通過一個簡單的游戲 API 案例來介紹以上功能的使用.

API 接口定義很簡單,只包含兩個 API

  1. Game_init: 初始化用戶數據
  2. Game_round: 游戲的玩法很簡單,玩家只需要點擊一個按鈕來進行抽獎,抽獎的結果是隨機的,并且可能觸發特殊游戲: 比如更換更高級的獎品. API 本身支持調試,就是通過輸入參數來返回特定的抽獎結果.

現在我們的目標就是模擬一次用戶開始抽獎并且觸發了特殊游戲獲取高級獎勵,并繼續抽獎最后獲取獎勵的游戲場景. 通過 API 的接口定義,我們可以看到 API 的調用邏輯應該是:

  1. 調用 Game_init 一次
  2. 調用 Game_round 多次,直到游戲結束

所以游戲場景的 API 結構如下圖:

74a7e28a-2922-11ed-ba43-dac502259ad0.png

我們使用 Scene1 來表示上述演示的調用場景. 下面我們開始對每個 API 的 Request 進行處理,從而達到模擬 API 連續調用.

Game_init API的輸入和輸出很簡單:

輸入:

{
"gameId":"{{fe}}""player":{
"isDummy":true
}
}

輸出

{
"player":{
"playerId":"Demo""name":"Demo""balance":"1000000""balanceRate":"100""currency":"FUN""isDummy":true
}
}

Game_init API 調用完成后,我們需要持續追蹤玩家數據的變化,所以這里我們需要將返回的用戶信息儲存在環境變量中,我們可以通過 Post-processors,添加一個 Custom Script 來實現:

pm.test("GetResponse"function(){
varjsonData=pm.response.json();
console.log(jsonData)
//weupdateplayerDataintheenvironment
pm.environment.set('playerData'JSON.stringify(jsonData.player))
});

這段代碼有兩個關鍵點:

  1. 將 API 的返回結果解析為 JSON 數據: pm.response.json()
  2. 將 JSON 數據中的 player 信息出處到環境變量中,并且命名為 playerData: pm.environment.set('playerData',JSON.stringify(jsonData.player))

完成這腳本后,我們可以執行這個 Request,然后查看我們的環境變量信息,playerData 動態添加進來:

74c9582a-2922-11ed-ba43-dac502259ad0.png

Game_round API的輸入輸出

輸入:

{
"gameId":"{{fe}}""cheat":{
"cheatId":1
},
"player":{{playerData}},
"betContext":{{betContextData}}
}

輸出

{
"player":{
"playerId":"Demo""name":"Demo""balance":"1015000""balanceRate":"100""currency":"FUN""isDummy":true
},
"betContext":{
"roundsAwarded":1"currentBetMode":"A""nextBetMode":"B"
},
"gameRoundResult":{}
}

我們在處理 Game_round API 的時候和 Game_init 類似,每次得到 Game Round 的返回的 JSON 后,更新 playerDatabetContextData. 同時我們還發現,該請求的輸入數據同樣使用了環境變量 playerDatabetContextData,從而多次調用 Game_round API 后,玩家數據和游戲數據是不斷進行更新的.

pm.test("GetResponse"function(){
varjsonData=pm.response.json();
console.log(jsonData)
//weupdateplayerDataandgamecontextintheenvironment
pm.environment.set('playerData'JSON.stringify(jsonData.player))
pm.environment.set('betContextData'JSON.stringify(jsonData.betContext))
});

通過這種方法在執行這 3 個 API的過程中,就可以查看用戶數據的變化以及每次游戲結果,從而幫助前端開發者理解和使用 API.

  1. GameInit游戲初始化
  2. Round1進入特殊游戲
  3. Round2特殊游戲獎勵

增加斷言驗證 API

我們在設計 API 使用場景的時候,可以同時對 API 進行測試. 在不同場景下 API 的返回可能是不同的,所以這里進行測試斷言可以更精確的定位問題.

比如我們上述的案例,第二個請求需要觸發用戶進入特殊的游戲模式,這里需要后臺 API 支持特殊的測試參數,通過這個參數可以跳過隨機結果直接獲取需要的結果.

"cheat":{
"cheatId":1
}

也就是說如果 Game_round 請求的輸入數據中包含如下數據,那么這個請求的數據一定是進入了特殊模式. 在這個案例中就是說,輸出的nextBetMode 一定是模式 SpeicalMode

"betContext":{
"roundsAwarded":1"currentBetMode":"A""nextBetMode":"SpeicalMode"
}

這時候我們就可以斷言: $.betContext.nextBetMode equl SpeicalMode

如果我們在執行 request 的時候斷言出錯,就會得到一個 Error,如下圖 (這里是故意配置錯誤的斷言結果)

74d3bacc-2922-11ed-ba43-dac502259ad0.png

在 Postman 中這個功能是通過 test 腳本來實現的, 比如 pm.expect(pm.response.json()).to.deep.include("xx");, ApiFox 提供的方式更加人性化.

使用測試執行場景 API 序列

目前我們上述場景構建的 3 個 API 是手動依次執行的,我們還可以創建一個 Test Case 可以一次性執行多個 API. (該功能在 Postman 中是在各級文件夾下的 Run 功能)

首先創建一個新的 Test Case

750df674-2922-11ed-ba43-dac502259ad0.png751a770a-2922-11ed-ba43-dac502259ad0.png

然后導入我們之前創建的一組 API Case, 注意這里選擇 API Case, 也就是帶有后置腳本的請求.

7528cc60-2922-11ed-ba43-dac502259ad0.png75373282-2922-11ed-ba43-dac502259ad0.png

最后執行 Run,可以看到最后返回的結果

7548468a-2922-11ed-ba43-dac502259ad0.png

通過這個功能, 后續如果 API 出現變更, 可以直接運行這個 Test Case 來進行回歸測試.

另外類似于 Postman 的 newman 命令行工具, ApiFox 也有自己的 CLI 工具, 通過 CLI 工具, 我們還可以使用我們自己的 CI/CD 系統自動執行這個 Test Case, 從而將 API 測試深入的融合到整個開發生命周期中.

75564280-2922-11ed-ba43-dac502259ad0.png
apifoxrunhttps://api.apifox.cn/api/v1/api-test/ci-config/349571/detail?token=xxxx-rhtml,cli

總結

這篇文章主要介紹如何通過 ApiFox 來構建 API 場景測試,通過后置腳本可以將多個 API 的輸入和輸出進行串聯,從而達到模擬客戶端行為的目的. 同時本文還對照了 Postman 的相應的功能,幫助熟悉 Postman 的開發者快速上手.

基于強大的腳本引擎, 使用前置和后置腳本理論上可以模擬所有客戶端的行為. 當然在進行API 測試和場景模擬設計的過程中, 并不需要太復雜的控制, 只需要對關鍵數據和場景相關的數據進行控制即可。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 測試
    +關注

    關注

    8

    文章

    4927

    瀏覽量

    125952
  • API
    API
    +關注

    關注

    2

    文章

    1461

    瀏覽量

    61492

原文標題:試用 ApiFox 模擬后臺 API 調用場景,感覺再也回不去了!

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    api測試工具體會分享,apipost、apifox、postman

    API行業芯事經驗分享
    小凡
    發布于 :2022年09月07日 22:19:45

    API】多pk分組&用戶場景&通用定時任務api已經發布

    多PK分組、用戶場景和通用定時任務接口已經發布。以上OPEN API 用戶/廠商 可免費使用。多PK分組:可讓用戶/廠商對不用產品的設備進行歸類管理。接口兼容原有的單PK分組,不同點在于創建多 pk
    發表于 08-31 13:08

    阿里云啟動API創新大賽 設視頻技術為場景賽題

    、數據, 而是將API 作為云時代的紅細胞,邀請廣大參賽者通過API串聯產品和服務,做自己的應用創新。阿里云API大賽一直以踐行
    發表于 01-09 16:42

    高階API構建模型和數據集使用

    圖,執行計算圖方法運行神經網絡,前文示例中也是先構建計算圖即構建神經網絡隱藏層和輸出層,再啟動會話執行計算圖。TensorFlow上線至今發行了幾個API版本,每更新一次版本時,
    發表于 11-04 07:49

    AD9446的采樣信號,應該通過什么構建

    我的ADC為AD9446,16Bit。現在想測試其采樣10MHz正弦信號的信噪比,但是我手頭只有Tektronix_AFG3252,其為14位分辨力,無法提供高精度的正弦信號。請問對于AD9446的采樣信號,應該通過什么
    發表于 12-15 07:10

    JavaScript API自動化測試方案的管理設計與實現

    Logcat并寫入,最終寫成方案并測試,在應用程序中,JavaScript API作為連接程序與web頁面的橋梁,擴展了內嵌web頁面的JavaScript的能力,為web應用帶來更好的體驗,、所以本文使用本方案,測試人員編寫了
    發表于 11-07 11:10 ?5次下載
    JavaScript <b class='flag-5'>API</b>自動化<b class='flag-5'>測試</b>方案的管理設計與實現

    如何使用WisePlay DRM API構建DRM應用

    介紹 WisePlay DRM demo展示了如何使用WisePlay DRM API構建你的DRM應用,主要提供了License獲取方面的代碼演示。WisePlay DRM提供了一種
    發表于 04-06 10:32 ?1次下載

    使用Postman成功實現API測試自動化的最佳實踐

      API 測試自動化支持兩個獨立軟件系統之間的通信和數據交換。實現 API 的軟件系統包含可由另一個軟件系統執行的功能/子例程。它通過增加測試
    的頭像 發表于 06-20 10:19 ?857次閱讀

    使用Postman成功實現API測試自動化的最佳實踐

      API 測試自動化支持兩個獨立軟件系統之間的通信和數據交換。實現 API 的軟件系統包含可由另一個軟件系統執行的功能/子例程。它通過增加測試
    的頭像 發表于 07-05 10:46 ?878次閱讀

    什么是API,不同場景中的API

    當公司構建他們的應用時,他們把它們設計成一組交互的API。最容易理解的例子是Lyft(或者Uber)。你可能想在Lyft應用中做一些事情,它們在幕后都會觸發不同的API
    的頭像 發表于 08-10 11:20 ?2032次閱讀

    如何通過ApiFox構建 API 場景測試

    這里需要注意的一點是,在 Postman 中我們可以直接在 Request 上進行編輯 pre-req 和 test 控制 Request 的 Response. 在導入后,ApiFox 把默認的數據創建出一個 API Cas
    的頭像 發表于 09-01 10:49 ?1356次閱讀

    Katalon:API測試

    API測試是一種直接測試API的軟件測試實踐——從功能、可靠性、性能到安全性,全部涵蓋。作為集成測試
    的頭像 發表于 04-18 09:55 ?850次閱讀

    API測試框架Grillon概述

    API測試框架Grillon概述
    的頭像 發表于 09-08 10:22 ?1912次閱讀

    數字孿生場景構建行業應用和優勢

    ,古河云科技今天就來給大家聊一聊數字孿生場景構建行業應用和優勢。 數字孿生場景構建的行業應用 1.制造業: - 數字孿生可用于監測設備運行狀態、預測設備故障,并優化生產過程。 -
    的頭像 發表于 06-11 14:26 ?238次閱讀
    數字孿生<b class='flag-5'>場景</b><b class='flag-5'>構建</b>行業應用和優勢

    如何在不同應用場景構建音頻測試環境

    在之前的文章中,我們已經詳細介紹了基礎音頻參數和AP525的軟硬件配置。本文將延續這一主題,以泰凌TLSR9518A EVB作為測試設備(DUT),向大家展示如何在不同應用場景構建音頻測試
    的頭像 發表于 07-03 15:00 ?269次閱讀
    如何在不同應用<b class='flag-5'>場景</b>下<b class='flag-5'>構建</b>音頻<b class='flag-5'>測試</b>環境