SQL测试的最佳实践是什么(存储过程、视图、查询、触发器...)排除自动化测试?大多数情况下,查询可以工作或返回数千行,因此检查它们有点困难。我想知道您通常是如何进行SQL查询测试的。你能给我推荐一本好的(在线)参考资料吗?
发布于 2009-05-08 15:39:22
对于insert、update、delete,我在proc运行之前和之后检查表的状态,以查找满足insert、update或delete条件的记录。因此,如果我要添加7条记录,它们不应该事先在表中,而应该在之后。
有数千条记录的选择可能会更难。没有什么可以代替实际了解你的数据和你期望得到的东西。例如,我知道某个客户大约有2000名销售代表。如果我运行的查询应该包含所有的代表,但只有大约1000个代表,我就知道出了问题。有时我会将查询结果放到临时表中,这样我就可以对其运行统计数据。如果我正在做一个attendee报告,那么根据我的查询,我可以看到报告中有200个不同的会议。如果我仅查看该表,并看到在同一时间段内有350个会议,我会查看排除会议的原因,通常会查看一个或多个排除的会议的详细信息以及相关的表,以了解为什么没有显示出来。通常情况下,您会发现需要说明的状态,或某种类型的坏数据。
我还会查找重复的记录。如果我希望每次会议都有一条记录,而同一会议在那里出现了两次,那么我就知道其中一个连接表的记录比我预期的查询条件的记录要多。
我经常要求我们的一些运营人员也查看查询报告的结果。因为他们比我更接近数据的使用,所以他们经常会发现我没有发现的东西。
另一种技术是故意将用于测试的where子句限制为较小的数据子集,您实际上可以手动检查这些数据子集,以查看您所期望的是否就是您所得到的。如果您有大量的计算或复杂的计算,这将特别有用。每当我进行复杂的计算时,我都会查看一个典型案例的原始数据,并根据原始数据手动计算公式,然后我可以检查查询中的公式是否正确。
我测试触发器的方法是,首先将它们作为常规查询编写(在第一次创建并填充#inserted和#deleted的临时表之后)。我确保在我的临时表中添加多条记录,因为每个触发器必须能够正确地处理多条记录的插入/更新或删除。然后,我编写代码来显示之前的状态和之后的状态,并将其全部放入一个事务中,以便在测试时回滚它。
发布于 2009-05-08 15:26:26
尝试消除额外的变量。
做到这一点的方法:
https://stackoverflow.com/questions/840350
复制相似问题