WAF在支持虚拟化的同时,进行了提供开放接口(REST API),对于REST API接口与WEB UI的优势就在于可以方便自动化实现测试;在对WAF REST API进行自动化测试选择,通过几个工具的比较,选择了使用商用工具SOAPUI进行接口的自动化测试和用例管理。
因为SOAPUI是商用软件,本身对它的介绍文档也比较多,本文是笔者使用后的经验总结,相信会对感兴趣的朋友带来或多或少的帮助。
REST测试项目创建
1.新建一个rest project
2.在弹出的对话框中输入需要测试的URL:
3.OK,生成一个新的项目:
4.运行这个Request 1,测试是否得到期望response,因为WAF设备的REST接口需要先授权所以初次使用可以看到已经连接OK,但是没有授权:
授权配置
5.还是继续上例中的结果,需要添加访问权限。访问权限在request部分的下方:
看到SOAPUI有配置“Auth”的接口。
6.添加新的授权信息:
7.选择对应的产品授权类型,例如使用Basic:
8.输入用户名和密码,其他保持不变:
9.再次运行Request 1,可以看到返回了正确的值,且log中也记录了正确的步骤:
测试用例集管理
10.为rest project 1新建一个测试用例集:
11.定义用例集的名称:
12.将9中的request 1添加到用例集中:
13.在用例集Interface中,新建测试用例:
14.输入测试用例的名字:
15.输入步骤的名称:
16.新建测试用例成功:
17.这个时候的测试用例只执行一个过程,而没有判断过程是否执行正确。相当于只给出的用例的步骤,但没有预期的结果。所以需要为每个步骤添加断言:
18.有各种断言类型可选,先用返回内容:contains。因为事先知道返回的内容,所以填上相应的内容:
19.完成以后执行步骤valid,验证断言正确:
20.点击Assertions,查看断言列表:
21.添加另一个断言:
22.执行发现断言错误:
23.添加另一种类型的断言:返回码
24.输入状态码:
25.运行成功。
返回码类型的断言,针对每条步骤,只能添加一次。
而contains类型的断言,没有限制:
26.查看整个测试用例集Interface的测试结果。
双击Interface,再运行即可看到结果:
SOAPUI使用的注意事项:
1.转意字符:对于斜杠【/】等,在添加contains断言时,可能会有转意,必须用如下方式填写:
要想知道精确的content的值,要在response中,使用【raw】状态进行查看,不能使用【json】状态:
2.传参:URI可能会有变化,如interfaces/eth0/ip,interfaces/eth1/ip,这样可以参数化interfaces/{param}/ip,只在测试用例中,传入实例化的param即可。注:参数化最好是resource级别的,而不是method级别的。
如下图所示,只需要在resource path中直接写入带参数的URI地址即可,下方的resource parameters会自动补齐了
在把request加入到测试用例中时,也可以不写入实参:
而是在测试用例里面再写入实参,可以看到,当写入实参后,URI自动补全了实参:
当然,也可以在request中写入实参,再添加到测试用例中。这样就不用在测试用例中再添加实参了。
3.当然SOAPUI作为商业软件,上面这些都是比较基础的一些功能测试,它的功能还是比较强大和完备的。
比较大的扩展在对Groovy的支持,可以通过脚本可以进行灵活和复杂的用例实现,如下图所示。
如果您需要了解更多内容,可以
加入QQ群:486207500
直接询问:010-68438880-8669