調(diào)試:qData 專業(yè)版數(shù)據(jù)服務(wù)新增在線接口測試能力)
在企業(yè)數(shù)據(jù)服務(wù)建設(shè)過程中API 創(chuàng)建通常只是接口生命周期中的一個(gè)開始。一條接口從開發(fā)完成到正式投入使用往往還需要經(jīng)歷多個(gè)階段接口配置→ 參數(shù)驗(yàn)證→ 鑒權(quán)調(diào)整→ 系統(tǒng)聯(lián)調(diào)→ 問題排查→ 修改驗(yàn)證→ 正式交付在實(shí)際開發(fā)過程中接口調(diào)試往往會(huì)占據(jù)較多時(shí)間。例如修改接口參數(shù)后需要重新驗(yàn)證返回結(jié)果調(diào)整鑒權(quán)配置后需要確認(rèn)接口是否仍然可訪問前端或第三方系統(tǒng)聯(lián)調(diào)時(shí)需要反復(fù)構(gòu)造不同請(qǐng)求接口異常時(shí)需要還原請(qǐng)求條件定位問題。這些操作看似簡單但如果接口管理和測試工具相互獨(dú)立就容易出現(xiàn)平臺(tái)負(fù)責(zé)創(chuàng)建 API外部工具負(fù)責(zé)調(diào)試 API。開發(fā)人員需要不斷在接口管理頁面、接口文檔和第三方測試工具之間切換。對(duì)于低頻接口測試來說這種方式影響并不明顯。但在企業(yè)數(shù)據(jù)服務(wù)場景中API 數(shù)量通常較多接口調(diào)整、驗(yàn)證和聯(lián)調(diào)會(huì)持續(xù)發(fā)生頻繁切換工具會(huì)增加開發(fā)和維護(hù)成本。因此qData 數(shù)據(jù)中臺(tái)專業(yè)版此次數(shù)據(jù)服務(wù)升級(jí)新增在線接口測試能力主要解決的是一個(gè)實(shí)際開發(fā)問題API 創(chuàng)建完成之后如何更方便地進(jìn)行驗(yàn)證、調(diào)試和問題定位此次升級(jí)并不是替代原有接口配置過程中的測試能力而是在 API 創(chuàng)建完成后進(jìn)一步提供一個(gè)獨(dú)立的接口調(diào)試入口。讓接口測試從配置階段的一次驗(yàn)證擴(kuò)展為接口生命周期中的持續(xù)調(diào)試過程。一、為什么選擇“在線接口測試”單獨(dú)寫一篇很多時(shí)候一個(gè)功能的重要性并不完全取決于它包含多少頁面或者多少配置項(xiàng)。更重要的是它處在整個(gè)工作鏈路中的什么位置。對(duì)于 API 來說“創(chuàng)建成功”和“正式交付”之間其實(shí)存在一段非常高頻的調(diào)試過程。一條接口配置完成以后開發(fā)人員通常還會(huì)繼續(xù)面對(duì)很多問題接口現(xiàn)在到底能不能正常調(diào)用參數(shù)改了以后結(jié)果有沒有變化請(qǐng)求頭或者鑒權(quán)調(diào)整之后接口還能不能通過前端或者第三方系統(tǒng)聯(lián)調(diào)時(shí)如何快速構(gòu)造不同請(qǐng)求接口出現(xiàn)異常以后怎樣重新構(gòu)造當(dāng)時(shí)的條件進(jìn)行復(fù)現(xiàn)如果這些動(dòng)作每次都需要從接口管理頁面復(fù)制 URL再進(jìn)入第三方接口工具重新填寫 Params、Body、Header 和鑒權(quán)信息那么 API 的創(chuàng)建、管理與調(diào)試實(shí)際上仍然被分散在多個(gè)工具之間。這會(huì)帶來一個(gè)很典型的問題平臺(tái)負(fù)責(zé)“建接口”外部工具負(fù)責(zé)“調(diào)接口”。對(duì)于偶爾測試一次的接口來說這種方式問題并不明顯。但對(duì)于需要持續(xù)聯(lián)調(diào)、頻繁修改和重復(fù)驗(yàn)證的企業(yè)數(shù)據(jù)服務(wù)來說工具之間不斷切換會(huì)逐漸增加操作和溝通成本。qData 此次新增獨(dú)立【接口測試】核心就是希望進(jìn)一步補(bǔ)上這一環(huán)。原來的能力繼續(xù)保留而新的能力進(jìn)一步面向 API 創(chuàng)建完成之后的持續(xù)調(diào)試過程。換句話說原來解決的是“API 配完以后馬上測一下”現(xiàn)在進(jìn)一步解決的是“API 建完以后還可以持續(xù)測、反復(fù)調(diào)、方便查”。二、原來 qData 是怎么測試 API 的在新增獨(dú)立【接口測試】之前qData 數(shù)據(jù)服務(wù)實(shí)際上已經(jīng)具備 API 驗(yàn)證能力。用戶在新增或修改 API 時(shí)會(huì)依次完成屬性配置 → 參數(shù)配置 → 測試進(jìn)入第三步以后可以填寫對(duì)應(yīng)的請(qǐng)求參數(shù)直接發(fā)起接口調(diào)用并查看接口返回?cái)?shù)據(jù)。這套機(jī)制主要用于確認(rèn)當(dāng)前 API 配置是否正確以及接口是否能夠正常返回。它解決的是一個(gè)非常明確的場景“我剛剛把這個(gè) API 配好現(xiàn)在先測一下它能不能正常調(diào)用?!币虼嗽瓉淼臏y試能力重點(diǎn)圍繞兩個(gè)動(dòng)作接口調(diào)用填寫參數(shù)并發(fā)起當(dāng)前 API 請(qǐng)求返回?cái)?shù)據(jù)查看本次調(diào)用的接口結(jié)果。對(duì)于 API 新增和修改過程來說這樣的即時(shí)驗(yàn)證非常必要。用戶剛剛完成接口配置就可以繼續(xù)完成測試不需要離開當(dāng)前流程。所以這次新增獨(dú)立【接口測試】并不是用新的功能去替代原來的第三步【測試】。兩者承擔(dān)的任務(wù)不同。原來的測試能力仍然保留繼續(xù)負(fù)責(zé)API 配置過程中的即時(shí)驗(yàn)證。新增的在線接口測試則進(jìn)一步負(fù)責(zé)API 創(chuàng)建完成之后的持續(xù)調(diào)試。這也是理解此次升級(jí)最關(guān)鍵的一點(diǎn)。三、為什么已經(jīng)有“接口調(diào)用”還要新增獨(dú)立接口測試因?yàn)椤澳軌蛘{(diào)用當(dāng)前 API”和“能夠持續(xù)調(diào)試已有 API”實(shí)際上是兩個(gè)層次的能力。原來的接口調(diào)用依附在 API 新增或修改流程中。它天然和“配置接口”這個(gè)動(dòng)作綁定在一起。當(dāng)用戶正在配置一條 API 時(shí)通過第三步測試可以很方便地確認(rèn)這條接口當(dāng)前是否可用。但實(shí)際項(xiàng)目中的 API 測試并不會(huì)在點(diǎn)擊“保存”之后結(jié)束。相反很多測試工作恰恰是在接口創(chuàng)建完成之后才開始大量發(fā)生。比如修改請(qǐng)求參數(shù)、調(diào)整請(qǐng)求頭、調(diào)整鑒權(quán)方式、開展多輪聯(lián)調(diào)、復(fù)現(xiàn)異常問題以及在修改后再次驗(yàn)證結(jié)果。第一次測試正常業(yè)務(wù)條件變化以后還需要再次驗(yàn)證不同參數(shù)下的結(jié)果。這些工作具有一個(gè)共同特點(diǎn)它們不是“配置 API”的動(dòng)作而是“使用和調(diào)試 API”的動(dòng)作。如果仍然讓用戶每次都重新進(jìn)入 API 新增/修改流程再找到測試步驟完成驗(yàn)證那么測試入口與實(shí)際使用場景就并不完全匹配。開發(fā)人員此時(shí)更需要的是一個(gè)獨(dú)立工作區(qū)于是一個(gè)完整的日常調(diào)試過程應(yīng)該更接近找到 API → 配置請(qǐng)求 → 發(fā)起調(diào)用 → 查看結(jié)果 → 調(diào)整內(nèi)容 → 再次測試而不是每次重新回到 API 配置流程。所以qData 此次新增獨(dú)立【接口測試】的核心變化并不是簡單地把原來的“接口調(diào)用”復(fù)制到另一個(gè)頁面。而是進(jìn)一步把接口測試從一個(gè)配置步驟變成一項(xiàng)可以被獨(dú)立、反復(fù)使用的調(diào)試能力。四、qData 這次具體是怎么做在線接口測試的這次 qData 并沒有簡單增加一個(gè)“發(fā)送請(qǐng)求”的入口。更核心的變化是把原本附屬于 API 新增/修改流程的接口驗(yàn)證能力獨(dú)立出來形成一個(gè)可以長期使用的在線接口測試工作臺(tái)。已經(jīng)創(chuàng)建完成的 API不需要重新進(jìn)入編輯頁面也不需要把接口地址復(fù)制到其他測試工具中。用戶可以直接進(jìn)入【接口測試】從已有的數(shù)據(jù)服務(wù)目錄中選擇 API圍繞當(dāng)前接口持續(xù)完成請(qǐng)求構(gòu)造、調(diào)用、結(jié)果查看和修改重測。整個(gè)過程可以概括為選擇 API → 構(gòu)造請(qǐng)求 → 配置鑒權(quán) → 發(fā)送調(diào)用 → 查看狀態(tài) → 查看響應(yīng) → 核對(duì)請(qǐng)求 → 調(diào)整重測這幾個(gè)動(dòng)作構(gòu)成了此次在線接口測試的核心使用鏈路。01 直接選擇已有 API不必重新整理接口信息接口測試的第一步首先是找到需要測試的接口。在傳統(tǒng)的外部測試流程中一個(gè)很常見的動(dòng)作是先去接口管理平臺(tái)找到 URL → 復(fù)制接口地址 → 再切換到測試工具 → 重新選擇請(qǐng)求方式 → 重新整理參數(shù) → 然后開始測試。對(duì)于單個(gè)接口來說這些動(dòng)作并不復(fù)雜。但在多個(gè)數(shù)據(jù)服務(wù)、多個(gè) API 高頻聯(lián)調(diào)的情況下這種重復(fù)操作會(huì)越來越明顯。qData 在線接口測試直接復(fù)用了平臺(tái)中已經(jīng)管理好的 API。進(jìn)入【接口測試】以后用戶可以按照現(xiàn)有的數(shù)據(jù)服務(wù)目錄查找接口。找到目標(biāo) API 后可以直接選中并進(jìn)入測試。于是測試的起點(diǎn)從“重新整理一遍接口信息”變成“找到 API直接開始測”。尤其是在一個(gè)數(shù)據(jù)服務(wù)下已經(jīng)維護(hù)了大量接口的情況下這種方式更符合平臺(tái)內(nèi)部持續(xù)調(diào)試的使用習(xí)慣。02 支持頁簽打開多個(gè)接口方便多 API 切換測試實(shí)際聯(lián)調(diào)過程往往并不只有一個(gè) API。例如一個(gè)業(yè)務(wù)頁面可能同時(shí)依賴查詢接口、列表接口、詳情接口以及其他數(shù)據(jù)服務(wù)。如果每次測試另一個(gè) API 都需要離開當(dāng)前頁面重新查找調(diào)試過程仍然容易被打斷。因此qData 在線接口測試支持通過頁簽同時(shí)打開多個(gè)接口。開發(fā)人員可以從左側(cè)數(shù)據(jù)服務(wù)目錄選擇不同 API并在多個(gè)已打開的接口之間進(jìn)行切換。這種方式更適合多接口聯(lián)調(diào)上下游接口驗(yàn)證多個(gè) API 連續(xù)測試不同接口結(jié)果之間的快速對(duì)照。測試頁面因此不再只是服務(wù)于某一次請(qǐng)求而更接近一個(gè)面向日常接口開發(fā)和聯(lián)調(diào)的工作區(qū)域。03 按真實(shí) HTTP 請(qǐng)求結(jié)構(gòu)構(gòu)造測試請(qǐng)求找到接口只是第一步。真正進(jìn)行 API 調(diào)試時(shí)測試工具是否能夠完整表達(dá)實(shí)際請(qǐng)求結(jié)構(gòu)更加重要。此次在線接口測試并不只是提供幾個(gè)簡單的參數(shù)輸入框。qData 支持圍繞一次實(shí)際 HTTP 請(qǐng)求配置請(qǐng)求方式、請(qǐng)求地址、Params、Body、Headers、Cookies、Auth 等信息。這意味著一次 API 請(qǐng)求中的主要組成部分不僅都可以在同一個(gè)頁面中完成配置。而是能夠按照真實(shí) HTTP 請(qǐng)求的結(jié)構(gòu)在同一個(gè)在線測試工作臺(tái)中完成一次完整調(diào)用。04 從“一次調(diào)用”變成“連續(xù)調(diào)試”接口測試很少真正做到“一次成功”。更常見的情況是第一次發(fā)送之后發(fā)現(xiàn)返回?cái)?shù)據(jù)不符合預(yù)期 → 修改某個(gè)參數(shù) → 重新發(fā)送 → 發(fā)現(xiàn)鑒權(quán)錯(cuò)誤 → 調(diào)整 Header 或 Auth → 再次發(fā)送 → 繼續(xù)對(duì)照返回結(jié)果 → 再修改請(qǐng)求所以實(shí)際接口調(diào)試更像是一組連續(xù)動(dòng)作配置請(qǐng)求 → 發(fā)送 → 查看結(jié)果 → 修改參數(shù) → 再次發(fā)送qData 在線接口測試重點(diǎn)支持的就是這種持續(xù)調(diào)試過程。用戶可以在當(dāng)前頁面不斷調(diào)整Params、Body、Header、Auth 等請(qǐng)求內(nèi)容然后直接重新發(fā)起調(diào)用。整個(gè)過程不需要重復(fù)進(jìn)入 API 編輯流程也不需要重新打開第三方接口工具。這使測試從過去偏向于“當(dāng)前配置完成以后調(diào)用一次”進(jìn)一步轉(zhuǎn)變?yōu)椤皣@同一個(gè)接口不斷調(diào)整和重測”。對(duì)于系統(tǒng)聯(lián)調(diào)和問題排查來說這種變化非常關(guān)鍵。因?yàn)楹芏鄦栴}只有通過不同參數(shù)和不同請(qǐng)求條件下的重復(fù)測試才能真正定位。05 請(qǐng)求和響應(yīng)可以放在一起核對(duì)調(diào)試一條接口僅知道返回成功或者返回錯(cuò)誤通常是不夠的。開發(fā)人員還需要進(jìn)一步判斷請(qǐng)求耗時(shí)如何接口返回了多少數(shù)據(jù)響應(yīng)頭是什么Body 實(shí)際返回了什么有沒有 Cookie返回結(jié)構(gòu)是不是符合預(yù)期因此請(qǐng)求發(fā)出以后qData 會(huì)集中展示本次接口調(diào)用的狀態(tài)、耗時(shí)、返回?cái)?shù)據(jù)大小以及 Body、Cookie、Header 等響應(yīng)信息。同時(shí)qData 在線接口測試對(duì)返回內(nèi)容提供了Pretty、Raw、JSON等不同查看方式。Pretty 更適合閱讀格式化后的返回信息Raw 可以查看更加接近原始響應(yīng)的數(shù)據(jù)JSON 則方便針對(duì)結(jié)構(gòu)化返回結(jié)果進(jìn)行觀察。同一個(gè)響應(yīng)不需要導(dǎo)出或者復(fù)制到其他工具里再處理就可以按照不同調(diào)試目的切換查看方式。而且接口問題排查中有一個(gè)非常常見的誤區(qū)看到錯(cuò)誤返回以后第一時(shí)間只關(guān)注服務(wù)端返回了什么卻沒有確認(rèn)客戶端實(shí)際發(fā)送了什么。但很多接口異常本質(zhì)上并不是后端計(jì)算出現(xiàn)問題。因此qData 在線接口測試不僅展示響應(yīng)信息也能夠幫助用戶對(duì)照實(shí)際請(qǐng)求內(nèi)容。開發(fā)人員可以繼續(xù)確認(rèn)兩個(gè)關(guān)鍵問題我實(shí)際發(fā)送了什么以及接口實(shí)際返回了什么這樣當(dāng)接口返回錯(cuò)誤、數(shù)據(jù)為空或者結(jié)果異常時(shí)就可以繼續(xù)從請(qǐng)求參數(shù)請(qǐng)求體請(qǐng)求頭鑒權(quán)響應(yīng) Body響應(yīng) Header等維度進(jìn)行核對(duì)。接口測試因此不只是判斷“通不通”也開始承擔(dān)一定的問題復(fù)現(xiàn)和排查作用。06 調(diào)整以后直接重測形成完整調(diào)試循環(huán)前面的能力組合起來以后在線接口測試最終形成的是一條連續(xù)工作流選擇 API → 構(gòu)造請(qǐng)求 → 配置鑒權(quán) → 發(fā)送調(diào)用 → 查看狀態(tài) → 查看響應(yīng) → 核對(duì)請(qǐng)求 → 調(diào)整參數(shù) → 再次測試這也是此次升級(jí)與原來接口調(diào)用能力最大的差別。原來的能力更多聚焦于當(dāng)前 API 配置是否正確。新的獨(dú)立接口測試則進(jìn)一步聚焦這個(gè)已經(jīng)存在的 API在后續(xù)開發(fā)、聯(lián)調(diào)和使用過程中能不能方便地持續(xù)調(diào)試。因此這次改變的不只是測試入口的位置。qData 數(shù)據(jù)服務(wù)實(shí)際上是把原本“API 配置完成后的即時(shí)調(diào)用驗(yàn)證”進(jìn)一步擴(kuò)展為一個(gè)獨(dú)立、完整并可以持續(xù)使用的在線接口測試工作臺(tái)?;A(chǔ) API 測試和日常調(diào)試也可以更多直接在 qData 內(nèi)完成減少接口管理頁面、API 配置流程和第三方測試工具之間的頻繁切換。五、在線接口測試適合哪些實(shí)際場景從實(shí)際項(xiàng)目流程來看獨(dú)立接口測試并不是只服務(wù)于某一種開發(fā)角色。它可以貫穿 API 從創(chuàng)建到正式交付的多個(gè)階段。1. API 新建驗(yàn)證API 配置完成以后可以快速發(fā)起測試請(qǐng)求確認(rèn)接口是否能夠正常調(diào)用以及返回結(jié)果是否符合預(yù)期。這也是最基礎(chǔ)的接口驗(yàn)證場景。2. 配置修改后的重新測試當(dāng)接口參數(shù)、請(qǐng)求方式或者鑒權(quán)方式發(fā)生調(diào)整以后可以直接重新發(fā)起請(qǐng)求。開發(fā)人員不需要重新搭建測試環(huán)境即可驗(yàn)證修改是否生效。3. 前端、業(yè)務(wù)系統(tǒng)和第三方應(yīng)用聯(lián)調(diào)進(jìn)入系統(tǒng)聯(lián)調(diào)階段以后接口請(qǐng)求條件往往會(huì)不斷變化。此時(shí)可以持續(xù)調(diào)整Params、Body、Header、Auth等信息反復(fù)驗(yàn)證不同調(diào)用條件下的接口響應(yīng)。4. 接口異常問題復(fù)現(xiàn)當(dāng)接口出現(xiàn)報(bào)錯(cuò)、返回為空或者結(jié)果異常時(shí)可以重新構(gòu)造當(dāng)時(shí)的請(qǐng)求條件。通過對(duì)照請(qǐng)求和響應(yīng)信息輔助判斷問題到底出現(xiàn)在參數(shù)、鑒權(quán)、請(qǐng)求結(jié)構(gòu)還是返回結(jié)果。5. 多條件驗(yàn)證對(duì)于同一個(gè) API不同參數(shù)組合可能對(duì)應(yīng)不同業(yè)務(wù)邏輯??梢酝ㄟ^連續(xù)修改參數(shù)、請(qǐng)求體或者鑒權(quán)條件進(jìn)行多次測試驗(yàn)證接口在不同場景下的返回情況。6. 多 API 調(diào)試當(dāng)一個(gè)業(yè)務(wù)功能涉及多個(gè)接口時(shí)可以直接從數(shù)據(jù)服務(wù)目錄選擇對(duì)應(yīng) API并通過頁簽在多個(gè)接口之間快速切換和測試。這更適合實(shí)際業(yè)務(wù)頁面或系統(tǒng)集成中的多接口聯(lián)調(diào)。7. 正式交付前檢查接口準(zhǔn)備提供給業(yè)務(wù)系統(tǒng)正式使用之前還可以再進(jìn)行一次完整驗(yàn)證。確認(rèn)接口能夠正常訪問、鑒權(quán)有效、參數(shù)符合約定、返回結(jié)果符合預(yù)期。從最初的 API 驗(yàn)證到修改后的重測再到系統(tǒng)聯(lián)調(diào)、異常排查以及最終交付接口測試實(shí)際上貫穿了 API 的整個(gè)使用過程。六、這次在線接口測試帶來了什么價(jià)值如果只從功能數(shù)量來看在線接口測試可能只是 qData 數(shù)據(jù)服務(wù)中的一個(gè)功能增強(qiáng)。但從實(shí)際使用流程來看它解決的是一個(gè)比較具體的效率問題讓 API 的創(chuàng)建、管理和后續(xù)調(diào)試盡可能留在同一套數(shù)據(jù)服務(wù)體系中。首先已有 API 可以直接選擇并測試不需要為了重新驗(yàn)證接口再一次進(jìn)入完整配置流程。其次基礎(chǔ)調(diào)試可以更多在 qData 內(nèi)完成這更加符合真實(shí)的接口調(diào)試習(xí)慣。而請(qǐng)求與響應(yīng)信息集中展示以后在接口出現(xiàn)異常時(shí)也更容易重新構(gòu)造請(qǐng)求并復(fù)現(xiàn)問題。所以此次在線接口測試的核心價(jià)值可以概括為降低 API 驗(yàn)證、聯(lián)調(diào)和問題排查過程中的操作成本讓接口測試更加集中也讓整個(gè)調(diào)試鏈路更加連續(xù)。這并不是為了完全取代所有專業(yè)接口開發(fā)工具。對(duì)于復(fù)雜的自動(dòng)化測試、性能測試以及更專業(yè)的 API 測試工作仍然可能有專門工具承擔(dān)。但對(duì)于數(shù)據(jù)服務(wù)內(nèi)部大量存在的日常驗(yàn)證、參數(shù)調(diào)整、系統(tǒng)聯(lián)調(diào)和問題復(fù)現(xiàn)來說把基礎(chǔ)測試能力直接放到數(shù)據(jù)服務(wù)平臺(tái)中可以讓開發(fā)過程更加連貫。七、在線接口測試對(duì) qData 數(shù)據(jù)服務(wù)意味著什么API 從創(chuàng)建到正式投入使用中間通常還存在大量驗(yàn)證和調(diào)試工作。qData 數(shù)據(jù)中臺(tái)專業(yè)版此次新增在線接口測試能力主要針對(duì)這一過程中的實(shí)際開發(fā)需求進(jìn)行了優(yōu)化。通過獨(dú)立測試入口開發(fā)人員可以直接選擇已有 API構(gòu)造 HTTP 請(qǐng)求配置 Params、Body、Headers、Auth 等信息查看請(qǐng)求狀態(tài)和響應(yīng)內(nèi)容根據(jù)測試結(jié)果調(diào)整參數(shù)并再次驗(yàn)證。整體流程可以概括為選擇 API → 配置請(qǐng)求 → 發(fā)送調(diào)用 → 查看響應(yīng) → 調(diào)整參數(shù) → 再次測試相比原有接口創(chuàng)建流程中的即時(shí)測試能力獨(dú)立在線接口測試更加適合 API 創(chuàng)建完成后的持續(xù)調(diào)試場景。它并不是替代專業(yè)接口測試工具而是在數(shù)據(jù)服務(wù)平臺(tái)內(nèi)部補(bǔ)充一套更加貼近日常開發(fā)流程的驗(yàn)證能力。對(duì)于企業(yè)數(shù)據(jù)中臺(tái)而言API 的生命周期不僅包括創(chuàng)建和發(fā)布也包括后續(xù)的驗(yàn)證、聯(lián)調(diào)和維護(hù)。通過完善接口測試環(huán)節(jié)qData 數(shù)據(jù)服務(wù)進(jìn)一步減少了接口管理與調(diào)試過程中的流程割裂讓開發(fā)人員能夠更加高效地完成數(shù)據(jù)服務(wù)接口的開發(fā)和維護(hù)工作。