SOAPUI入门
近期发现一个测试web service(WS)的工具–SOAPUI, 这是一款很专业的WS测试软件,能共提供全方位的WS功能测试和性能测试,上手比较快,使用方便。软件整体结构设计的很合理,明晰。让人一看就很容易上 手。以下是翻译自其官方站的入门文档,有兴趣的同学们可以参考下。 官方站地址: http://www.soapui.org/
Getting Started with soapUI
-
以下你们将看到一个包含测试用例和请求的soapUi工程的创建过程。测试使用的是Amazon开放web service接口。虽然soapUI上手比较的容易,但是我们依旧需要对一下的知识有较全面的了解以便掌握soapUI的大部分功能的使用能力。包括:
-
WSDL-基本的概念(services, ports, bindings, port types)以及相关的xml-schema
-
SOAP-基本概念,与WSDL的关联关系,不同的编码(soap-encoded/literal)以及消息类型(document/rpc)
-
XML相关知识- XPath, XML Schema, namespaces等
-
Install and Run soapUI
Install and Run soapUI in one of the following ways:
可以在此网站的 top page ,下载到最新的使用Java WebStart的版本
通过SourceForge soapUI Web Site下载并使用windows installer(包含必须的1.6 JRE)安装。当你不能确定 系统的java环境或者你想使用开始菜单的图标启动和卸载的时候,可以使用windows installer。
SourceForge在下载binary版本(例如soapui-1.5-bin.zip),然后解压并手动安装并运行bin\soapui.bat (or .sh) 脚本 (需要path中配置java环境).
无论如何,soapUI要使用一个空的workspace来启动并展示在你面前
The Getting Started guide
Page |
What it describes |
如何打开和开始一个soapUI工程以及如何创建第一个Web Service Request | |
如何创建一个 Web Service Test 以及如何验证 |
|
如何创建一个 Web Service load test | |
如何创建一个 create a Web Service Mock |
Your first soapUI Project
步骤:
创建一个测试工程
添加一个WSDL的web service描述文件
创建一些request
创建或导入一个 Web Service testing project
在左边的导航栏里面右键单击Projects根节点,将会提示你选择的项目,如图
如果你下载的是桌面版,在根目录下会有一个sample工程,选择import project并导入此工程以便浏览 |
|
Add a WSDL to create tests from
现在你拥有了一个可以添加interfaces(i.e. Web Service PortTypes)到其中的工程了
在项目节点上右 键单击并选择”Add WSDL from URL” 获得提示并填入Interfaces WSDL; 回车 http://webservices.amazon.com/AWSECommerceService/ AWSECommerceService.wsdl 就添加了amazon的web service,然后选择OK。 此时,soapUI会提示你是否为每一个operation创建默认的request,选择Yes soapUI将为amazon “AWSECommerceServicePortType” PortType添加SOAP/Http Binding 到你的项目,然后为每个operation创建nodes。 |
|
Try some Web Service requests
现在你已经添加amazon的web service并可以开始添加request了。你如果为interface的operation创建了默认的request,那么你就会看见“request 1”。双击这个request打开editor界面(下图)
Request editor界面氛围以下3个部分: 上部的工具栏包含一部分与request相关的actions/options,之下的左半部分是request区域,右半部分是response区域。 默认创建的request包含“?”这个value,此处可以被任何合法的value所替换。点击左上角的绿色箭头可以发送此request,得到的response将在右边的response editor中显示 |
|
Getting Started with Functional Testing
你已经导入了一些WSDl文件并尝试了一些requests。现在你可以创建你的第一个TestCase。在soapUI中,功能测试可以用来验证起本身的任意功能(相当于单元测试)也可以验证一系列功能的整合(相当于集成测试)。不仅如此,你还可以添加脚本(使用 Groovy Language)在任何角度来增强你的测试,例如与数据库交互或者实现复杂的测试流程。
Create a Web Service Test from SOAP request
如果一些requests能够按你期望工作的话,你就可以创建TestCase 了。在request editor中选择工具栏第二个按钮((“Add this request to a test-case”)。如果在你的项目里面没有TestSuite或者TestCase,soap会提示你命名并创建他们。然后,soapUI会提示你 为你的test request命名,并将这个test request放在你刚刚创建的TestSuite和TestCase下,之后会打开一个心得request editor(与之前的一样),不同之处在于,在新的editor中可以添加assertion来验证response。 |
|
Add an Assertions to a test
现在你可以为创建好的test request新建一些assertion(断言)了,在test-request-editor(以后成为editor)界面的工具栏的第二个按钮 (“Add an assertion to this test request”).首先创建一个”Schema Compliance” assertion,起作用是检response的格式时候符合关联的WSDL文件的要求,此外还有很多类型的assertion,如下图。使用绿色箭头 发送request,然后会验证response。如果一切正确的话,在导航树相应的图标处会显示绿色的背景颜色
|
|
Now run your web service test!
当你创建好所有的test request和他们的asser,你就可以云新整个test case了。在test case节点上双击,就能打开test-case runner,运行这个test case,结果即可显示出来了。
Once you have all the test request and their assertions you want you can run the entire TestCase |
|
Getting Started with Web Service Load Testing
soapUI引入了使用简单而功能强大的性能测试功能SOAP LoadTesting,可以让你实现:
根据不同的测试用例来验证web service的性能
在负荷运行的情况下不会出现break的情况
同时运行多个load test,查看时候会他们是否会互相影响
我们使用之前创建的test suite来了解load test。在test case节点上右键单击,选择“new LoadTest”
这个LoadTest被预先配置,在简单的LoadStrategy 下使用5个线程运行60秒(右上角 Limit)。可以根据需要去更改这些值(了解更多 soapUI LoadTest Configuration)。运行这个test,就能在表格里面看到相应的统计数据,在60秒后,可以得到一个完成的loadTest(了解更多LoadTest Execution)
Add Assertions to a Load Test
soapUI允许添加LoadTest Assertions到LoadTests,这就好像添加assertion到功能测试的test step中一样。当你创建LoadTest,soapUI将总是添加一个TestStep Status Assertion,我们将添加一个TestStep Max Assertion去验证我们的testCase不会超过一定的运行时间。
选择位于LoadTest Editor 底部的“LoadTest Assertions”标签,点击“Add Assertion” 按钮,选择“Step Maximum” assertion,然后按如下配置:
Maximum assertion检查一个步骤的时候不会超过设定的值
Name – assertion的名字,默认即可 Minimum Requests – 在应用这个assertion之前,最小的runs数。我们允许最先的10个testCase runs通过。 Max Time – 允许运行的最长时间. Max Errors – 在取消这个loadTest之前所允许出现的错误最大数。我们允许在Max Time内出现5个错误。 TestStep – t被添加assertion的testStep。 |
|
Run again!
现在我们运行这个LoadTest,它会显示如下结果
你可以在日志中双击一个assertion failure去查看实际的request失败原因,允许你debug request/response,双击错误会显示如下