在现代软件开发中,测试是确保软件质量的重要环节。SOAP UI 是一款流行的API测试工具,它支持SOAP和REST协议,能够进行功能测试、性能测试以及负载测试。本文将介绍如何使用SOAP UI来测试Web服务,并添加断言以验证服务的性能。
断言是测试过程中用来验证实际结果是否符合预期的一种手段。在SOAP UI中,断言可以帮助检查Web服务的响应是否符合预期。在本文中,将通过一个简单的利息计算器Web服务示例,来展示如何添加和使用断言。
首先,对服务进行了一点小改动,将响应封装到了一个属性类中。以下是更新后的C#代码示例:
public class SimpleInterestResponse {
private int _returnCode;
private string _statusMessage;
private double _simpleInterest;
public SimpleInterestResponse() {
// 构造函数逻辑
}
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("本金不能为零(0)。");
} else if (principalAmount == 5000) {
throw new TimeoutException("Web服务超时。");
} else if (principalAmount == 5001) {
throw new FormatException("无效的本金金额。");
} else if (principalAmount == 5002) {
throw new Exception("发生了一般性异常。");
} else if (principalAmount == 5003) {
System.Threading.Thread.Sleep(10000);
} else {
objSimIntr.ReturnCode = 0;
objSimIntr.StatusMessage = "成功";
objSimIntr.SimpleInterest = (principalAmount * rateOfInterest * loanPeriod) / 100;
}
return objSimIntr;
} catch (TimeoutException tExp) {
objSimIntr.ReturnCode = 50;
objSimIntr.StatusMessage = "超时: " + tExp.Message;
objSimIntr.SimpleInterest = 0;
return objSimIntr;
} catch (FormatException fExp) {
objSimIntr.ReturnCode = 60;
objSimIntr.StatusMessage = "格式无效: " + fExp.Message;
objSimIntr.SimpleInterest = 0;
return objSimIntr;
} catch (Exception exp) {
objSimIntr.ReturnCode = 70;
objSimIntr.StatusMessage = "一般异常: " + exp.Message;
objSimIntr.SimpleInterest = 0;
return objSimIntr;
}
}
在SOAP UI项目中添加一个测试套件,并添加一个新的测试用例。将请求1拖放到测试用例下,请求将作为测试步骤1添加。双击请求1打开右侧的请求窗口。点击断言按钮(圆形),这将打开断言选择下拉菜单。
选择无效的HTTP状态码并点击确定。这将打开一个小窗口,可以指定要检查的代码。例如,可以输入401(未授权)、404(未找到)等,并点击确定。同样地,添加一个有效HTTP状态码(200)的断言。
添加一个响应SLA断言,并指定值为5000,这意味着任何超过5秒的响应都被视为无效。运行测试,所有结果都将是绿色的,意味着所有测试都通过了。
现在将本金金额更改为5003并运行测试。服务将延迟10秒响应,从而触发SOAP UI中的SLA违规。
添加了一个XPath匹配,它将检查返回代码是否为0,如果不是,则会引发警报。例如,如果选择的本金金额为5001,则返回代码将为60,断言失败将发生。添加XPath匹配如下图所示。
在本文中,学习了如何向Web服务添加各种断言。根据需求,可以在SOAP UI项目中添加一个或多个断言。如果工具中提供的断言不符合要求,可以使用Groovy编写自己的断言。在下一部分中,将介绍如何在负载测试中添加更多的断言。