如何为SQL查询编写自动化测试
本文关键字:自动化测试 查询 SQL | 更新日期: 2023-09-27 18:02:08
目前我们在工作中采用的系统是编写一些非常复杂的查询,这些查询执行多个计算并具有多个连接/子查询。我认为我没有足够的经验来判断这是否正确,所以我同意并尝试使用这个系统,因为它有明显的好处。
我们现在遇到的问题是,编写查询的人犯了很多错误,并假设一切都是正确的。我们现在已经分配了一个测试人员来分析所有的查询,但这仍然证明非常耗时和压力。
我想知道我们如何创建一个自动化的过程(如果可能的话,没有专门用代码编写它,因为我可以找出如何做到这一点)来验证一组10+不同的输入,验证输出数据,并说计算是否正确。
我知道我可以使用数据库中的特定数据编写脚本,并使用c#创建脚本(数据库是SQL Server)并验证所有的值,但我想知道官方的"标准"是什么,因为我在这方面缺乏经验,我想改进。
如果需要,我很乐意添加更多信息,必要时添加评论。谢谢你。
编辑:我用c#
测试运行SQL查询的代码的标准方法是对其进行单元测试。(有比单元测试更高层次的测试,但听起来你的问题是应用程序的一个小的、特定的部分,所以还不用担心更高层次的测试。)不要尝试直接测试查询,而是测试查询的结果。也就是说,为运行查询的每个c#方法编写单元测试。每个单元测试应该将已知的数据插入数据库,调用该方法,并断言它返回预期的结果。
在c#中进行单元测试的两种最常见的方法是使用Visual Studio单元测试工具或NUnit。如何编写单元测试是一个大话题。Roy Osherove的"单元测试的艺术"应该是一个很好的起点。
这个问题的另一个答案,虽然对于测试代码来说通常是正确的,但根本没有解决测试数据库的问题。
听起来你在进行数据库单元测试。其思想是,您使用所需的模式和测试数据创建一个临时的、隔离的数据库环境,然后验证您的查询是否返回了适当的数据。