SOAP UI工具使用指南

在B2B应用程序开发中,Web服务扮演着至关重要的角色,因为大多数服务都以Web服务的形式公开,这使得广泛的客户端能够访问这些服务。因此,确保Web服务符合诸如最小响应时间、无错误等标准非功能性要求,以及客户规定的任何规则,是至关重要的。SOAP UI在这个过程中发挥了重要作用,它帮助测试Web服务的适应性。

本文将介绍如何使用SOAP UI工具进行Web服务测试。虽然不是全职测试人员,也不是SOAP UI工具的专家,但会尽力展示如何将SOAP UI作为开发者使用。许多功能是通过尝试和错误学到的。在本文中,将涵盖以下内容:

首先,需要下载SOAP UI。SOAP UI是一个灵活、易于使用且功能丰富的工具,非常适合测试各种安全服务、测试SOA服务器之间的连接、负载测试和性能测试等。

创建第一个SOAP UI项目

让从创建第一个SOAP UI项目开始。这个项目将测试一个简单的利息计算器,该计算器作为Web服务公开。选择这个例子,是因为不想花太多时间解释Web服务的业务逻辑,这也不在本文的讨论范围内。因此,简单利息计算器将“简单地”使用以下公式计算简单利息:

Simple Interest SI = (Principal amount (P) x Number of years (N) x rate of interest (R)) / 100

例如,如果P = 10000,N = 2年,R = 20%(现在没有银行会提供这样的利率),那么简单利息将是:

SI = (P*N*R)/100 = 4000

在Web服务术语中,该服务将接受三个参数:本金、年数和利率,并返回利息作为输出。下面给出了示例代码:

C# public class SimpleInterest : System.Web.Services.WebService { // Default constructor public SimpleInterest() { } /// <summary> /// This method will calculate the simple interest /// </summary> /// <param name="principalAmount">Principal amount</param> /// <param name="rateofInterest">Rate</param> /// <param name="loanPeriod">Number of years</param> /// <returns>Simple interest</returns> [WebMethod] public double SimpleInterestcal(int principalAmount, float rateofInterest, int loanPeriod) { double interest = 0; return interest = (principalAmount * rateofInterest * loanPeriod) / 100; } }

请求/响应示例如下:

Request XML <?xml version="1.0" encoding="utf-8"?> <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <SimpleInterestcal xmlns="http://tempuri.org/"> <principalAmount>10000</principalAmount> <rateofInterest>20</rateofInterest> <loanPeriod>2</loanPeriod> </SimpleInterestcal> </soap12:Body> </soap12:Envelope> Response XML <?xml version="1.0" encoding="utf-8"?> <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <SimpleInterestcalResponse xmlns="http://tempuri.org/"> <SimpleInterestcalResult>4000</SimpleInterestcalResult> </SimpleInterestcalResponse> </soap12:Body> </soap12:Envelope>

现在,Web服务工作正常。接下来,来看SOAP UI部分。

该服务的端点是:

http://localhost:54350/SimpleInterest/SimpleInterest.asmx?wsdl

图1:创建一个新的SOAP UI项目。使用文件菜单创建一个新的SOAP UI项目。

图2:项目加载在左侧面板。双击请求1将加载请求/响应标签。

图3:示例请求/响应

编辑请求标签并填写值。按下绿色按钮以获取响应。

因此,用于测试简单利息计算器的SOAP UI项目正在工作。可以编辑服务以使用不同的值进行测试。如果存在模式违规,SOAP UI客户端将抛出错误。例如,如果本金值(定义为整数字段)发送了双精度或字母,将抛出错误。

例如,如果本金金额字段发送为100ABCD,响应将是客户端抛出的SOAP错误。类似地,如果输入字段是枚举,任何模式违规将由SOAP客户端处理,并将错误返回。定义最精确的数据类型是一个好习惯,因为它将避免服务器端的不必要验证。

类似地,如果服务端有错误处理程序,那么服务发送的SOA错误将被捕获并返回。再次强调,发送有效且易于阅读的错误消息(如“无效的本金金额”等)而不是发送堆栈跟踪是一个非常好的实践。

断言

断言非常重要,因为SOAP UI用于测试Web服务性能,因此只有通过一些度量标准来衡量性能,才能建立服务的适应性。断言可以添加到负载测试以及对请求的测试中。负载测试断言包括:

  • 最大错误
  • 步骤平均值
  • 步骤TPS
  • 步骤最大值
  • 步骤状态

可以添加到测试步骤的断言包括:

  • 无效的HTTP状态码
  • JMS超时
  • WS-Security状态
  • 非SOA错误
  • 响应SLA
  • 有效的HTTP状态码
  • SOAP响应
  • 脚本断言
  • WS-Addressing响应
  • 包含
  • Xpath匹配
  • Xquery匹配
  • 敏感信息泄露
  • JMS状态
  • 模式合规性
  • SOAP错误
  • 不包含

Web服务进行负载测试必须有尽可能多的断言,以测试服务的各种参数。在后续文章中,将运行一个负载测试,它将包含以下断言:

  • 允许的最大错误为3
  • 响应SLA为2秒
  • 包含响应代码为"0",表示成功执行
  • 不是SOAP错误等等。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485