2011-02-25 49 views
2

我试图改进我的应用程序中的自动化测试,但我不确定最佳的处理方式。如何自动测试我的数据库驱动功能?

我的应用程序从多种形式收集数据,重新编码并将其存储在数据库中。我创建了一个非常复杂的SQL视图,它将结构扁平化,因此可以将它导入到统计数据包(SPSS)中。

我担心的是视图很复杂,我想围绕它自动执行一些测试。

目前我有一些功能测试,创建一个完整的表单对象模型,并将其发送到应用程序。然后,我从数据库中检索视图,并使用反射来测试检索的视图字段是否与原始数据匹配。

的问题是,这是非常手动和沉重,我的灯具是漫长的,也是很麻烦添加新场景(即模型不完全的不同部分)。

有没有人对我如何改进我的测试策略有任何建议?提示技巧都欢迎!

谢谢!

回答

2

DbFit是为这个完美的。 DbFit是FitNesse的扩展,您可能已经在使用“Fixtures”。在任何情况下,DbFit都可以很容易地设置一个测试,您可以在其中输入一些数据,运行View,比较预期的结果,然后它会自动回滚刚刚为测试播种的数据。当您向视图添加更多字段时,更新非常容易。并且它不需要像其他一些SQL“单元”测试套件那样在数据库中添加其他对象。

你可以找到在使用DbFit更多信息:

http://benilovj.github.com/dbfit

http://groups.google.com/group/dbfit

这里是我写的是一个教程,介绍基本选项:

http://www.sqlservercentral.com/articles/Testing/64636/

+0

太好了,谢谢!我第一次错过了这个答案:) – laura

1

这是一个很难回答的问题。对我而言,这听起来像是你想做一个单一的测试,一次测试全部。

首先,你的应用应当建立,所以每个功能隔离在自己的类,从而容易测试和容易通过存根测试其他东西的时候更换。应该注入其他函数的依赖关系(依赖注入)。

其次,你应该使用相同的技术用于外部系统,如数据库连接和SPSS文件作家。这涉及包装这些功能,因此这些依赖关系也可以被注入,因此在测试应用程序的其他方面时会被存根代替。

第三,要知道,如果测试是很难写,时间的99.99%,这表明你的设计是没有那么强,因为它可以。

问候, 莫滕

+0

感谢您的回复。我有独立的单元级别测试,并且模拟了系统中所有组件的功能测试。我想我真正想在这个层面上测试的是数据库视图正在提取正确的数据。即是我的SQL正确。也许我不应该在功能测试中对此进行测试 - 但这是我认为能做到的唯一方法。你怎么看? – laura