这个问题是关于单元测试的程度.
我一直在编写一个典型的程序,用XML消息中的信息更新数据库.我想到了它需要的单元测试.程序根据复杂的规则插入或更新记录,从而产生许多不同的情况.起初,我决定针对每种情况测试以下几个条件:
在我看来,第三种测试真的很有意义.但很快我发现这并不容易实现,因为你实际上需要对数据库进行快照,然后将其与修改后的数据库进行比较.我很快就开始厌倦了我需要为不同的数据库修改案例编写这样的测试,而这些测试在规范和生产代码设计方面没有多少价值和信息.
然后我想,也许,我测试的太多了?如果没有,那么如果我测试程序不会修改不相关的记录,那么为什么我不测试它:
我完全糊涂了绘制边界的地方.你会在哪里画它?
UPDATE
我的答案读了很多有用的提示和一个标记作为解决方案,因为它有更多有用的意见给我,但仍然是我不清楚如何正确测试数据库更新.测试程序不会改变太多有意义吗?如果是这样,那么有多彻底?
如果一个人有无限量的时间和资源(并且没有什么更好的办法来处理它们:-),那么测试所有可能测试的东西就很好(尽管大多数情况下仍然相当无聊)。然而,我们生活在现实生活中,我们有时间和资源压力,因此我们必须优先考虑我们的测试工作。Kent Beck 很好地总结为“测试所有可能损坏的东西”。
请注意,这在某种程度上也适用于集成/系统/验收测试,但不同之处在于单元测试是白盒测试,因此您应该了解两者
这使您可以将单元测试工作集中在实际问题上。您的方法是否将数据写入输出流?是的?那么测试那里写的(不写的)内容就非常有意义了。您的方法是否执行与邮寄相关的操作?不?那么就没有必要测试它是否向圣诞老人发送邮件了。
系统/验收测试的不同之处在于
因此,更有意义的是撒下更广泛的测试网,测试更多“疯狂”的场景并验证程序不应该做的更多事情。
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |