使用SOAPUI进行REST API测试实践

WAF在支持虚拟化的同时,进行了提供开放接口(REST API),对于REST API接口与WEB UI的优势就在于可以方便自动化实现测试;在对WAF REST API进行自动化测试选择,通过几个工具的比较,选择了使用商用工具SOAPUI进行接口的自动化测试和用例管理。
因为SOAPUI是商用软件,本身对它的介绍文档也比较多,本文是笔者使用后的经验总结,相信会对感兴趣的朋友带来或多或少的帮助。

REST测试项目创建

1.新建一个rest project

新建

新建

2.在弹出的对话框中输入需要测试的URL:

URL

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。因为事先知道返回的内容,所以填上相应的内容:

contains

contains

19.完成以后执行步骤valid,验证断言正确:

valid

valid

20.点击Assertions,查看断言列表:

Assertions

Assertions

21.添加另一个断言:

添加另一个断言

添加另一个断言

22.执行发现断言错误:

断言错误

断言错误

23.添加另一种类型的断言:返回码

返回码

返回码

24.输入状态码:

状态码

状态码

25.运行成功。
返回码类型的断言,针对每条步骤,只能添加一次。
而contains类型的断言,没有限制:

断言没有限制

断言没有限制

26.查看整个测试用例集Interface的测试结果。
双击Interface,再运行即可看到结果:

Interface

Interface

SOAPUI使用的注意事项:

1.转意字符:对于斜杠【/】等,在添加contains断言时,可能会有转意,必须用如下方式填写:

转意字符

转意字符

要想知道精确的content的值,要在response中,使用【raw】状态进行查看,不能使用【json】状态:

raw

raw

2.传参:URI可能会有变化,如interfaces/eth0/ip,interfaces/eth1/ip,这样可以参数化interfaces/{param}/ip,只在测试用例中,传入实例化的param即可。注:参数化最好是resource级别的,而不是method级别的。
如下图所示,只需要在resource path中直接写入带参数的URI地址即可,下方的resource parameters会自动补齐了

resource parameters

resource parameters

在把request加入到测试用例中时,也可以不写入实参:

不写入实参

不写入实参

而是在测试用例里面再写入实参,可以看到,当写入实参后,URI自动补全了实参:

URI

URI

当然,也可以在request中写入实参,再添加到测试用例中。这样就不用在测试用例中再添加实参了。

3.当然SOAPUI作为商业软件,上面这些都是比较基础的一些功能测试,它的功能还是比较强大和完备的。
比较大的扩展在对Groovy的支持,可以通过脚本可以进行灵活和复杂的用例实现,如下图所示。

用例实现

用例实现

如果您需要了解更多内容,可以
加入QQ群:486207500
直接询问:010-68438880-8669

Spread the word. Share this post!

Meet The Author

Leave Comment