zoukankan      html  css  js  c++  java
  • SoupUI 测试入门

    Download link: https://www.soapui.org/downloads/soapui/

    信息来自网络,侵权删除!!

    1 背景介绍

    SoupUI分为开源社区版和企业收费版,日常工作,开源版本足够使用

    Soapui可以对webservice,REST and http 接口进行测试,知识点背景介绍:

    1.1 SOAP 和 REST接口

    WebService 三要素

    SOAP、WSDL(WebServicesDescriptionLanguage)、UDDI(UniversalDescriptionDiscovery andIntegration)之一, soap用来描述传递信息的格式, WSDL 用来描述如何访问具体的接口, uddi用来管理,分发,查询webService 。SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。SOAP使用基于XML的数据结构和超文本传输协议(HTTP)的组合定义了一个标准的方法来使用Internet上各种不同操作环境中的分布式对象。

    SOAP -- Simple Object Access Protocol)

    SOAP 顾名思义,是一个严格定义的信息交换协议,用于在Web Service中把远程调用和返回封装成机器可读的格式化数据。事实上SOAP数据使用XML数据格式,定义了一整套复杂的标签,以描述调用的远程过程、参数、返回值和出错信息等等。而且随着需要的增长,又不得增加协议以支持安全性,这使SOAP变得异常庞大,背离了简单的初衷。另一方面,各个服务器都可以基于这个协议推出自己的API,即使它们提供的服务及其相似,定义的API也不尽相同,这又导致了WSDL的诞生。WSDL

    (Web Service Description Language) 也遵循XML格式,用来描述哪个服务器提供什么服务,怎样找到它,以及该服务使用怎样的接口规范,简言之,服务发现。现在,使用Web Service的过程变成,获得该服务的WSDL描述,根据WSDL构造一条格式化的SOAP请求发送给服务器,然后接收一条同样SOAP格式的应答,最后根据先前的WSDL解码数据。绝大多数情况下,请求和应答使用HTTP协议传输,那么发送请求就使用HTTP的POST方法。

    REST -- Representational State Transfer 直接翻译:表现层状态转移。

    形式上应该表述为客户端通过申请资源来实现状态的转换,在这个角度系统可以看成一台虚拟的状态机。REST应该满足这样的特点:

    1. REST描述的是在网络中client和server的一种交互形式;REST本身不实用,实用的是如何设计 RESTful API(REST风格的网络接口);

    2. Server提供的RESTful API中,URL中只使用名词来指定资源,原则上不使用动词。“资源”是REST架构或者说整个网络处理的核心。比如:

    · http://api.qc.com/v1/newsfeed: 获取某人的新鲜;

    · http://api.qc.com/v1/friends: 获取某人的好友列表;

    · http://api.qc.com/v1/profile: 获取某人的详细信息;

    3. 用HTTP协议里的动词来实现资源的添加,修改,删除等操作。即通过HTTP动词来实现资源的状态扭转:

    · GET 用来获取资源,

    · POST 用来新建资源(也可以用于更新资源),

    · PUT 用来更新资源,

    · DELETE 用来删除资源。

    比如:

    · DELETE http://api.qc.com/v1/friends: 删除某人的好友 (在http parameter指定好友id)

    · POST http://api.qc.com/v1/friends: 添加好友

    · UPDATE http://api.qc.com/v1/profile: 更新个人资料

    4. Server和Client之间传递某资源的一个表现形式,比如用JSON,XML传输文本,或者用JPG,WebP传输图片等。当然还可以压缩HTTP传输时的数据(on-wire data compression)。

    5. 用 HTTP Status Code传递Server的状态信息。比如最常用的 200 表示成功,500 表示Server内部错误等。

    说到底,REST只是一种架构风格,而不是协议或标准。但这种新的风格(也许已经历史悠久?)对现有的以SOAP为代表的Web Service造成的冲击也是革命性的,因为它面向资源,甚至连服务也抽象成资源,因为它和HTTP紧密结合,因为它服务器无状态。

    RESTSOAP的区别

    因为SOAP并不假定传输数据的下层协议,因此必须设计为能在各种协议上运行。即使绝大多数SOAP是运行在HTTP上,使用URI标识服务,SOAP也仅仅使用POST方法发送请求,用一个唯一的URI标识服务的入口。

    举一个图书馆在线查询管理系统为例,服务提供者必须为每一本书提供一个内部标识,然后可能定义一个listBooks操作来返回一系列图书,一个getBook操作来返回指定的图书,一个createBook操作来向数据库加入新增的图书,一个deleteBook操作来删除作废的图书,每个操作都有各自的参数,尤其是用内部标识来标识操作的图书。这种设计被诟病之处,在于deleteBook操作也要用POST方法来发送,而其实HTTP协议有更和逻辑的DELETE方法可用。REST正是这样设计的,REST为每一个资源(此处是图书)指定一个唯一的URI,而用HTTP的4种方法GET、POST、PUT、DELETE直观地表示获取、创建、更新和删除图书。同时图书集合也是和单本的图书不同的资源,如果用/books来代表图书列表,/books/ID来代表标识为ID的图书,那么对/books的GET操作就代表返回整个图书列表,对/books/ID的DELETE操作代表删除指定的图书,等等

    SOAPSimple Object Access Protocol - 简单对象访问协议)定义了一种强类型的消息传递框架,该框架高度依赖XML和schemas。

    RESTRepresentation State Transfer - 表示状态转移)是一种架构样式风格,它利用了当下被广泛采用的技术(特别是HTTP),本身却不创建任何新的标准。REST可以将数据结构序列化为XML,YAML或任何其他机器可读格式,但通常首选JSON。

    2 Sample讲解

    打开soapui

    新建工程:Create empty project --- http

    New SOAP project ---- SOAP, Simple Object Access Protocol

    New REST project ----- REST

    clip_image001

    开发将代码发布为webservice,测试会拿到一个测试地址,类似: http://IP:PORT/ws/services

    clip_image002

    点击wsdl

    http://IP:PORT/ws/services?wsdl

    clip_image003

    根据以上信息,判定为SOAP接口项目, initial wsdl 为项目的接口地址

    clip_image004

    项目创建后,将自动解析wsdl内服务,并生成request请求,双击request, 左侧为请求,右侧为响应

    clip_image005

    在request body中填入对应的参数,即可进行简单测试验证测试验证

    clip_image006

    默认情况下,请求和响应都是xml格式,可以选择Raw查看更多信息

    创建test suite:选中项目--右键—New TestSuite

    clip_image007

    在testsuite下新建 test case

    clip_image008

    两种方式可以新建测试步骤,右键添加步骤 或 在请求中右键选择,将其添加到test case

    clip_image009------》 clip_image010

    在test case 中添加断言

    clip_image011

    批量运行cases, 分串行和并行执行,并行模式下不支持查看log,有点在于回归测试比较方便。

    clip_image012

    3 SOAP接口测试

    完成webservice接口测试,是基于SOA理念,采用XML+SOAP+HTTP协议来实现接口规范。

    操作实现: new soap project --- 入参 --- 变量 --- 断言 --- 添加到testcase

    如果只知道地址和服务名,那么尝试在浏览器中输入地址服务+?wsdl,如果可以解析到xml 内容,那么就是标准的webservice接口,可以对其进行相关的测试

    clip_image013

    New – new soap project -- 填入名称和wsdl地址,即上一步可以解析的wsdl地址,可以同时勾选上chuangjian sample request 和 Testsuite

    clip_image014

    项目创建后,对test case 增加断言,这里增加一个xpath 断言 或简单使用Contains

    Xpath

    clip_image015

    Contains 断言,可以使用正则表达试

    clip_image016

    对接口压力测试

    clip_image017

    效果示例:

    clip_image018

    小结:

    Test suite中只会执行相关的功能测试,而不会执行性能测试。

    性能测试需要单独的手动执行;

    对于soap测试,重点难点在于找到服务,有了服务地址之后,使用soapui测试就比较简单

    参数选择:服务解析会列出所有的参数,入参分为可选、必选和非必选参数,应根据测试需要选择参数:

    · 传空值

    · 直接删掉对象

    4 REST 接口测试

    Representational State Transfer --- 表现层状态转移

    REST中的资源所指的不是数据,而是数据和表现形式的组合。资源标识符URI (Uiform Resource Identifier),不管是图片、word还是视频文件,甚至是虚拟的服务,也不管是xml、txt还是其他格式,全部通过URI对资源进行唯一的标识。

    URL--- Uniform Resource Locator,统一资源定位器,是完整的访问接口,而URI是域名之后的部分。

    如:

    URL: https://weather.com/zh-CN/weather/today/l/CHXX0008:1:CH?Goto=Redirected

    URI: /zh-CN/weather/today/l/CHXX0008:1:CH?Goto=Redirected

    创建项目

    clip_image019

    Soupui根据地址自动解析

    clip_image020

    根据需求添加新的资源

    https://weather.com/zh-CN/weather/today/l/CHXX0013:1:CH?Goto=Redirected

    clip_image021

    添加参数

    clip_image022

    查看

    WADL(Web Application Description Language)用来描述REST接口。WADL就像是WSDL的REST版,随着REST被应用到复杂的领域,SOAP的影子无处不在。

    clip_image023

    小结:

    可以根据需求,将资源定义为不同的method请求

    WSDL和WADL区别:

    1.WSDL是面向接口的描述,WADL是面向资源的描述

    2.WADL是基于HTTP的,WSDL 2.0是接口独立的。

    5 HTTP接口测试

    创建http项目

    File – new empty project--- add test suite – test step – add steps – HTTP request

    clip_image024

    获取请求,打开页面,使用浏览器的抓包功能F12 network获取参数

    clip_image025

    样式:

    clip_image026

    抓取login信息:

    clip_image027

    这一步需要获取两个信息:content type header 和 jumpurl

    clip_image028

    复制到soupui,默认情况下会自动识别 media type 类型,如果需要手动添加,则从上一步获取的信息中copy

    clip_image029

    手动添加header,添加user-agent

    clip_image030

    手动添加user-agent 或使用全局添加

    clip_image031-------clip_image033

    运行不存储login信息,因为接口之间默认没有关联关系,如果想要保存login信息, 勾选 maintain HTTP session,这样可以在页面中看到登录信息clip_image034

    发布文章:这里content-type以及内容已经改变,抓包新内容填充

    clip_image035

    6 关联实现

    实现用户的登录登出

    clip_image036

    实际应用场景中,需要将auth获取的token参数用于login 和 logout

    clip_image037

    如何实现关联:tempjson 和token, 这里的tempjson 是与soupui关联参数相关,因为响应中xml嵌套了json格式

    clip_image038

    正在实现关联的参数是:property transfer

    clip_image039

    Step1

    clip_image040

    Step2

    clip_image041

    Step3 login and logout 都使用变量引用, 这里返回的是json和xpath

    clip_image042

    如果返回的是纯字符串,则需要使用 Groovry script,取名为getverify

    clip_image043

    在getverify中写入脚本,先添加Properties,里面引入也给变量verify,初始为空值。

    clip_image044

    然后,编写getverify脚本

    clip_image045

    参数化fatie, verify值将自动更新。

    clip_image046

    方式二:

    修改变量为全局变量

    clip_image047

    更改调用参数

    clip_image048

    ***************用努力照亮现实的梦!***********************
  • 相关阅读:
    UpdatePanel 脚本失效的解决
    DataTable 中的查询、排序及分页(c#)
    如何让Gridview在没有数据的时候显示表头
    Jquery 对.net服务器控件RadioButtonList进行赋值和取值的操作
    给Repeater控件里添加序号的5种方法
    C#缓存absoluteExpiration、slidingExpiration两个参数的疑惑
    筛选DataTable数据的方法
    CSS前端基础应用实践
    js实现页面自动刷新
    什么是MVC
  • 原文地址:https://www.cnblogs.com/orange2016/p/14524152.html
Copyright © 2011-2022 走看看