我有一个返回产品更改历史记录的Web服务方法,它的签名如下:
List<MyProduct> GetProductHistory(int iProductId);
我想为此方法创建一个INTEGRATION测试。为此我需要在DB中创建一些数据。在这里,我可以创建一个函数,在DB中写入一些“硬编码”记录,模拟产品变更历史记录。
我还需要测试其他函数(int GetProductAverageValue(int iProductId)),它应该使用产品历史信息进行一些数据处理。为了测试这个功能,我需要有几组记录(几种不同的历史类型)。在这里,我几乎没有选择:
第一个选项非常可怕,第二个 - 导致在集成测试层上重复业务逻辑...
请指教。欢迎任何想法...
答案 0 :(得分:2)
那里有很多数据,所以这些设置有点可怕
我不太明白这里的困难是什么。也许你可以澄清为什么这是可怕的?
当完全测试某些代码所需的测试用例数太大时(总是真实程序的情况),使用equivalence partitioning选择较少数量的测试用例尽管如此,仍然彻底测试了代码。
您已经明确表示这是针对集成测试的。你已经有彻底的单元测试吗?如果没有,先创建它们。然后集成测试不再需要测试业务逻辑;他们只需要测试组件是否正确粘合在一起。这不应该需要大量的测试用例。如果是这样,请考虑重新设计代码以引入中间级别的程序集(facade),您可以在没有数据库的情况下进行测试。
答案 1 :(得分:0)
这是我今天的第二个问题......在完成问题写作时我自己找到了解决方案。
要创建'良好的产品更改历史记录',我需要使用实际更改产品的服务方法。简单快捷:)
P.S。无论如何,欢迎任何意见和建议。