繁体   English   中英

对选择查询进行单元测试

[英]Unit testing a select query

我将返回一组行,每个行代表一台台式机。

我为找到一种可以对此进行单元测试的方法而感到困惑。 我真的没有什么可以想到的极端条件或标准可以测试。 我可能不希望检查股价,因为我得到的数据确实有5个月了。 这不像是存储人员详细信息,您可以在其中检查一定长度的字符是否始终有效,或特殊字符等。或者货币和其他货币(£,$等)作为字符串。

我将如何测试这种结果集?

另外,在测试查询的返回集时,还有一些问题:

1)测试行数与在服务器上运行查询时的行数相同,这很脆弱,因为有人可能会更改表数据。 如果您有一个测试服务器,这是什么,除非上载更改脚本,否则没有人更改?

2)您是否测试数据集对象不为空? 因此,如果将其实例化为null,但不是在执行查询后将其保留,则该值将保持不变(这并不证明数据正确无误,只是表明已检索到数据)。

谢谢

您可以使用类似NBuilder的组件来模拟数据库。 并且,您可以管理数据集的所有方面时,可以测试数据库交互的多个方面:查询返回的记录数,某个字段中的值范围。 而且,由于数据集总是使用参数创建的,因此您选择的数据总是相同的,因此您可以重现与数据库完全脱钩的测试。

1-

a)决不以任何理由针对生产服务器进行测试。

b)测试应该从已知的配置开始,您可以使用模拟对象或测试数据库来实现(有些人可能会认为单元测试应该使用模拟对象,而集成测试应该使用测试数据库)。

至于测试用例,请从基本功能测试开始-在“常规”行中插入并确保将其恢复。 如果您以后进行重构,将不胜感激。 确保程序正确响应列为空或为空的列。 在所有数据库字段中输入最大值和最小值,并确保要存储它们的对象字段适合该分辨率。 检查数据库中的重复记录或丢失的记录。 如果您有生产数据,请抓取其快照以放入测试数据库中,并确保正确加载。 是否有一个值会长期导致程序其他部分出现问题? 也在这里检查。 释放代码后,将在生产中发现的破坏系统的所有值添加到测试列表中(回归测试)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM