chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

如何通過ApiFox來構(gòu)建 API 場景測試

Android編程精選 ? 來源:Android編程精選 ? 作者:Android編程精選 ? 2022-09-01 10:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

目錄

簡介

Postman 遷移至 ApiFox

結(jié)構(gòu)對比

變量控制

ApiFox 導(dǎo)入 Postman

ApiFox 展示 API 調(diào)用場景

請求的后置腳本

增加斷言驗證 API

使用測試執(zhí)行場景 API 序列

總結(jié)

簡介

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

若干 API 的調(diào)用順序是有要求的

若干 API 的輸入和輸出是相互關(guān)聯(lián)的

若干 API 需要重復(fù)調(diào)用達到不同的效果

舉了具體的例子, 某后端小伙伴X和前端小伙伴Y合作開發(fā)一款游戲, X 設(shè)計好 API 然后 Y 來調(diào)用實現(xiàn):

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

過了幾天來了一個新的前端開發(fā) Z:

Z: 如何觸發(fā)這個游戲邏輯啊X: ...

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

本文主要介紹兩方面內(nèi)容:

如何從 Postman 遷移至 ApiFox

如何使用 ApiFox 實現(xiàn)展示后臺 API 的調(diào)用場景

在介紹第二個方面內(nèi)容時,盡可能介紹 Postman 對應(yīng)的功能名稱,從而給那些熟悉 Postman 的開發(fā)者以參考.

Postman 遷移至 ApiFox

結(jié)構(gòu)對比

首先我們先了解一下 Postman 和 ApiFox 的管理控制結(jié)構(gòu),

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

變量控制

兩者類似:

支持全局變量

支持環(huán)境變量及切換

73ef9450-2922-11ed-ba43-dac502259ad0.png73fe0d00-2922-11ed-ba43-dac502259ad0.png

ApiFox 導(dǎo)入 Postman

通過上面的管理控制結(jié)構(gòu),我們可以明確知道,我們只需要將對應(yīng)的 Postman 的 Collection 導(dǎo)入 ApiFox 的 Project 中即可.

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

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

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

導(dǎo)入完成后兩者對比,可以發(fā)現(xiàn) Postman 的 Collection 映射到 Project 的 Root Folder 之后的結(jié)構(gòu)完全是相同的:

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

這里唯一美中不足的是, 目前無法導(dǎo)入環(huán)境變量, 應(yīng)該還在開發(fā)中.

關(guān)于 Script 的導(dǎo)入

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

舉個例子:

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

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

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

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

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

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

ApiFox 展示 API 調(diào)用場景

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

無限級別目錄

動態(tài)更新環(huán)境變量

每個請求支持 pre-processer 和 post-processer 來處理返回數(shù)據(jù),理論上支持任何操作

測試用例支持添加某個目錄來執(zhí)行

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

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

ApiFox 提供了比 Postman 更加強大的腳本系統(tǒng),除了 Javascript,還支持其他語言的調(diào)用.

請求的后置腳本

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

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

Game_init: 初始化用戶數(shù)據(jù)

Game_round: 游戲的玩法很簡單,玩家只需要點擊一個按鈕來進行抽獎,抽獎的結(jié)果是隨機的,并且可能觸發(fā)特殊游戲: 比如更換更高級的獎品. API 本身支持調(diào)試,就是通過輸入?yún)?shù)來返回特定的抽獎結(jié)果.

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

調(diào)用 Game_init 一次

調(diào)用 Game_round 多次,直到游戲結(jié)束

所以游戲場景的 API 結(jié)構(gòu)如下圖:

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

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

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

輸入:

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

輸出

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

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

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

這段代碼有兩個關(guān)鍵點:

將 API 的返回結(jié)果解析為 JSON 數(shù)據(jù): pm.response.json()

將 JSON 數(shù)據(jù)中的 player 信息出處到環(huán)境變量中,并且命名為 playerData: pm.environment.set('playerData',JSON.stringify(jsonData.player))

完成這腳本后,我們可以執(zhí)行這個 Request,然后查看我們的環(huán)境變量信息,playerData 動態(tài)添加進來:

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 后,更新 playerData 和 betContextData. 同時我們還發(fā)現(xiàn),該請求的輸入數(shù)據(jù)同樣使用了環(huán)境變量 playerData 和 betContextData,從而多次調(diào)用 Game_round API 后,玩家數(shù)據(jù)和游戲數(shù)據(jù)是不斷進行更新的.

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))
});

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

GameInit游戲初始化

Round1進入特殊游戲

Round2特殊游戲獎勵

增加斷言驗證 API

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

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

"cheat":{
"cheatId":1
}

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

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

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

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

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

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

使用測試執(zhí)行場景 API 序列

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

首先創(chuàng)建一個新的 Test Case

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

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

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

最后執(zhí)行 Run,可以看到最后返回的結(jié)果

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

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

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

75564280-2922-11ed-ba43-dac502259ad0.png

apifoxrunhttps://api.apifox.cn/api/v1/api-test/ci-config/349571/detail?token=xxxx-rhtml,cli

總結(jié)

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

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

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7347

    瀏覽量

    94998
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    2466

    瀏覽量

    66988
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    4323

    瀏覽量

    46424
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

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

    API行業(yè)芯事經(jīng)驗分享
    小凡
    發(fā)布于 :2022年09月07日 22:19:45

    阿里云啟動API創(chuàng)新大賽 設(shè)視頻技術(shù)為場景賽題

    、數(shù)據(jù), 而是將API 作為云時代的紅細胞,邀請廣大參賽者通過API串聯(lián)產(chǎn)品和服務(wù),做自己的應(yīng)用創(chuàng)新。阿里云API大賽一直以踐行
    發(fā)表于 01-09 16:42

    高階API構(gòu)建模型和數(shù)據(jù)集使用

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

    AD9446的采樣信號,應(yīng)該通過什么構(gòu)建?

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

    如何使用WisePlay DRM API構(gòu)建DRM應(yīng)用

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

    使用Postman成功實現(xiàn)API測試自動化的最佳實踐

      API 測試自動化支持兩個獨立軟件系統(tǒng)之間的通信和數(shù)據(jù)交換。實現(xiàn) API 的軟件系統(tǒng)包含可由另一個軟件系統(tǒng)執(zhí)行的功能/子例程。它通過增加測試
    的頭像 發(fā)表于 06-20 10:19 ?1635次閱讀

    使用Postman成功實現(xiàn)API測試自動化的最佳實踐

      API 測試自動化支持兩個獨立軟件系統(tǒng)之間的通信和數(shù)據(jù)交換。實現(xiàn) API 的軟件系統(tǒng)包含可由另一個軟件系統(tǒng)執(zhí)行的功能/子例程。它通過增加測試
    的頭像 發(fā)表于 07-05 10:46 ?1561次閱讀

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

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

    如何通過ApiFox構(gòu)建API場景測試

    在開發(fā)前后臺分離項目并且通過不同團隊實現(xiàn)的時候,如何將后臺設(shè)計的 API 準確的傳達到前臺,是一個非常重要的工作。為了簡化這個過程,開源社區(qū)做了很多努力,比如 protobuf技術(shù),swagger
    的頭像 發(fā)表于 09-01 10:48 ?2453次閱讀

    Katalon:API測試

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

    數(shù)字孿生場景構(gòu)建行業(yè)應(yīng)用和優(yōu)勢

    ,古河云科技今天就來給大家聊一聊數(shù)字孿生場景構(gòu)建行業(yè)應(yīng)用和優(yōu)勢。 數(shù)字孿生場景構(gòu)建的行業(yè)應(yīng)用 1.制造業(yè): - 數(shù)字孿生可用于監(jiān)測設(shè)備運行狀態(tài)、預(yù)測設(shè)備故障,并優(yōu)化生產(chǎn)過程。 -
    的頭像 發(fā)表于 06-11 14:26 ?1249次閱讀
    數(shù)字孿生<b class='flag-5'>場景</b><b class='flag-5'>構(gòu)建</b>行業(yè)應(yīng)用和優(yōu)勢

    設(shè)計優(yōu)先方法論實踐:SmartBear API Hub +ReadyAPI組合使用,構(gòu)建高效的API開發(fā)流

    設(shè)計優(yōu)先是一種在編寫代碼和執(zhí)行測試之前,優(yōu)先設(shè)計API接口的開發(fā)方式,能夠幫助提升團隊協(xié)作效率、加快開發(fā)進度、減少Bug和返工,并改善用戶體驗。如何實現(xiàn)?——將該與SmartBear API Hub、ReadyAPI相結(jié)合,可共
    的頭像 發(fā)表于 06-05 16:03 ?640次閱讀
    設(shè)計優(yōu)先方法論實踐:SmartBear <b class='flag-5'>API</b> Hub +ReadyAPI組合使用,<b class='flag-5'>構(gòu)建</b>高效的<b class='flag-5'>API</b>開發(fā)流

    RESTful API設(shè)計原則: 構(gòu)建易用、可擴展的API接口

    (Representational State Transfer)架構(gòu)原則,構(gòu)建易用、可擴展的API接口,幫助開發(fā)者創(chuàng)建經(jīng)得起時間考驗的服務(wù)。 一、理解REST架構(gòu)的核心約束 1.1 RESTful API的六大
    的頭像 發(fā)表于 10-20 13:45 ?1432次閱讀

    小紅書API接口的應(yīng)用場景介紹

    ? 從技術(shù)角度,API(Application Programming Interface)是應(yīng)用程序之間的接口,允許開發(fā)者通過編程方式訪問平臺的數(shù)據(jù)和服務(wù)。小紅書作為一款以生活方式、購物分享為核心
    的頭像 發(fā)表于 11-04 15:03 ?538次閱讀
    小紅書<b class='flag-5'>API</b>接口的應(yīng)用<b class='flag-5'>場景</b>介紹

    淘寶平臺 API 的功能及應(yīng)用場景

    ? ?淘寶作為國內(nèi)領(lǐng)先的電商平臺,其開放平臺提供了豐富多樣的 API 接口,為開發(fā)者、商家和服務(wù)商提供了強大的工具,用于構(gòu)建應(yīng)用、集成系統(tǒng)和優(yōu)化業(yè)務(wù)流程。這些 API 覆蓋了從商品管理、訂單處理
    的頭像 發(fā)表于 11-24 15:23 ?520次閱讀
    淘寶平臺 <b class='flag-5'>API</b> 的功能及應(yīng)用<b class='flag-5'>場景</b>