4

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

我们目前遇到的问题是编写查询的人犯了很多错误并假设一切都是正确的。我们现在已经指定了一名测试人员来分析所有查询,但这仍然证明非常耗时且压力很大。

我想知道我们如何创建一个自动化程序(如果可能的话,不用专门用代码编写它,因为我可以弄清楚如何做很长的路要走)来验证一组 10 多个不同的输入,验证输出数据并说如果计算正确。

我知道我可以使用数据库中的特定数据编写脚本并使用 c#(数据库是 SQL Server)创建脚本并验证所有输出的值,但我想知道官方的“标准”是什么,因为我的经验是在这方面缺乏,我想改进。

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

编辑:我正在使用 c#

4

2 回答 2

3

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

在 C# 中进行单元测试的两种最常见的方法是使用Visual Studio 单元测试工具NUnit。如何编写单元测试是一个很大的话题。Roy Osherove 的“单元测试艺术”应该是一个很好的起点。

于 2014-05-08T16:20:15.283 回答
1

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

听起来您在进行数据库单元测试。这个想法是,您使用所需的模式和测试数据创建一个临时的、隔离的数据库环境,然后验证您的查询是否返回了适当的数据。

于 2014-06-06T21:23:02.037 回答