soapUI使用教程[通俗易懂]

soapUI使用教程[通俗易懂]SoapUI使用1.什么是soapUI由于Web服务是被程序调用的,一般不会提供界面让最终用户或测试人员直接使用,soapUI是针对这种情况开发的一个工具,用户可以在soapUI中通过简单的操作完成复杂的测试。目前我们系统中电子渠道接口、充值卡接口都是用WebService实现的,因此需要用到SoapUI进行测试。SoapUI不仅可以简单地执行测试,而且可以自动运行已经准备

大家好,又见面了,我是你们的朋友全栈君。SoapUI使用

1. 什么是soapUI

由于 Web 服务是被程序调用的, 一般不会提供界面让最终用户或测试人员直接使用,soapUI是针对这种情况开发的一个工具,用户可以在 soapUI 中通过简单的操作完成复杂的测试。

目前我们系统中电子渠道接口、充值卡接口都是用WebService实现的,因此需要用到SoapUI进行测试。SoapUI不仅可以简单地执行测试,而且可以自动运行已经准备好的测试用例,另外它也有性能测试的功能,虽然不及Loadrunner强大,但相对比较简单易用。下文中主要介绍它的基本功能,不包括性能测试的部分。

2. 怎样用soapUI测试Webservice 接口

安装过程比较简单,大家从ftp://180.200.3.233/SoapUI/ 上下载安装程序安装就可以了。

先从创建项目开始,菜单——文件——创建项目:

 

说明:

Create sample requests for all operations?:为每个接口创建一个请求的例子

Creates a TestSuite for the imported WSDL or WADL:为WSDL 或WADL 创建一个测试包

Create a Web Service Simulation of the imported WSDL:为WSDL创建一个模拟的服务端

Initial WSDL/WADL:指定一个WSDL/WADL的路径,可以是本地或网络URL。这里我们填写232 的充值卡接口路径:

http://180.200.3.232:8080/interf/services/ServiceForRMP?wsdl

然后点击 [OK] 到下一步生成初始的测试用例:

 

说明:

One TestCase for each Operation:每个接口创建一个用例 

Single TestCase with one Request for each Operation:创建一个用例包含每个接口对应的请求

Use existing Requests in Interface:使用已有的请求

Create new empty requests:创建一个空的请求

Generates a default LoadTest for each created TeseCase:每个用例生成一个负责测试

确定后进入下一步,生成MockService。

 

Path 是生成的本地服务路径,Port是端口。

Starts the MockService immediately 选项可选可不选。

完成之后会在左边的树形结构中生成3部分:

 

2.1. ServiceForRMPSoapBinding

创建项目的时候我们选择了Create sample requests for all operations,所以每个接口都会自动创建一个请求,双击它就可以打开编辑面板,左边是请求内容,右边是响应内容。

把每个节点的“?”替换成需要的内容,点击绿色的箭头发送就可以了。右边的内容就是服务器返回的结果,同时可以看到系统后台有相同的日志显示。

 

发送后返回的内容:

 

2.2. ServiceForRMPSoapBinding TestSuite

TestSuite 是测试用例的集合,且里面每个测试用例包含测试步骤和负载测试。负载测试可以测试响应时间,统计测试结果。这里不讨论。

在创建时已经自动给每个接口生成了一个发送请求的测试步骤,如图,同样,初始的节点内容是“?”,要修改。

 

除了这个步骤,还可以加入其它步骤,它提供了几种用例步骤,包括:

 

简单说明一下其中几种步骤:

Test Request:发送一个soap请求

Groovy Script:用Groovy脚本定义的步骤。Groovy 是一种脚本语言,语法跟java类似。

Properties:定义变量/属性

Property Transfer:传值。可以把指定的属性的值传给另一个属性,也可以给请求中节点赋值。

Conditional Goto:跳转,符合一定条件就跳到第N步

Delay:延迟,可以调整用例执行时间,模拟人工思考时间。

Run TestCase:在用例中执行另一个用例。

下面举一个简单的例子来说明:

 

(这个用例包含9个步骤,但只看这前3个)

用例中第一步:Properties(2)。这里定义了两个变量,CAID 和SerialNo。

 

第二步:Property Transfer,把上面定义的变量值传给下一步的recharge 请求的相应节点。图中所示的是设置Property Transfer的面板。

 

上面是值的来源,选择上一步定义的变量,下面是目标,选择下一步的recharge 请求,property属性为Request。因为整段请求XML是作为一个属性保存在这个步骤的。

下面的空白框要指明传给哪个节点,这里默认用的是Xpath语言。Xpath是一种对XML格式文档操作的语言,功能很多,大家可以自行研究。

这里的“//customerId”意思是在全文中寻找这个名称的节点。

这样就可以把CAID传到充值请求中的customerId字段,设置好之后可以点击上方的绿色箭头(第一个)执行这个步骤,然后可以看到下一步的recharge请求中对应字段已经改变。

第三步:recharge。这一步是发送请求。

这里要说明是添加断言,也就是检查点。如图所示,这个步骤包含2个检查点。

 

点击下面的Assertions 或上方的 按钮可以添加断言。

soapUI定义了多种断言类型:

 

简单说明其中几种:

Not SOAP Fault:不是“失败响应”。

SOAP Response:是一个SOAP 响应。

Contains:响应内容包含的文本。

XPath Match:指定XML节点的内容。

SOAP Fault:是一个“失败响应”。

Not Contains:响应内容不包括哪些文本。

例子中用了Contains 和XPath Match。

Contains比较简单,只要指定包含的文本内容即可,介绍一下XPath Match:

 

这里上面的部分指明了要检查哪个节点,//multiRef[@id] 的意思是:在全文中寻找名称为multiRef ,并且有一个属性名称是id 的节点。这个节点是返回结果编码。下面的“0” 是这个节点的期望值。0表示充值成功。

运行用例

先设置一下运行属性。右键点击一个用例——options:

 

Abort on Error 选项,发生错误时终止运行,如果不希望这样,就取消它。

Fail TestCase on Error 选项,发生错误时把用例fail。

大家运行时可以按需要来决定。

然后可以运行用例。双击TestSuite 会弹出运行面板。

 

这里列出了TestSuite 里面的全部用例,点击绿色箭头就会顺序执行。点击下面的[TestSuite Log] 按钮可以查看执行日志,可以看到每一步骤的执行情况。如下图。

 

这样我们就可以对Webservice接口进行简单的自动化测试。

2.3. ServiceForRMPSoapBinding MockService

这部分是设置虚拟的服务端,它会在本机启动一个虚拟的服务,返回指定的响应内容。当服务端还没开发完,或者条件不允许与其他系统一起调试时,这个功能便于在开发完成前就可以把测试用例准备好。下图所示,recharge接口下面建了3个response。

 

右键单击对应的接口,新建一个response。

 

右边的内容是自动生成的,只要节点的“?”替换成实际需要的内容即可。

也可以创建一个“失败响应”,点击这个按钮 ,就会生成一个默认格式的失败响应,与实际系统返回的格式不一样,我们把已有的失败响应内容复制上去即可。

内容填写好之后,可以把响应与请求关联起来。点击 ,选择一个已有请求或新建一个,如下图。

 

然后启动MockService,运行一下请求,就会返回刚刚设置的response。但要注意,要把请求响应的服务地址改为本机的虚拟地址,如下图

 

要选择图中的灰色的那个,前面部分是本机名称。

启动MockService:右键单击ServiceForRMPSoapBinding MockService,选择restart即可,会看到  这个绿色的小图标在闪,表示正在运行。

到此介绍完soapUI工具的基本功能,更高级的功能有待继续学习。有错漏之处,欢迎指正。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147924.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 西门子plc冒泡法排序程序_博途graph编程讲解

    西门子plc冒泡法排序程序_博途graph编程讲解TIA博途中实现冒泡排序的两种SCL语言算法TIA博途软件版本:V15.0首先新建一个项目(具体过程这里就不演示了),添加一个FC块(或FB块均可),编程语言选择SCL,如下图,在FC的块接口中,定义我们需要的变量;一个数组型INT变量a用于存储需要排序的数据;一个INT型变量i:排序的起始序号;一个INT型变量j:排序的结束序号;一个TEMP型变量temp1:用于暂时存储中间比较的数据;利用SCL语言中的FOR循环语句,如下图中的程序,使得数组中的数据从a[i]开始比较到a[j],然后从小

    2022年10月6日
    2
  • java128陷阱

    java128陷阱public static void main(String[] args){ Integer a=128; Integer b=128; System.out.print(a==b);//false a=127; b=127; System.out.print(a==b);//true}为什么对于一个Integer来说,两个Integer都为128的时候通过判断为false,127时的却是true呢?其实这一切都是因为Java中的装箱

    2022年8月8日
    5
  • 树后台数据存储(採用webmethod)[通俗易懂]

    树后台数据存储(採用webmethod)

    2022年1月24日
    41
  • 详述 Spring MVC 框架中拦截器 Interceptor 的使用方法

    详述 Spring MVC 框架中拦截器 Interceptor 的使用方法1前言  昨天新接了一个需要,“拦截XXX,然后OOO”,好吧,说白了就是要用拦截器干点事(实现一个具体的功能)。之前,也在网络上搜了很多关于Interceptor的文章,但感觉内容都大同小异,而且知识点零零散散,不太方便阅读。因此,正好借此机会,整理一篇关于拦截器的文章,在此分享给大家,以供大家参考阅读。2拦截器2.1概念  Java里的拦截器是动态拦截action调用的对象。它提

    2022年5月14日
    36
  • Android开发之startActivityForResult过时的替代方案

    Android开发之startActivityForResult过时的替代方案如上图所示:在api29中提示已过时,官方给出的替代方案是上面第二个红框的方法registerForActivityResult该怎么用呢?先看kotlin版本的写法:privatevalstartActivity=registerForActivityResult(ActivityResultContracts.StartActivityForResult()){//此处是跳转的result回调方法if..

    2022年7月11日
    23
  • HTML背景图片设置

    HTML背景图片设置背景:学习前端知识,自己做页面目的:学习前端知识组网图:不涉及工具:vscode1.41.0简介:HTML背景图片设置;HTML背景图片设置background-image:<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><title&gt…

    2022年5月31日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号