原文:ReadyAPI 教程和示例(一)

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

本篇使用的 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. ReadyAPI教程和示例(一)

    声明:如果你想转载,请标明本篇博客的链接,请多多尊重原创,谢谢! 本篇使用的 ReadyAPI版本是2.5.0 通过下图你可以快速浏览一下主要的ReadyAPI中SoapUI功能: ​ 一.创建一个功 ...

  2. ReadyAPI 教程和示例(二)

    声明:如果你想转载,请标明本篇博客的链接,请多多尊重原创,谢谢! 本篇使用的 ReadyAPI版本是2.5.0 接上一篇: 4.修改SoapUI测试 本节将演示如何为测试用例添加测试步骤以及更改请求参 ...

  3. 【转】C#正则表达式教程和示例

    [转]C#正则表达式教程和示例 有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就能看到好几个正则表达式的帖子,那段时间借助论坛以及Wrox Press出版的<C#字符串和正则表达式参 ...

  4. Terraform入门教程,示例展示管理Docker和Kubernetes资源

    我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 简介 最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人. Terraform系列文章如下: T ...

  5. 微信小程序 教程及示例

    作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有,转载请联系作者获得授权.微信小程序正式公测, ...

  6. Java正则表达式教程及示例

    本文由 ImportNew - ImportNew读者 翻译自 journaldev.欢迎加入翻译小组.转载请见文末要求. [感谢 @CuGBabyBeaR  的热心翻译.如果其他朋友也有不错的原创或 ...

  7. 【译】Rust宏:教程与示例(二)

    原文标题:Macros in Rust: A tutorial with examples 原文链接:https://blog.logrocket.com/macros-in-rust-a-tutor ...

  8. 【转载】Lucene.Net入门教程及示例

    本人看到这篇非常不错的Lucene.Net入门基础教程,就转载分享一下给大家来学习,希望大家在工作实践中可以用到. 一.简单的例子 //索引Private void Index(){    Index ...

  9. C#正则表达式教程和示例

    有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就能看到好几个正则表达式的帖子,那段时间借助论坛以及Wrox Press出版的<C#字符串和正则表达式参考手册>学习了一些基础的知 ...

随机推荐

  1. 【集合!】 20140416 && 20140417集训 总结

    mobius的奇怪演绎 当我第一眼看见题目中出现mobius的时候,我唯一想到的就是某科学家对于n维空间的阐述与思考,同时还提出了一个mobius环.而这道题中的环就是mobius环咯.不过其实这是一 ...

  2. poi之Excel上传

    poi之Excel上传 @RequestMapping(value = "/import", method = RequestMethod.POST) public String ...

  3. bzoj1217: [HNOI2003]消防局的设立 [树形dp]

    Description 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能够通过道路到达,所以所有的基地形成了 ...

  4. 使用VC6.0编译C++代码的时候报错:fatal error C1071: unexpected end of file found in comment(Mark ZZ)

    fatal error C1071: unexpected end of file found in comment(Mark ZZ) 今天在一论坛上看到一人发帖: 『最近遇到一个奇怪的问题,代码中的 ...

  5. 码云挂了,无法访问gitee

    解决方式1.修改dns为114.114.114.114 2.hosts文件添加212.64.62.174   gitee.com

  6. github如何用浏览器直接打开项目里的html页面?

    very easy 第一步 点击html页面 第二步,在地址栏前加 htmlpreview.github.io/?就可以访问

  7. 基于Netty的RPC架构学习笔记(六):netty5案例学习

    文章目录 netty5服务端入门案例 netty5客户端入门案例 单客户端多连接程序 知识普及 线程池原理图 对象池原理图 对象组原理图 结论 理论结合实际 开干开干 总结 netty5服务端入门案例 ...

  8. word 文献标题自动编号

    来自:word中自动编号和多级编号的使用 选中标题或段落,点击鼠标右键,在编号菜单内选择适合的自动编号样式.或者在窗口上方的“开始”选项卡中选择编号样式.如果对已选的编号样式不满意,可以照以上方法直接 ...

  9. QTableWidget学习

    一.这次项目需要用到,可以在tablewidget中添加item,并且可以通过鼠标的右键选项进行一些打开.删除等操作. 1.在构造函数中定制右键菜单选项 ui.tableWidget_2->se ...

  10. <面试题>学习面试

    1.代码中要修改不可变数据会出现什么问题? 抛出什么异常? 代码不会正常运行,抛出 TypeError 异常. # 比如修改元祖.会报错 TypeError: 'tuple' object does ...