使用REST discovery(pro)生成SoapUI测试

Posted WEL测试

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用REST discovery(pro)生成SoapUI测试相关的知识,希望对你有一定的参考价值。

本部分将告诉你在RESTful web服务已经存在的情况下怎么生成测试?SoapUI的专业版本有REST discovery 功能,该功能允许与RESTful API进行交互时被录制且被用于生成测试。

4.1 准备阶段

为了提供一个RESTful web服务的例子,需要扩展上一章中invoice服务有全部的CRUD功能。接口样子如下:

         Resource: ​http://localhost:9000/invoiceservice/v1/invoice​

         Supported Methods:

                 POST invoice - Create Invoice.

   GET invoice/id – Get (Read) Invoice.

   PUT invoice/id – Update Invoice.

   DELETE invoice/id – Delete Invoice

         Invoice文档如下:


"Invoice": 

"id": 12345,

"companyName": "Test Company",

"amount": 100

        这个服务实现是非常基础的。创建(POST)方法不是幂等的,它将在每个成功的请求上创建新的invoice对象,其ID为invN形式,其中N是从0开始的序列号,例如inv0,inv1等等。GET、UPDATE、DELETE方法将返回HTTP的状态码,如果一个带有执行ID的invoice在之前没有被创建,将返回一个404的状态码。Invoice被存储在一个java的HashMap中,因此不是被持久保存的,当服务重启时,在启动后HashMap是空的

         之前创建的服务例子存放在:<chapter1samples>/rest/invoice_crud,启动服务的服务和上一章中描述的一样,截图如下:

第四章

        如果看到异常“Port already in use”,这时你要确保没有其他服务占用端口9000,例如上一章的服务。本章将使用火狐浏览器来进行说明。如果没有安装,请下载火狐浏览器。如果这时不可能的,其他选项在后面描述中被提及。

4.2 操作步骤

         SoapUI为发现RESTful web服务提供两种选择。第一选择是使用内部浏览器(Internal Browser),第二选择是用代理模式(proxy mode)。内部浏览器选项是唯一有用的,如果满足以下要求:

 l  只测试GET请求,因为没有其他方法是可能的

 l  你正在通过网页发现服务,就像SoapUI在线帮助Swagger中的例子一样

 l  需要使用HTTPS进行测试,在编写本文时,代理不能支持。        

否则一旦成立,代理模式对于包括这部分在内的许多API场景中的测试来说是一个更加通用的选择。

1.  打开SoapUI创建一个新的项目,然后选择“Discover REST APIs using ”选择“Internal browser”。点击OK,你将看到SoapUI代理默认信息:

第四章

 第四章

 这个例子,我们只考虑内部客服端的详细信息。使用外部客户端涉及几乎相同的步骤,除了需要的网络设置超出了本书的范围。服务(localhost)和端口(8081)是键值对。这些将被我们选择用于实际服务交互的任何REST客户端使用。

 TIPS:REST Clients:在这里有很多好而且免费的选择。例如Eclipse和IntelliJ类似这样的IDE有一个好的REST客户端插件。基于浏览器的REST客服端也有很好的,例如:Chrome的Postman插件、Firefox的RESTClient插件。当选择其中一个进行使用,需要考虑代理的设置,至少暂时,是为了通过SoapUI的代理路由请求。你也可以使用命令行选项,使用一些类似于curl(https://curl.haxx.se/docs/manpage.html)的命令。选择最适合自己的,这章将使用Firefox的RESTClient插件。

2. 下载Firefox插件的RESTClient,可以在火狐浏览器的“Tools Menu|Add-ons”搜索RESTClient,点击“Add to Firefox”。重启火狐浏览器,在“Tools Menu”中会看到RESTClient的ico在客户端点开RESTClent:

第四章

3.  我们需要将Firefox代理设置配置为指向SoapUI代理:

 1)打开Preferences(选项)|Advanced(高级)|Network(网络)

 2) 在“Connection”下,在“Configure how Firefox connects to the Internet”点击“Settings”

 3) 选择“Mannual proxy configuration”,输入SoapUI代理的详细信息,截图如下:

 4) 点击OK

第四章

4. 准备通过SoapUI代理使用RESTClient。作为首次测试,向之前那样请求WADL,通过选择一个GET方法,添加一个URL: ​​http://localhost:9000/invoiceservice/v1?_wadl​​,点击“Send”。你将看到在RESTClient响应body中的WADL,SoapUI代理“RecordedResquest”增加到1。

TIPS:确保服务在运行,否则将会出现“拒绝连接”信息。服务持续运行时长是10分钟,可以在Server.java中调整!其他请求也会通过火狐浏览器,也会增加录制请求的数量。任何不需要的请你去,在后期会进行过滤。

 第四章

5.  在尝试提交或放置任何invoice数据之前,需要把请求内容的类型(Content-type)为application/json;否则,状态码415将会出现,该状态表明”不支持媒体类型”。操作步骤如下:

 1)  点击“RESTClient Headers”,选择“Custom Header”

 2) 在“Resquest Header”弹出框中,输入Name为“Content-Type”,Value为“application/json”,这时点击OK

 3)这时在Headers部分的Content-Type:application/json

 第四章第四章

6.  做一下事实请求,首先创建一个invoice。设置如下值:

 Method:POST

 URL:​http://localhost:9000/invoiceservice/v1/invoice​

 Body: 

"Invoice": 

"id": 12345,

"companyName": "Test Company",

"amount": 100

 点击”Send”,将会看到“Response Header”状态码为200 OK,,而且“Response Body”:

 第四章

7. 更新invoice:

 Method:POST

 URL:​http://localhost:9000/invoiceservice/v1/invoice​

 Body: 

"Invoice": 

"id": 12345,

"companyName": "Real Company",

"amount": 100

 点击”Send”将看到“Response Header”状态码为200而且“Response Body”:

 第四章

8. 获取invoice,方法为GET,而且URL: ​​ http://localhost:9000/invoiceservice/v1/invoice/inv0​​。点击”Send”,将看到一个状态码为200:

第四章

9.  删除invoice,方法是DELETE,而且URL: ​​ http://localhost:9000/invoiceservice/v1/invoice/inv0。将看到一个响应码为200​​ OK,响应信息不带有任何信息。

第四章

10.    最后,再次尝试获取invoice,你将看到一个状态响应码为404。

第四章

11. 现在生成SoapUI测试,执行以下操作:

 1) 在SoapUI页面点击“Done”。将进入如下界面:

 第四章

 2)  点击“生成服务(Genrate service)”,选择“Service+TestSuite”。点击“OK”在弹出的窗口这时输入TestSuite的名字,例如:“TestSuite Rest Discovery”:

 第四章

  输入TestSuite名后,点击OK在弹出的窗口输入:TestCase。

 3)一个成功的弹出窗口将显示;点击OK关闭发现,这时将在项目名为Project 1下看到所有生成的request、TestSuite、TestCase、以及每个请求的TestSteps。

4.3 工作原理

         SoapUI设置自己的代理来监听通过它发送的所有HTTP流量。当通过REST客户端创建的一个请求,SoapUI能够提取细节并构建一个样例请求列表。这时,当您完成录制时,SoapUI使用请求列表生成测试工件,方法与请求来自其他源(例如WADL)的方式相同。

    在检查生成的REST项目时,我们可以看到REST发现为从现成的服务中收集样本请求提供了有用的手段。你将需要创建Assertions且/或组织生成TestSteps。当涉及重构测试时,REST发现功能是非常有用的,也许围绕着一个代码优先的服务,就像上面的例子。它也是特别有用的对于服务不提供一个WADL或者相似定义,因此不能使用其他SoapUI方法生成测试请求。


以上是关于使用REST discovery(pro)生成SoapUI测试的主要内容,如果未能解决你的问题,请参考以下文章

WebApiClient鐨凷teeltoeOSS.Discovery鎵╁睍

Qt下如何编译库

NYT | Microsoft Surface Pro X Review: Powerful but So-So Tablet

在 Eclipse 中将 .so lib 添加到 .pro 文件中。 C++/Eclipse/Linux

onvif client Discovery实现

Zabbix监控qemuKVM进程-low_level_discovery