如何编写SQL查询的自动化测试?

时间:2014-05-07 18:33:06

标签: c# sql unit-testing testing regression-testing

我们正在采用的当前系统是编写一些极其复杂的查询,这些查询执行多个计算并具有多个连接/子查询。我不认为我有足够的经验来说明这是否正确所以我同意并尝试使用这个系统,因为它有明显的好处。

我们目前遇到的问题是撰写查询的人犯了很多错误,并认为一切都是正确的。我们现在已经指定了一个测试人员来分析所有的查询,但这仍然非常费时和紧张。

我想知道我们如何创建一个自动化程序(如果可能的话,没有专门用代码编写代码,因为我可以解决如何做到这一点)以验证一组10多个不同的输入,验证输出数据并说出计算是否正确。

我知道我可以使用数据库中的特定数据编写脚本并使用c#创建脚本(db是SQL Server)并验证所有值,但我想知道官方"标准& #34;就像我在这方面缺乏经验一样,我想改进。

如果需要,我很乐意添加更多信息,必要时添加评论。谢谢。

编辑:我正在使用c#

2 个答案:

答案 0 :(得分:2)

测试运行SQL查询的代码的标准方法是对其进行单元测试。 (有比单元测试更高级别的测试,但听起来你的问题是你的应用程序的一个小的,特定的部分,所以不要担心更高级别的测试。)不要尝试直接测试查询,但测试查询的结果。也就是说,为运行查询的每个C#方法编写单元测试。每个单元测试都应该将已知数据插入到数据库中,调用该方法,并声明它返回预期结果。

在C#中进行单元测试的两种最常用方法是使用the Visual Studio unit test toolsNUnit。如何编写单元测试是一个很大的话题。 Roy Osherove's "Art of Unit Testing"应该是一个开始的好地方。

答案 1 :(得分:0)

这个问题的另一个答案虽然通常对于测试代码是正确的,但却没有解决测试数据库的问题。

听起来像你database unit tests之后。我们的想法是,您使用所需的架构和测试数据创建一个临时的,隔离的数据库环境,然后验证您的查询是否返回了适当的数据。