引用经典例子学习,了解该项目,包括MokeService模拟服务和测试用例,以此来熟悉SoapUI的界面和操作。本篇主要学习SoapUI的5个功能:
1.导入项目;
2.WebService Mocking;
3.WebService Inspection;
4.对WebService服务进行功能测试;
5.对WebService服务进行负载测试。
1.导入项目
-
导入自带项目
-
(1)右键点击在Navigator中的项目节点,选择“Import project”选项,导入已经存在的项目,此时页面弹出“Select SoapUI ProjectFile”对话框。
-
(2)从安装SoapUI的文件夹下的Tutorials目录里,选择项目名称为 sample-soapui-pro-project.xml 或者 sample-soapui-project.xml 的项目文件。
-
(3)项目导入成功
2.WebService Mocking
-
WebService Mocking 是在SoapUI中伪造或模拟WebService服务接口功能的一个途径,当WebService服务接口没有启动或接口的编码尚未完成等各种原因导致接口暂时无法使用时,WebService Mocking 是非常有用的一个功能。总而言之,WebService Mocking可以在开发开始编码的同时创建测试用例,这意味着,当真正的WebService服务接口可以开始测试时,用例设计工作可能已经完成,可以直接开始测试。
-
(1)添加一个MockService,右键单机接口集合的名称。
-
(2)弹出“General MockService”对话框,可直接使用默认设置的值,点击OK。
-
(3)输入MockService 的名称,点击OK。
生成一个MockService,如下图:
-
(4)首先使MockService运行起来。导入的文件中已经包含名为“SampleServiceSoapBinding MockService”的MockService,可先删除前三步新创建的MockService,打开MockService只需双击即可。
-
(5)在MockService中我们可以看到有不同的接口:login, logout, search, buy 共4个接口,在例子项目中,所有的相应均采用SCRIPT的调度方式进行分发相应,这是最常见的一种调度方式,这里还提供顺序等其他方式供测试人员选择。
-
(6)单击执行按钮开始运行MockService,MockService运行在8088端口。
3.WebService Inspection
-
WebService Inspection 是一个非常好的功能,它能够让你在测试开始执行时就能很容易地了解到你所测试的WebService接口是如何工作,需要什么样的入参才能调用。
-
(1)直接浏览WSDL接口的XML报文,都是很杂乱的,而且一般WSDL报文也都比较复杂,由于WSDL的复杂而使人们不愿意去读懂它,但WSDL其实是规范的,而SoapUI的接口视图模式是解决这个问题的好工具。
-
(2)通过双击“SampleServiceSoapBinding”节点,SoapUI页面上会打开该节点的信息,切换至WSDL Content标签页,如图所示可通过此处的内容与右边栏“SampleServiceSoapBinding”节点下的接口映射,来加深对WSDL接口的理解。
扫描二维码关注公众号,回复: 1909028 查看本文章 -
(3)单击“SampleServiceSoapBinding”节点下的“login”,展开接口对应的请求“login rq”,双击打开,可以在SoapUI的桌面上看到“login”。
-
(4)请求中已写明了入参:username = Login, password =Login123,点击运行按钮提交请求,成功后可以在右边看到响应的报文。通过点击TAB标签页,可以用不同的显示方式查看请求报文和响应报文内容。
4.对WebService服务进行功能测试
在例子中,已经创建了不同的测试集,测试集包含了不同的用例,一个测试用例又由一个或多个测试步骤组成,SoapUI会组织成如下结构:
(1)展开Simple TestSuite,双击“Simple Login ang Logout w.Properties Steps”,可以查看到测试用例由5个测试步骤组成。
(2)打开“Description”标签查看测试用例描述。
(3)该测试用例主要有3个类型的测试步骤组成:一个Properties测试步骤,2个TestRequest和2个PropertyTransfer步骤,功能如下:
Properties:用来保存属性的值,后面的步骤都可以使用,在用例里“login”接口的入参就是使用属性“username”和“password”。
TestRequest:发给服务接口的请求,在用例中的请求有“login”和“logout”。
PropertyTransfer:一个用来在不同测试步骤间传递属性的步骤,这可以使用的场景有从一个Properties的步骤将属性传给一个“TestRequest”的步骤,如用例中:“Move username and password”步骤,也可以是将属性从一个请求的出参传递给另一个请求的入参,如用例中:Move sessionID 步骤。
(4)双击测试步骤“PropertyTransfer:Move Username and Password”,测试步骤的编辑器将会在SoapUI上打开,这个步骤传递了“username”和“Password”两个属性。
(5)SoapUI一个最重要的特点是:断言,断言的使用是为了验证发出的请求是否被正确的相应,校验与预期的结果是否一致。打开测试步骤“TestRequest:logout”,在下面的测试步骤中可以看到几个断言,点击小+号可以根据情况进行添加:
- SOAP Response:验证响应报文是一个有效的SOAP响应。
- SchemaCompliance:指返回的报文是否符合WSDL中所定义的模式。
- Not SOAP Fault:检查响应报文没有包含SOAP异常。
- XPATH Match:比较XPATH表达式所指定位置上的元素是否与预期值符合。
(5)测试执行:大致了解整个测试用例后,可以执行用例,点击执行按钮,测试用例将直接执行,测试结果将会显示在下所示的执行进度条上,如果完全通过此进度会显示成绿色,如果执行不通过,会停在失败的执行步骤上,进度条显示成红色,而下方会打印相应的错误日志信息。
注:如果执行时进度条显示为红色,检查MockService是否开启,或在执行完成的测试用例之前是否已经执行过“login”请求,如果执行过,请使用“login”清除掉服务端的惠华信息或重启MockService,再重新执行测试用例。
5.对WebService服务进行负载测试
在创建完测试用例后,SoapUI可以快速地让你创建用例对应的负载测试用例,右击并且选择“New LoadTest”即可。这使得SoapUI的负载测试相当好用,它可以让你在功能测试完成情况下,快速地、方便地、随意地检验WebService接口是否能够承载指定的负载量。
(1)点击测试集“Expanded TestSuite”,展开测试用例“Search and Buy TestCase”的“LoadTest”,可以看到,对同一个功能测试用例有4个不同的负载测试用例,可根据性能测试场景选择不同的负载策略。
(2)双击点开其中一个负载用例,可以配置里面的配置项。
- Limit:表示我们负载测试要持续执行的时间,s为单位,此处表示要执行30s。
- Threads:配置负载测试所用的线程组,即一般性能测试中所说的并发数。
- Test Delay:设置测试线程的休眠时间,即在完成一次完整的用例执行后,开始下一次执行时,县城的休眠时间,以毫秒为单位(1s=1000ms),图中是1000ms。
- Random:该值的设置是与“Test Delay”的设置结合在一起的,它表示休眠的时间会在 Test Delay * (1-0.5)=100ms,和TestDelay * (1+0.5)=300ms之间波动。此处如果设置为0,则表示“TestDelay”的值不会随意地变化,直接初始设置的毫秒数。
(3)开始执行,数据随着测试的执行而持续的发生变化,比较关心的数值:响应时间、每秒吞吐量(tps)、错误数(error)等性能。
(4)查看图表:
查看测试结果数据的整体走向:
(5)在SoapUI的负载测试中,你也可以定义负载测试断言,一个经常且重要的断言是:Max Error。当负载测试中出现错误,且错误的数量达到Max Error要求的值时,负载测试就会停止。
注:进入测试集“Sample TestSuite fails if we don’t get faults”->测试用例“TestCase:Searching after Logging out LoadTests”->负载测试用例“LoadTest with Multiple Tests(will fail)”,双击打开并执行,执行一段时间后,页面弹出错误信息,执行失败,这主要是因为多个用户模拟登录且使用同一个用户名,这在MockService所模拟出来的服务接口是不被允许的。