【问题标题】:How to write automated tests for SQL queries?如何为 SQL 查询编写自动化测试?
【发布时间】:2014-05-07 18:33:06
【问题描述】:

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

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

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

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

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

编辑:我正在使用 c#

【问题讨论】:

  • 您要测试的查询是从 C# 程序运行还是手动运行或其他方式运行?
  • @DaveSchweisguth 它们在 C# Web 应用程序中运行。所以此时的最终输出是来自原始查询的 html 表。
  • 只是为了澄清...您是否尝试测试生成/使用查询的应用程序的正确性?并且基本上测试这些查询是否正确反映了一些外部指定的业务规则?

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


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回答。我更新了我的问题以声明我正在使用 c#。我们目前也没有 c# 级别的自动化测试系统,所以我也需要这方面的所有建议。
  • 我会将这个问题标记为正确,因为您已经给了我一个进入的方向,而且似乎没有其他人有更好的回应。谢谢
【解决方案2】:

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

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

猜你喜欢
  • 2019-03-19
  • 1970-01-01
  • 1970-01-01
  • 2016-04-23
  • 1970-01-01
  • 2011-09-21
  • 2021-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多