应用测试
应用配置好了以后,我们可以手动测试配置是否如何预期,也可以编写测试用例来验证。
同时,编写好的测试用例,也可以用于每次配置变更后的回归测试, 还可以配合灰度发布功能,用于正式发布前的回归测试。
我们先看下如何添加测试用例。
首先,我们需要输入测试名字,方便用于区分不同的测试。
再主要就是用 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 端口(还不支持指定特殊的端口), 然后将获取到的响应状态码,响应头以及响应体,跟测试用例里描述的期望的值逐个进行对比, 如果符合期望值,则该测试点通过,在结果栏里将会有一个绿色的勾, 如果不符合期望值,则该测试点失败,在结果栏里将会有一个红色的叉。 所以,一个测试用例也可能会有多条测试结果输出(取决于测试里写的期望值多少)。
选择执行后,我们会看到测试结果的实时输出。