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 教程和示例(一)的更多相关文章
- ReadyAPI教程和示例(一)
声明:如果你想转载,请标明本篇博客的链接,请多多尊重原创,谢谢! 本篇使用的 ReadyAPI版本是2.5.0 通过下图你可以快速浏览一下主要的ReadyAPI中SoapUI功能: 一.创建一个功 ...
- ReadyAPI 教程和示例(二)
声明:如果你想转载,请标明本篇博客的链接,请多多尊重原创,谢谢! 本篇使用的 ReadyAPI版本是2.5.0 接上一篇: 4.修改SoapUI测试 本节将演示如何为测试用例添加测试步骤以及更改请求参 ...
- 【转】C#正则表达式教程和示例
[转]C#正则表达式教程和示例 有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就能看到好几个正则表达式的帖子,那段时间借助论坛以及Wrox Press出版的<C#字符串和正则表达式参 ...
- Terraform入门教程,示例展示管理Docker和Kubernetes资源
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 简介 最近工作中用到了Terraform,权当学习记录一下,希望能帮助到其它人. Terraform系列文章如下: T ...
- 微信小程序 教程及示例
作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有,转载请联系作者获得授权.微信小程序正式公测, ...
- Java正则表达式教程及示例
本文由 ImportNew - ImportNew读者 翻译自 journaldev.欢迎加入翻译小组.转载请见文末要求. [感谢 @CuGBabyBeaR 的热心翻译.如果其他朋友也有不错的原创或 ...
- 【译】Rust宏:教程与示例(二)
原文标题:Macros in Rust: A tutorial with examples 原文链接:https://blog.logrocket.com/macros-in-rust-a-tutor ...
- 【转载】Lucene.Net入门教程及示例
本人看到这篇非常不错的Lucene.Net入门基础教程,就转载分享一下给大家来学习,希望大家在工作实践中可以用到. 一.简单的例子 //索引Private void Index(){ Index ...
- C#正则表达式教程和示例
有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就能看到好几个正则表达式的帖子,那段时间借助论坛以及Wrox Press出版的<C#字符串和正则表达式参考手册>学习了一些基础的知 ...
随机推荐
- magento中的getBaseUrl函数
(转)本文地址:http://www.popo4j.com/magento/mage_getbaseurl.html 在magento中如果要获取JS,media,skin目录,我们可以使用magen ...
- 在sublime上安装markdown插件(win10)
1.markdown插件安装 --ctrl+shift+p --在命令框中选中 package control:install package 选中它 按回车 --在命令框中输入 markdown, ...
- Springboot文件上传限制
#100,000,000 100M spring.servlet.multipart.max-file-size = 100000000 spring.servlet.multipart.max-re ...
- JAVA单线程和多线程的实现方式
1.java单线程的实现 一个任务一个人独立完成 public class SingletonThread { @SuppressWarnings("static-acce ...
- HDU-6070 Dirt Ratio(二分+线段树+分数规划)
目录 目录 思路: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 目录 题意:传送门 原题目描述在最下面. 求\(sum/len\)最小值.\(sum\)是一段区间内不同数字的 ...
- 如何优雅的使用Objects.requireNonNull(T obj, String message)定制你的NPE异常
IDEA中习惯跟踪源码实现逻辑,多次碰到Objects.requireNonNull(T obj)这个方法,改方法主要用于提早判断对象是否为空,以便更早的抛出NPE 平时小组开发中强调程序健壮性,不允 ...
- hbase 集群搭建(公司内部测试集群)
我用的是cdh4.5版本:配置文件:$HBASE_HOME/conf/hbase-env.shexport JAVA_HOME=$JAVA_HOMEexport JAVA_HOME=/home/had ...
- git ssh使用公钥授权怎么都不通过
前提: 1.客户端生成了id_rsa.pub和id_rsa 2.服务端在.ssh/authorized_keys也加入了客户端的id_res.pub 3./etc/ssh/sshd_config开启了 ...
- 春节跳槽最新Java面试题及答案整理
今天大部分码农同学已经上班了吧,最近也是跳槽人才流动的高峰期,拿了年终奖,找找更好的机会. 小编也面了几家公司了,回来整理下面经分享给大家做个参考.有很多,暂时先分享20道,后续更多会陆续整理分享出来 ...
- 本地 win7 与虚拟机Centos7 ping互通和Centos7 上网设置
VM 12 安装虚拟机我就不表示了 很简单网上找找 一 .虚拟机设置 1.修改使用了 VMWare 12 虚拟机,Oracle VM 用得有点晕 2.配置VM 的NET环境 3.在VMware虚拟机任 ...