65.9K
CodeProject 正在变化。 阅读更多。
Home

SOAP UI - 第 1 部分 - 简介

starIconstarIconstarIconstarIconstarIcon

5.00/5 (6投票s)

2012年6月22日

CPOL

4分钟阅读

viewsIcon

58193

这是一篇关于 SOAP UI 的文章。它用于 Web 服务负载测试

引言

SOAP UI 是一个优秀的 Web 服务测试工具。尽管市面上有很多 Web 服务测试工具,但我更倾向于 SOAP UI,因为它具有灵活性、易用性和海量功能。我们一直在使用 SOAP UI 来测试各种安全服务、测试 SOA 服务器之间的连接性、负载测试和性能测试等。我不是全职测试人员,也不是 SOAP UI 工具的专家,但这是我作为一名开发人员尝试揭开 SOAP UI 神秘面纱的一次尝试。老实说,很多功能都是通过试错学习的。在本文中,将涵盖以下几点:

  1. 下载 SOAP UI
  2. 第一个 SOAP UI 项目
  3. 添加断言

背景

在开发 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 服务的性能,因此服务的功能性只能通过一些指标来衡量其性能。

可以向负载测试添加断言,也可以针对请求添加断言。负载测试断言是:

  1. 最大错误
  2. 步骤平均值
  3. 步骤 TPS
  4. 步骤最大值
  5. 步骤状态

可以在测试步骤中添加的断言是:

  1. 无效的 HTTP 状态码
  2. JMS 超时
  3. WS – 安全状态
  4. 非 SOA 故障
  5. 响应 SLA
  6. 有效的 HTTP 状态码
  7. SOAP 响应
  8. 脚本断言
  9. WS – 定址响应
  10. Contains
  11. XPath 匹配
  12. Xquery 匹配
  13. 敏感信息泄露
  14. JMS 状态
  15. 架构合规性
  16. SOAP 故障
  17. 不包含

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

  1. 允许的最大错误数为 3
  2. 响应 SLA 为 2 秒
  3. 响应代码包含“0”,表示执行成功
  4. 不是 SOAP 故障以及更多。

关注点

在本文中,我们简要介绍了 SOAP UI 工具。后续文章将提供更多关于负载测试的内容。

历史

  • 1. 0.1 初始版本 - 2012 年 6 月 21 日
© . All rights reserved.