你如何对你的T-SQL进行单元测试

A-K*_*A-K 46 database sql-server unit-testing sql-server-2005 sql-server-2008

你如何对你的T-SQL进行单元测试?您使用哪些库/工具?

单元测试涵盖了多少百分比的代码,如何衡量?您如何确定首先进行单元测试的模块?

您认为您在单元测试线束上投入的时间和精力是否得到了回报?

如果您不使用单元测试,可以解释原因吗?

Kub*_*aun 21

你如何对你的T-SQL进行单元测试?您使用哪些库/工具?

看看这个 TSQLUnit和这个tSQLt.

我已尝试在许多语言中使用一些不同的框架来测试T-SQL,例如junit或nunit.我走这条路的原因是为了利用这些其他语言的丰富测试环境.例如,如果您使用nunit,它有一个很好的命令行和gui查看器来查看测试的状态,因为您使用.net编写测试它很容易挂钩到sql server.JUnit与许多商业和开源IDE环境(如NetBeans和IDEA)有很好的集成,并使T-SQL测试更像Java代码测试,这非常丰富.否定的是你不仅要编写T-SQL,还要编写java或.net来测试你的T-SQL.

我还使用了Ruby with Rake(它就像make或ant),并对sqlcmd进行了系统调用,以执行sql脚本,这些脚本在转换包含的测试中.脚本将值和字符串返回给ruby以通过或未通过测试.我最喜欢这种方法,因为它非常精简,容易让其他人接受.上面提到的其他路由要求开发人员使用.net或java,如果你有所有DBA类型可能很难克服,使用sql脚本方法的ruby更容易从我的经验中销售.DBA类型往往是开放的,能够像语言一样轻松获取脚本,而Ruby的学习曲线较低,脚本相对于.net或java类很容易运行.

单元测试涵盖了多少百分比的代码,如何衡量?

可能只有20%只是因为大多数数据库系统历史上都没有为它们创建测试,所以我正在创建复制过程中积极添加测试并添加测试,因为新的缺陷和增强功能出现了.

您认为您在单元测试线束上投入的时间和精力是否得到了回报?

数据库是大多数企业的基础.在我看来,它总是得到回报.如果您的企业容忍客户的垃圾和高故障率,那么没有任何测试可能不值得,因为它不是免费的.

如果您不使用单元测试,可以解释原因吗?

我很乐意看到是否有人想出一个不荒谬的答案.有点像你为什么不把你的孩子放在汽车座椅上开车..."他们花了太多钱"......"花太多时间把孩子放进去"......"没有它他是安全的"......"有什么可能出错的理由"......"没有足够的时间"所有这些都是bs.

是的,我知道可能有点极端,但是如果你有一个系统并且它带来了公司的价值,它应该联合测试,以帮助在问题成为生产问题之前解决.单元测试不是灵丹妙药,但它是我们必须尽力做到的一个工具.

总的来说,在结构化测试方面,大多数人都会给数据库一个免费的通行证.我不知道为什么会这样,但我已经在公司后见过它了.我很想看到这种变化.


Ed *_*per 6

对于单元测试工具,我在DBFit上取得了最大的成功.

我从未找到过测量TSQL测试覆盖率的工具.

在接受了设置测试所涉及的一定程度的痛苦后,我发现一旦项目达到了一个非常微不足道的复杂程度,我就可以通过单元测试来提高代码的质量.