我有一个数据库支持的应用程序,很遗憾,它的数据库测试很少。我试图快速有效地测试数据库。有效地测试数据库后端
到目前为止,我已经学会:
- 测试的应用程序把/获取数据到数据库
- 使用模拟DB的测试对象/关系映射代码
我仍然在努力实现第一点。看来,测试的唯一方法是将数据插入到真正的表中。但是用户当然不希望看到我的测试数据。这是我目前在做的伪代码:
begin a transaction
insert a few rows
check that no error has occurred
'select' the rows back out
check that no error has occurred, check that data out matches data in
tell the test framework that it's successful
abort the transaction
这是一个最佳实践,或某种可怕的反模式?有更好的建议吗?
+1,因为我觉得你提一些好点,但我不知道我理解为什么'在生产测试是非常糟糕的practice'。我会认为这是一个很好的做法 - 因为数据库测试的一点是验证用户计算机上的应用程序是否可以与用户计算机上的数据库交谈,即所有内容都已正确安装。 OTOH,在检查数据库模式是否应用程序期望的情况下,该语句对我来说是有意义的。 –
一个坏主意,你提出的原因!让我们说测试中出了问题,你不想要软管你的生产环境。您也不想用测试数据污染您的生产数据库,这使得难以对生产数据执行度量标准,偶尔会导致客户想知道发生了什么。此外,通过测试数据库,您可以控制内容 - 这允许您进行真正的呼叫,获取用户数量并对其进行测试,而数据在生产中不断变化。 – Kane
超出评论空间。在行业最佳实践中,至少有三种环境:生产(duh),测试(因此您可以使用已知数据在产品投入生产之前检查更改)和开发(因为开发人员经常在弄清楚事情的同时弄糟东西,而您不希望开发出干扰测试或更糟,生产的功能)。 – Kane