SOAP UI - 第 1 部分 - 简介





5.00/5 (6投票s)
这是一篇关于 SOAP UI 的文章。它用于 Web 服务负载测试
引言
SOAP UI 是一个优秀的 Web 服务测试工具。尽管市面上有很多 Web 服务测试工具,但我更倾向于 SOAP UI,因为它具有灵活性、易用性和海量功能。我们一直在使用 SOAP UI 来测试各种安全服务、测试 SOA 服务器之间的连接性、负载测试和性能测试等。我不是全职测试人员,也不是 SOAP UI 工具的专家,但这是我作为一名开发人员尝试揭开 SOAP UI 神秘面纱的一次尝试。老实说,很多功能都是通过试错学习的。在本文中,将涵盖以下几点:
- 下载 SOAP UI
- 第一个 SOAP UI 项目
- 添加断言
背景
在开发 B2B 应用程序时,Web 服务扮演着至关重要的角色,因为大多数服务都以 Web 服务形式暴露。这使得广泛的客户端能够访问 Web 服务。Web 服务能否满足标准非功能性需求(如最小响应时间、无故障等)以及客户端施加的任何规则,这一点非常重要。SOAP UI 在测试 Web 服务的功能性方面发挥着重要作用。
第一个 SOAP UI 项目
好了,让我们开始第一个 SOAP UI 项目。这个 SOAP UI 项目将测试一个简单的、以 Web 服务形式公开的利息计算器。我之所以选择它,是因为我不想花太多时间解释 Web 服务的业务逻辑,而这也不是本文的范畴。因此,我们的简单利息计算器将“简单地”使用以下公式计算简单利息:
简单利息 SI = (本金 (P) x 年数 (N) x 利率 (R)) / 100,
例如,如果 P = 10000,N = 2 年,R = 20%(如今任何银行都不会给出这样的利率),那么简单利息将是:
SO = (P*N*R)/100 = 4000
从 Web 服务的角度来看,该服务将接受三个参数:本金、年数和利率,并返回利息作为输出。示例如下:
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;
}
}
示例如下请求/响应。
请求
<?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>
响应
<?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 的部分。
该服务的终结点是:
https://: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 – 安全状态
- 非 SOA 故障
- 响应 SLA
- 有效的 HTTP 状态码
- SOAP 响应
- 脚本断言
- WS – 定址响应
- Contains
- XPath 匹配
- Xquery 匹配
- 敏感信息泄露
- JMS 状态
- 架构合规性
- SOAP 故障
- 不包含
Web 服务的负载测试必须具有尽可能多的断言,以测试服务的各种参数。在后续的文章中,我将运行一个负载测试,其中将包含以下断言:
- 允许的最大错误数为 3
- 响应 SLA 为 2 秒
- 响应代码包含“0”,表示执行成功
- 不是 SOAP 故障以及更多。
关注点
在本文中,我们简要介绍了 SOAP UI 工具。后续文章将提供更多关于负载测试的内容。
历史
- 1. 0.1 初始版本 - 2012 年 6 月 21 日