應用測試

應用配置好了以後,我們可以手動測試配置是否如何預期,也可以編寫測試用例來驗證。

同時,編寫好的測試用例,也可以用於每次配置變更後的回歸測試, 還可以配合灰度釋出功能,用於正式釋出前的回歸測試。

我們先看下如何新增測試用例。

首先,我們需要輸入測試名字,方便用於區分不同的測試。

再主要就是用 TestML 這種小語言來描述:用於測試的請求資訊,以及期望的輸出。

比如這裡我們加一個簡單的測試 (也可以輸入多個測試用例,用三個空行隔開), 意思是向被測試節點傳送請求:http://openresty.com/, 期望得到 301 的返回,並且請求頭中包含期望的 Location 地址,和 Server 標識, 響應體中包含 301 Moved Permanently 這個 HTML title 。

具體來說,=== 段表示該測試的名字,

--- 段表示測試的具體內容,比如:

url: 用於指定請求的 URL,

host: 用於指定請求的 Host,

ssl: 用於指定請求是否是 HTTPS 請求,預設是 HTTP,

req_headers: 用於指定請求頭,預設是沒有請求頭,一行表示一對請求頭,

status:用於指定期望的響應狀態碼,

resp_headers:用於指定期望的響應頭,一行表示一對響應頭,

resp_header_pat:用於指定期望的響應頭的正則匹配模式,跟 resp_headers 類似,只是 value 值部分可以用正則來表達,

resp_body_pat:用於指定期望的響應體的正則匹配模式。

儲存成功後,會跳轉到測試用例列表,我們可以選擇一個測試來執行。

首先我們需要選擇執行哪一個測試。

然後需要指定被測試的閘道器節點,可以選擇某些節點,也可以全選。

選中某個閘道器節點則意味著,將會從 admin 節點向這個閘道器節點傳送測試用例裡描述的請求(透過節點的外網 IP), HTTP 請求會走 80 埠,HTTPS 請求則會走 443 埠(還不支援指定特殊的埠), 然後將獲取到的響應狀態碼,響應頭以及響應體,跟測試用例裡描述的期望的值逐個進行對比, 如果符合期望值,則該測試點透過,在結果欄裡將會有一個綠色的勾, 如果不符合期望值,則該測試點失敗,在結果欄裡將會有一個紅色的叉。 所以,一個測試用例也可能會有多條測試結果輸出(取決於測試裡寫的期望值多少)。

選擇執行後,我們會看到測試結果的實時輸出。