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

SOAP UI - 第二部分 - 断言

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2012 年 6 月 29 日

CPOL

3分钟阅读

viewsIcon

24436

这是我关于 SOAP UI 介绍的文章的续篇。

引言

本文的第一部分介绍了 SOAP UI,可以在这里查看。 作为其中的一部分,我们了解了什么是 SOAP UI、如何创建示例项目、如何运行请求以及 SOAP UI 中可用的断言类型。 在这一部分中,我们将向我们的 Web 服务(单利计算器)添加断言。

背景

正如第一部分中提到的,断言用于衡量服务的性能。 在以下部分中,我添加了我在我的项目中使用的各种断言。

必备组件

对服务进行了一点更改。 服务的响应已被包装到属性类中; 更新后的代码如下所示。

public class SimpleInterestResponse
{
    private int _returnCode;
    private string _statusMessage;
    private double _simpleInterest;
    public SimpleInterestResponse()
    {
        //
    // TODO: Add constructor logic here
    //
    }
 
    public int ReturnCode
    {
        get
        {
            return _returnCode; 
        }
        set
        {
            _returnCode = value;
        }
    }
    public string StatusMessage
    {
        get
        {
            return _statusMessage;
        }
        set
        {
            _statusMessage = value;
        }
    }
    public double SimpleInterest
    {
        get
        {
            return _simpleInterest;
        }
        set
        {
            _simpleInterest = value;
        }
    }
}

这是 Web 服务方法

[WebMethod]
public SimpleInterestResponse SimpleInterestcal(int principalAmount, float rateofInterest, int loanPeriod)
{
    SimpleInterestResponse objSimIntr = new SimpleInterestResponse();

    try
    {
        if (principalAmount == 0)
        {
            throw new Exception("Principal cant be zero (0).");
        }
        else if (principalAmount == 5000)
        {
            throw new TimeoutException("Web service timed out");
        }
        else if (principalAmount == 5001)
        {
            throw new FormatException("Invalid Principal amount");
        }
        else if (principalAmount == 5002)
        {
            throw new Exception("A general exception has occured");
        }
        else if (principalAmount == 5003)
        {
            System.Threading.Thread.Sleep(10000);
        }
        else
        {
            objSimIntr.ReturnCode = 0;
            objSimIntr.StatusMessage = "Success";
            objSimIntr.SimpleInterest = (principalAmount * rateofInterest * loanPeriod) / 100;
        }
            return objSimIntr;
    }
    catch (TimeoutException tExp)
    {
        objSimIntr.ReturnCode = 50;
        objSimIntr.StatusMessage = "Timeout : " + tExp.Message; ;
        objSimIntr.SimpleInterest = 0;
        return objSimIntr;
    }
    catch (FormatException fExp)
    {
        objSimIntr.ReturnCode = 60;
        objSimIntr.StatusMessage = "Invalid Format :" + fExp.Message;
        objSimIntr.SimpleInterest = 0;
        return objSimIntr;
    }
    catch (Exception exp)
    {
        objSimIntr.ReturnCode = 70;
        objSimIntr.StatusMessage = "General Exception :" + exp.Message;
        objSimIntr.SimpleInterest = 0;
        return objSimIntr;
    }
    finally
    {
    }
}

该服务将返回三个参数

  1. 返回代码,0 表示成功,非零整数表示错误情况
  2. 状态消息 – 错误情况的简要说明
  3. 单利 – 通常 0 表示错误情况/验证失败

该服务能够返回三个异常,超时、格式和一般异常,此外,如果本金为 5003,则响应将延迟 10 秒。

  1. 将测试套件添加到 SOAP UI 项目并添加一个新的测试用例。
  2. 将请求 1 拖放到测试用例下。 请求将添加到测试步骤 1 下,如下图所示;

  3. 双击请求 1 以在右侧窗格中打开请求窗口。
  4. 单击断言按钮(圆角)。 这将打开断言选择下拉列表。

  5. 选择无效的 HTTP 状态代码,然后单击“确定”。
  6. 这将打开一个小窗口,我们可以在其中指定要检查的代码。
  7. 给出 401(未授权)、404(未找到)等,并根据需要添加任意数量,然后单击“确定”。
  8. 以同样的方式,为有效的 http 代码 (200) 添加一个断言。
  9. 添加响应 SLA 并将该值指定为 5000,如下图所示。 这意味着在 5 秒后获得的任何响应都被认为是无效的。

  10. 运行测试。 全部为绿色,表示所有测试都已通过。
  11. 现在将本金更改为 5003 并运行测试。 服务会将响应延迟 10 秒,从而触发 SOAP UI 中的 SLA 违规。

  12. 我添加了一个 Xpath 匹配,它将检查返回代码是否为 0,如果不是,则发出警报。 例如,如果本金选择为 5001,则返回代码将为 60,并且会发生断言失败。 添加 xpath 匹配如下所示。



  13. 同样,“包含”和“模式一致性”也将以相同的方式工作。
  14. 根据要求,可以向 SOAP UI 项目添加一个或多个断言。
  15. 我已经停止了 Web 服务,因此所有断言都失败了!

这些是可以添加的一些断言来测试 Web 服务的质量。 如果工具中提供的断言与您的要求不符,我们可以使用 Groovy 编写自己的断言。 更多断言也可以添加到负载测试中,我将在下一部分中介绍。

关注点

在这一部分中,我们学习了如何向 Web 服务添加各种断言。

历史

初始版本。

© . All rights reserved.