声明:如果你想转载,请标明本篇博客的链接,请多多尊重原创,谢谢!

本篇使用的 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中的请求测试步骤的基础。

在项目中,用户可以根据需要为请求创建尽可能多的模板。

用户还可以从请求编辑器运行请求以检查此请求是否正常工作,但请注意这将是单个请求运行。要模拟真实场景,用户需要运行包含多个请求的测试用例。

ReadyAPI 教程和示例(一)相关推荐

  1. Koa入门教程之示例应用

    Koa入门教程之示例应用 Koa范例 一个包含一些小示例的存储库,这些示例说明了如何使用Koa创建Web应用程序和其他HTTP服务器. 源码地址 https://github.com/koajs/ex ...

  2. vue form validate 多个input_Vue表单校验插件Vuerify使用详细教程及示例

    点击右上方红色按钮关注"web秀",让你真正秀起来 前言 表单校验,在开发中是非常常见的,为了防止用户误操作,填写错误数据,亦或是防止用户恶意提交数据等,都需要前端同学来做一些简单 ...

  3. 条码生成 SDK - Zint 教程及示例

    Zint 教程及示例 Introduction Zint 是一款优秀的开源的条码生成工具,它跨平台,它支持超过50种条码,囊括目前市场上主流的条码类型,包括 QR.PDF417 等等.Zint 的源码 ...

  4. web前端开发示例_40多个针对Web开发人员HTML5教程和示例

    web前端开发示例 HTML 5 offers a lot of new features to help web developers. In the last few days, I have r ...

  5. JDK8系列之Lambda表达式教程和示例

    JDK8系列之Lambda表达式教程和示例 1.Lambada 表达式简介 Lambda 表达式是一种匿名函数,但对Java中的Lambda表达式而已并不完全正确,简单来说,Lambda表达式是一种没 ...

  6. Awk打印教程及示例

    Awk is a stream type programming language. Awk can edit given text ant provided new text according t ...

  7. aws beanstalk mysql_教程和示例 - AWS Elastic Beanstalk

    教程和示例 特定于语言和框架的教程分布在<AWS Elastic Beanstalk 开发人员指南>中.新的和更新的教程在发布后将添加到此列表.首先显示最近更新. 这些教程面向中等水平的用 ...

  8. java注解教程 pdf_Java注解教程和示例

    Java注解教程和示例 塔尼亚·辛格 Java注解使我们可以将元数据信息添加到源代码中,尽管它们不是程序本身的一部分.注解是从JDK 5添加到Java的.注解对其注解的代码的操作没有直接影响(即,它不 ...

  9. ejb 示例 2018_Java EE EJB拦截器教程和示例

    ejb 示例 2018 在此示例中,我们将看到如何在EJB中使用拦截器并使用简单的Web应用程序对其进行测试. 1.简介 顾名思义,当您想拦截对EJB方法的调用时,将使用拦截器. 如果为Bean声明一 ...

最新文章

  1. java直接打开word_Java
  2. ASP .NET 如何在 SQL 查询层面实现分页
  3. 生产者与消费者(二)---await与 signal
  4. C# SQLite事务操作方法分析
  5. postgresql返回行数_怎么优化你的SQL查询?以PostgreSQL为例
  6. Effective Java~57. 将局部变量的作用域最小化
  7. 中国移动云智融合峰会 | 1+1>2, 引领创新发展
  8. Linux系统编程35:多线程之如何理解Linux中的线程以及轻量级进程LWP
  9. 将本地代码同步到远程github上
  10. linux -- 个人笔记
  11. C语言基础5-预编译部分知识(#include+.h文件和.c文件的区别
  12. #PYTHON#数据模型
  13. 成功解决微信浏览器实现自动下载功能
  14. Nlp预处理方法(BPE Byte pair encoding、Normalization、Lemmatisation、Stemming…)
  15. ios开发读取剪切板的内容_iOS开发之详解剪贴板
  16. linux下木马程序病原体的制作和运行
  17. 植物墙,室内装饰的新创意
  18. GIF动态图制作工具(免费),附教程
  19. 微信营销系统(第三方微信平台)之微分销模块拓展
  20. 制作官方 win10 U盘启动盘

热门文章

  1. 最大公约数与最小公倍数( 初学Java 类与对象 )
  2. fone出席CXO智库峰会,分享“老板需要什么样的全面预算?”
  3. 最新VIN(车辆识别码)解析
  4. (转帖)物流行业:JIT,VMI模式
  5. 精彩回顾 | 阿里云APM城市技术行·深圳站
  6. 帆软报表写switch函数
  7. 强化学习RL学习笔记2-概述(2)
  8. Tslib移植与分析
  9. Linux下wps文档结构图,wps文字的文档结构图
  10. Linux云计算工程师路线