大家好,就到這裡啦
分裂成節點
如果您使用 Postman,那麼您就會知道請求介麵包含所有必要的功能。 有腳本、測試,實際上還有請求本身。 這對於初學者來說比較容易,但是在大場景下這種方式並不靈活。 如果您想建立多個查詢並對它們執行聚合該怎麼辦? 如果您想在沒有請求的情況下執行腳本或連續執行多個邏輯上獨立的腳本怎麼辦? 畢竟,將測試與常規實用程式腳本分開是個好主意。 此外,「將所有功能新增至一個節點」的方法無法擴展 - 介面很快就會變得過載。
TestMace 最初將所有功能劃分為不同類型的節點。 您想提出請求嗎? 這是給你的
人類可讀的項目格式
TestMace 和 Postman 之間在儲存方式上存在概念上的差異。 在 Postman 中,所有請求都儲存在本機儲存中的某個位置。 如果需要在多個使用者之間共用請求,那麼您需要使用內建同步。 事實上,這是一種普遍接受的方法,但並非沒有缺點。 資料安全怎麼樣? 畢竟,一些公司的政策可能不允許第三方儲存資料。 然而,我們認為 TestMace 可以提供更好的東西! 這項改進的名稱是「人類可讀的項目格式」。
首先,在 TestMace 中,原則上有一個「專案」實體。 該應用程式最初開發時著眼於在版本控制系統中儲存專案:專案樹幾乎一對一地投影到檔案結構上,使用 yaml 作為儲存格式(沒有額外的括號和逗號),並且每個節點的檔案表示在帶有註釋的文檔中進行了詳細描述。 但在大多數情況下,您不會看那裡 - 所有欄位名稱都有邏輯名稱。
這為用戶帶來了什麼? 這使您可以使用熟悉的方法非常靈活地改變團隊的工作流程。 例如,開發人員可以將專案儲存在與後端相同的儲存庫中。 在分支中,除了更改程式碼庫本身之外,開發人員還可以更正現有的查詢腳本和測試。 將變更提交到儲存庫(git、svn、mercurial - 無論您最喜歡什麼)後,CI(您最喜歡的,不是由任何人強加的)啟動我們的控制台實用程式
正如您所看到的,TestMace 並沒有強加其生態系統和範式。 相反,它很容易融入既定的流程。
動態變數
TestMace 遵循無程式碼概念:如果問題可以在不使用程式碼的情況下解決,我們會嘗試提供這個機會。 使用變數正是大多數情況下無需編程即可完成的功能。
範例:我們收到了來自伺服器的回應,我們希望將部分回應儲存到變數中。 在 Postman 中,在測試腳本(這本身很奇怪)中,我們會寫如下內容:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);
但在我們看來,為這樣一個簡單且頻繁使用的場景編寫腳本看起來是多餘的。 因此,在 TestMace 中,可以使用圖形介面將一部分答案指派給變數。 看看它是多麼簡單:
現在,隨著每個請求,這個動態變數都會更新。 但您可以反對,認為 Postman 方法更靈活,不僅允許您進行分配,還允許您執行一些預處理。 以下是修改前面範例的方法:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));
好吧,為此目的 TestMace 有
const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));
正如您所看到的,節點的組合在這裡也發揮了很好的作用。 對於如上所述的簡單情況,您可以簡單地指派表達式 ${crypto.MD5($response.data)}
透過 GUI 創建的變數!
透過 GUI 創建測試
Postman 允許您透過編寫腳本來建立測試(對於 Postman,這是 JavaScript)。 這種方法有很多優點——幾乎無限的靈活性、現成解決方案的可用性等。
然而現實往往是這樣的(我們不是這樣,生活就是這樣),一個測試人員沒有程式設計能力,但他現在就想為團隊帶來好處。 對於這種情況,請遵循無程式碼概念,TestMace 允許您透過 GUI 建立簡單的測試,而無需編寫腳本。 例如,建立比較值是否相等的測試的過程如下所示:
然而,在圖形編輯器中建立測試並不能消除這種可能性
能夠透過連結(連結節點)運行現有腳本
當某個查詢甚至整個腳本需要在專案的不同部分執行多次時,經常會出現這種情況。 此類請求的一個範例可以是自訂多階段授權,將環境帶到所需的狀態等。 一般來說,就程式語言而言,我們希望擁有可以在應用程式的不同部分中重複使用的函數。 在 TestMace 中,函數由下列指令執行
1) 建立查詢或腳本
2)建立Link類型的節點
3) 在參數中,指定指向第一步驟中建立的腳本的鏈接
在更進階的版本中,您可以指定將腳本中的哪些動態變數傳遞到相對於連結的更高層級。 聽起來很混亂? 假設我們建立了一個名為 建立貼文,其中動態變數被分配給該節點 postId
。 現在在連結節點中 建立貼文連結 您可以明確指定變數 postId
分配給祖先 建立貼文連結。 這種機制(同樣是在程式語言中)可用來從「函數」傳回結果。 總的來說,這很酷,DRY 正在全面展開,而且沒有一行程式碼損壞。
至於Postman,有一個重複使用請求的功能請求
其他差異
- 更好地控制變數的範圍。 Postman 中可以定義變數的最小範圍是集合。 TestMace 允許您為任何查詢或資料夾定義變數。 在 Postman 中,共享集合允許您僅匯出集合,而在 TestMace 中,共享適用於任何節點
- TestMace 支持
可繼承的標頭 ,預設可以替換為子查詢。 郵差對此有一些看法:任務 ,甚至已經關閉,但它是作為解決方案提供的...使用腳本 。 在 TestMace 中,這一切都是透過 GUI 配置的,並且有一個選項可以選擇停用特定後代中繼承的標頭 - 撤銷重做。 不僅在編輯節點時有效,而且在移動、刪除、重新命名和其他更改項目結構的操作時也有效
- 與 Postman 不同,附加到請求的文件成為項目的一部分並與其一起存儲,同時完全同步。 (是的,您不再需要每次啟動時手動選擇檔案並將其傳輸給存檔中的同事)
已經推出的功能
我們無法抗拒在下一個版本中揭開保密面紗的誘惑,尤其是當功能非常美味並且已經在進行預發布完善時。 那麼,我們見面吧。
功能
如您所知,Postman 使用所謂的動態變數來產生值。
{{$randomEmail}}
但是,由於這些是變數(儘管是動態的),因此它們不能用作函數:它們不可參數化,因此無法從字串中獲取雜湊值。
我們計劃為 TestMace 添加「誠實」功能。 在 ${} 內部不僅可以存取變量,還可以呼叫函數。 那些。 如果您需要產生臭名昭著的假電子郵件,我們將簡單地寫
${faker.internet.email()}
除了它是一個函數之外,您還會注意到可以呼叫物件上的方法。 我們擁有一組邏輯分組的對象,而不是一大堆動態變數的平面列表。
如果我們想計算一個字串的雜湊值怎麼辦? 容易!
${crypto.MD5($dynamicVar.data)}
您會注意到您甚至可以將變數作為參數傳遞! 此時,好奇的讀者可能會懷疑出了什麼問題...
在表達式中使用 JavaScript
……而且有充分的理由! 當函數的需求形成時,我們突然得出結論:有效的javascript應該用表達式來寫。 所以現在你可以自由地寫如下表達式:
${1 + '' + crypto.MD5('asdf')}
所有這一切都無需腳本,就在輸入欄位中!
至於Postman,在這裡你只能使用變量,當你嘗試編寫最輕微的表達式時,驗證器會咒罵並拒絕計算它。
進階自動完成
目前 TestMace 有一個標準的自動完成功能,如下所示:
這裡,除了自動完成行之外,還指示該行屬於什麼。 此機制僅適用於用方括號 ${} 括起來的表達式。
如您所見,已新增視覺標記來指示變數的類型(例如字串、數字、陣列等)。 您也可以變更自動完成模式(例如,您可以選擇使用變數或標題自動完成)。 但這還不是最重要的!
首先,自動補全功能甚至可以在表達式中發揮作用(如果可能)。 它看起來是這樣的:
其次,自動完成功能現在可以在腳本中使用。 看看它是如何工作的!
將此功能與 Postman 進行比較是沒有意義的 - 自動補全僅限於變數、標頭及其值的靜態清單(如果我忘記了什麼,請修正我)。 腳本不會自動完成:)
結論
十月標誌著我們產品開發開始的一年。 在這段時間裡,我們做了很多事情,並且在某些方面趕上了競爭對手。 但無論如何,我們的目標是打造一個真正方便的 API 工具。 我們還有很多工作要做,以下是我們來年專案發展的粗略計劃:
您的回饋將使我們能夠更好地瀏覽豐富的功能,您的支持給了我們力量和信心,讓我們相信我們正在做正確的事情。 恰巧今天對我們的專案來說是一個重要的日子——TestMace 發布的日子
來源: www.habr.com