测试API时 - 我应该测试API方法验证吗?

时间:2011-08-19 22:31:35

标签: tdd

我继承了一个项目,该项目将通过另一个开发人员编写的SOAP服务连接到CRM系统。我的问题是:我应该在什么级别测试Soap服务的界面?

我设置了一个测试用例并编写了一些方法来测试Soap更新方法,并确认它失败了,并为无效客户或订单号提供了合适的错误代码。

我接下来测试了一个无效的订单状态值(不在一组预期的参数范围内),并且该服务返回了一个成功代码,这是不期望的。

我相信我应该向开发人员报告此问题,但是我现在应该从我的测试套件中删除此测试吗?或者让它显示为失败?

如果soap服务选择不验证其输入参数,我认为这是一个糟糕的设计,但它不是我的代码中的错误,我只需要确保在将值传递给其他系统之前清理输入,并验证无论如何应该在另一套测试中涵盖。

我是否应该首先通过单元测试与SOAP服务交谈?

3 个答案:

答案 0 :(得分:1)

每个原子功能要求应至少编写一个测试。现在,如果您使用最少的接口指南编写,那么每个原子功能要求最多只能有一个接口。但是你可以为每个需求编写多个测试,因为可能存在各种可以测试的不变量。

通常,在编写测试时应考虑不变量和功能要求,而不是接口方法。测试> =原子功能要求。

答案 1 :(得分:1)

考虑服务“合同”,它的前提条件(即法律输入),后期条件(即法律输出)和不变量(法律服务状态)。如果开发人员不清楚这些,或者其他开发人员有可能滥用该服务,则应报告并处理。

但有一个例外 - 理论上这些都很好而且很好,但如果服务中没有其他客户(除了原始开发人员之外),有时过多的检查也是过时的。可以合理地假设在这种情况下,客户代码检查并消除无效输入。

答案 2 :(得分:0)

如果库(或第三方代码)具有良好的声誉(例如,Apache Commons,Guava ......),我不会重新测试API。

但是,当我不确定代码的质量时,我倾向于编写几个测试来验证我对库/ API的假设(但我没有重新测试所有库)。

如果这些简单的假设失败了,对我来说这是一个非常糟糕的信号。在这种情况下,我倾向于编写更多测试来检查库的更多方面。在您的情况下,我会向开发人员编写更多测试和信号错误。

这些测试不会丢失,因为如果提供了新版本的库,您仍然可以使用它们来检查回归。