声明:如果你想转载,请标明本篇博客的链接,请多多尊重原创,谢谢!
本篇使用的 ReadyAPI版本是2.5.0
通过下图你可以快速浏览一下主要的ReadyAPI中SoapUI功能:
一、创建一个功能测试
使用ReadyAPI用户可以轻松执行Web服务的功能、负载和安全性测试。用户还可以创建服务的本地虚拟副本,以便在真实服务上线之前运行测试。
本篇描述了如何在SoapUI中创建基本功能测试。我们将从文件加载Web服务定义,为一个操作创建测试,运行此测试,并使用断言来验证测试结果。
本篇包含以下内容:
?1、基本概念
?2、创建功能测试
?3、探索测试Project项目
?4、修改SoapUI测试
?5、运行SoapUI测试
?6、添加断言
1、基本概念
要使用ReadyAPI创建和运行测试,用户需要对Web 服务技术和测试原则有一个大致的了解。这个主题很大,并且它们不属于ReadyAPI文档范围,用户可以在网上找到许多解释这些技术的优秀资源。在这里我们只是编写了一个概述,以帮用户更快地开始使用ReadyAPI。
1.1、基本知识
???? Web服务是客户端/服务器应用程序,其中客户端和服务器通过HTTP协议或基于HTTP的其他协议在Web上交换数据。此类应用的示例包括导航软件、在线银行客户端、天气监视系统等。
???? 客户端发送请求的URL包含:被测试服务器(主机)的信息,用于通信的端口号以及请求的服务器资源,例如页面或文件路径:
客户端发送给服务器的请求报文具有以下结构:
起始行:指定HTTP方法的起始行(如GET,POST或DELETE),目标URL和协议版本。
???????? 消息头:传递额外信息,如预期的响应数据格式,或请求数据的大小和格式。
???????? 消息体:(可选)某些请求类型不使用它。
响应报文有类似的结构:
???????? 起始行:带响应代码和消息,一些常用代码是200 OK(成功)、404 Not Found(失败,找不到请求的资源)和504(服务器内部错误)。
???????? 消息头:描述响应数据格式并包含其他值(如cookie,服务器信息等)。
???????? 消息体:响应主体,包含请求数据的数组、图像、文件等。
请求和响应消息体的常用格式是JSON和XML。
客户端发送到服务器执行的命令称为动作、方法或操作,具体取决于服务体系结构样式(SOAP或REST,请参见下文)。
Web 服务的两种流行架构风格是SOAP和REST:
???????? SOAP服务使用通过HTTP构建的SOAP协议。这些服务使用POST类型的HTTP请求,并在请求和响应主体中以XML格式传递数据。所有请求都转到同一个URL,要执行的操作由请求正文中的特殊请求消息头或XML元素指定。
???????? SOAP服务使用WSDL定义,严格描述服务支持的操作、参数类型和数据格式。
???????? REST服务通过HTTP工作。要执行的操作由HTTP方法和请求的资源名称的组合设置。例如在线宠物商店的RESTful服务可以具有/pets资源。POST http://petstore.io/pets请求可以将宠物信息添加到数据库,GET http://petstore.io/pets请求可以检索有关可用宠物的信息。
???????? REST服务定义有好几种格式:OpenAPI(Swagger)、WADL和其他一些格式。但是一些开发人员根本不为其RESTful服务提供任何定义。
1.2、如何测试Web服务
要确保Web服务正常运行,请在其上面创建并运行功能测试。
这些测试将请求发送到服务器并验证其响应,在ReadyAPI中用户可以在SoapUI中创建功能测试。尽管名称叫做“SoapUI”,但是用户可以在其上面为SOAP和REST服务创建测试。用户可以在特殊编辑器中轻松模拟请求并自定义其参数:
要验证响应数据和响应代码,请向测试请求添加断言:
确定服务器是否正常工作的最简单方法是检查响应码。200 OK通常表示服务器已成功处理请求。
在现实生活中客户端通常向服务器发送一系列请求。例如对于在线商店,第一个请求可用于登录,后续请求用于购买某些产品。在SoapUI中可以通过将请求和其他测试步骤组织到测试用例(Test case)中来模拟这种真实行为:
多个测试用例组成一个测试套件(Test suite),而测试套件又属于测试项目(Project),下一节我们会创建一个测试项目并为其添加一个自动功能测试。
2、创建功能测试
想要在ReadyAPI中测试SOAP服务需要此服务的WSDL定义。该定义描述了服务的操作、请求和响应的格式。ReadyAPI使用此信息来模拟请求。
REST服务也可以有定义。最常用的定义格式是OpenAPI(以前称为Swagger),WADL和其他格式。用户可以在ReadyAPI中加载这些定义,并根据这些定义中的信息创建测试用例。但在一般情况下REST服务可能根本没有定义。用户可以通过记录对服务URL的请求(这称为API发现)在ReadyAPI中为此类服务创建测试。ReadyAPI将根据跟踪的服务获取有关请求和响应参数的信息。但是这种“观察”数据不如定义中的信息那么精确,因此我们建议在可能的情况下使用定义。
这里我们将以宠物商店Web服务为示例创建一个测试。这是一个REST服务,用户可以在这里找到它的定义:
http://petstore.swagger.io/v2/swagger.json
该定义具有OpenAPI 2.0(Swagger)格式。这里用户现在无需下载定义,ReadyAPI将在我们创建功能测试后执行此操作。具体创建过程如下:
1、切换到SoapUI开始页面,然后单击Create a test from an API Definition:
2、在后续向导中指定Web服务定义的URL。在我们的例子中,它是http://petstore.swagger.io/v2/swagger.json,然后点击Next,继续下一步操作;
3、选择是否要为已添加的定义创建新项目,或将其添加到现有项目中。单击“Next”继续。
????注意:如果工作区中没有打开任何项目向导将跳过此步骤。在这种情况下ReadyAPI将创建一个新项目并向其添加新测试。
4、这一步让用户可以选择要添加到测试的断言。ReadyAPI将选定的断言添加到新的测试请求中。
????断言验证用户的API按预期工作,在本教程的后面部分我们将更详细地描述它们。但现在,清除掉勾选的选项并单击“Next”。
5、选择是否要为Web服务定义的所有操作都有一个测试用例,或者使用多个测试用例(每个操作一个)。我们使用后一个选项,单击“Finish”以创建测试。
????6、ReadyAPI将创建一个测试项目并向其添加测试用例。
????之后它将再显示一个对话框,用户可以在其中选择“运行创建的测试”或“向其添加数据源”。在本篇中我们不会使用这些选项,关闭此对话框:
3、探索测试Project项目
经过第2步的操作用户可以在左侧的“导航器”面板中看到创建的测试项目:
该项目有多个测试用例,它们都被分组到一个测试套件中,而测试套件又属于该项目。在我们的例子中每个测试用例只有一个请求测试步骤,在现实生活中用户的测试用例通常会有多个步骤:
我们将在本教程的下一步中解释如何向测试用例添加请求。
要浏览该服务请切换到ReadyAPI的“Projects”页面,在左侧的导航面板中用户将看到服务资源和请求的树状结构:
最顶层的节点对应于Web服务,其子节点对应资源,资源节点依次具有子节点。这些子节点对应为Webservice规范中的资源定义的请求。
使用右侧的编辑器查看所选服务,资源或请求的参数。
某些资源定义了多个请求,这些请求通常具有不同的HTTP方法,其他一些资源只有一个请求。用户在Projects的树结构中看到的请求充当模板请求。例如用户可以在此处在每个请求中设置不同的参数,然后将这些请求用作SoapUI中的请求测试步骤的基础。
在项目中,用户可以根据需要为请求创建尽可能多的模板。
用户还可以从请求编辑器运行请求以检查此请求是否正常工作,但请注意这将是单个请求运行。要模拟真实场景,用户需要运行包含多个请求的测试用例。