在B2B应用程序开发中,Web服务扮演着至关重要的角色,因为大多数服务都以Web服务的形式公开,这使得广泛的客户端能够访问这些服务。因此,确保Web服务符合诸如最小响应时间、无错误等标准非功能性要求,以及客户规定的任何规则,是至关重要的。SOAP UI在这个过程中发挥了重要作用,它帮助测试Web服务的适应性。
本文将介绍如何使用SOAP UI工具进行Web服务测试。虽然不是全职测试人员,也不是SOAP UI工具的专家,但会尽力展示如何将SOAP UI作为开发者使用。许多功能是通过尝试和错误学到的。在本文中,将涵盖以下内容:
首先,需要下载SOAP UI。SOAP UI是一个灵活、易于使用且功能丰富的工具,非常适合测试各种安全服务、测试SOA服务器之间的连接、负载测试和性能测试等。
让从创建第一个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服务性能,因此只有通过一些度量标准来衡量性能,才能建立服务的适应性。断言可以添加到负载测试以及对请求的测试中。负载测试断言包括:
可以添加到测试步骤的断言包括:
对Web服务进行负载测试必须有尽可能多的断言,以测试服务的各种参数。在后续文章中,将运行一个负载测试,它将包含以下断言: