在進行前端頁面開發或者測試的時候,我們會遇到這一類場景:
在後端開發或者測試的過程中,我們可能會遇到這些場景:
在驗證前端頁面的時候,我曾使用抓包軟體Charles在捕捉流量的時候,設定斷點(類似debug功能),並手動去調整介面的請求體或者響應體。
工作原理:
Charles 斷點的實現原理是在使用者端和伺服器之間插入一個代理伺服器,攔截並監視網路流量。當我們設定斷點時,Charles 會在代理伺服器上暫停請求或響應,直到我們決定繼續或取消請求或響應。
通過使用Chrome外掛(一般使用Chrome瀏覽器:如g0ngjie/ajax-proxy),設定一些規則來攔截介面,更改介面的響應。或者對請求進行重定向。但此方法僅侷限在Chrome瀏覽器中使用。
工作原理:
這個工具是一個基於 Node.js 和 Express 框架的 AJAX 代理伺服器,可以將 AJAX 請求傳送到其他域名下的 API 介面,並將響應返回給使用者端。其實現原理如下:
在這個過程中,代理伺服器可以對請求和響應進行一些處理,例如修改請求頭、新增身份認證資訊、對響應結果進行過濾等。這些處理可以在伺服器端通過編寫中介軟體來實現。
實現一款mock工具,設計方案大致如下:
其實Requestly的工作原理和ajax-proxy 瀏覽器外掛的原理差不多。
Requestly 是一個請求修改工具,可以幫助使用者在瀏覽器中修改網路請求,從而達到一些偵錯、測試、模擬等目的。其工作原理如下:
在這個過程中,Requestly 可以對請求和響應進行多種型別的修改,包括重定向、新增請求頭、修改請求引數、模擬網路請求等。這些修改可以幫助使用者快速定位和解決問題,加速開發和測試過程。
除了使用瀏覽器外掛的方式抓緊請求外,還可以通過啟動本地代理的方式來攔截任何請求。
這款工具大大提升了我的工作效率,在前端頁面的開發以及測試來說,就是一款網路偵錯神器!
requestly主要有以下的功能:
1.瀏覽器外掛
2.本地代理:通過啟動本地代理來捕獲各個端的流量(與Charles類似)
可以選擇要取消的特定網路請求,以便在進行偵錯和測試時排除干擾。
將特定的網路請求重定向到其他url。
模擬介面延時。通過使用URL匹配或者host匹配或者path匹配來設定規則(支援正則匹配),命中規則的介面將會被requestly捕捉,並在延遲的時間後返回響應
修改或者刪除請求的查詢引數
使用者代理在網路通訊中起著非常重要的作用,它能夠告訴伺服器請求的來源和請求的方式。這些資訊可以幫助伺服器更好地處理請求,提供更好的服務和使用者體驗。
我們使用chrome瀏覽器驗證功能的時候,可以匹配的域名的使用者代理改成對應的代理。
提供json格式的資料,並直接替換請求的請求體
通過JS修改請求中的請求體,並替換原有的請求體。使用頻率最高的功能是:通過對bodyJson進行調整,並重新返回bodyAsJson,達到修改請求體的目的。
function modifyRequestBody(args) {
const { method, url, body, bodyAsJson } = args;
// Change request body below depending upon request attributes received in args
//可以對bodyJson進行調整,並重新返回bodyAsJson
return body;
}
支援api型別:REST API與GraphQL API
提供json格式的資料,並直接將該資料返回給前端
修改真實伺服器返回的響應並返回給前端
function modifyResponse(args) {
const {method, url, response, responseType, requestHeaders, requestData, responseJSON} = args;
// Change response below depending upon request attributes received in args
const mock_res = JSON.parse(response)
console.log('mock_res itemList:',mock_res.data.itemList)
itemList = mock_res.data.itemList
if (itemList!==undefined && itemList.length !== 0){
for(var i=0; i<itemList.length;i++){
itemList[i].productName = itemList[i].itemId
itemList[i].status = 1
itemList[i].statusName = Math.random() < 0.5 ? "DELETE" : "BANNED";
itemList[i].timeFormatted = new Date().toLocaleString().replaceAll('/','-');
itemList[i].time = Date.now().toString();
}
}
// mock_res.data.itemList = itemList
return mock_res;
}
Requestly Sessions 是一種可用於捕獲和共用網路請求的功能。這個功能可以記錄和儲存瀏覽器請求以及對應的響應,並在需要時重新傳送這些請求。這意味著我們可以跨不同瀏覽器對談和不同裝置之間以及與其他使用者共用這些請求。這個功能特別適用於需要經常複製和貼上相同請求的開發人員、測試人員和網路爬蟲等。
1.驗證前端在各種狀態的展示:通過修改介面的返回響應來模擬各個場景。(當時,你也可以通過在db層面造數來實現介面響應的正確放回:如直接改db或者寫造數指令碼,這個不在我們今天討論的範圍內。)
我們可以使用Dynamic (JavaScript)
來調整響應。可以針對不同的場景自定義不同的json字串,也可以在原有的響應的基礎來進行調整。
function modifyResponse(args) {
const {method, url, response, responseType, requestHeaders, requestData, responseJSON} = args;
// Change response below depending upon request attributes received in args
var status=0
if(status === 0 ){
console.log("json更新為status=0場景")
}else if(status ===1 ){
console.log("json更新為status=1場景")
}
return response;
}
2.模擬介面延遲,驗證前端頁面的處理
3.捕捉各個端的網路請求
總結一下Requestlty常用的功能:
總之,Requestly 是一款非常強大和有用的偵錯和測試工具,可以幫助開發人員和測試人員更好地測試和偵錯應用程式。它具有豐富的功能和靈活的設定選項,可以滿足不同的測試需求。
公眾號:波小藝
、測試開發
、軟體測試
本文來自部落格園,作者:波小藝,轉載請註明原文連結:https://www.cnblogs.com/zhangboyi/p/17379923.html