测试需要准备数据,自动测试时又如何自动去准备数据呢?这些数据在测试开始时,真的有效吗?
自动测试时,如何去准备数据库中的数据?如果项目组用了Ant + JUnit之类的解决方案,如果不能自动的准备数据,你会觉得这样的自动测试根本就不实用。当项目组中的 XPer嚷嚷着要每两个小时集成并测试一次时,你会告诉他们,你准备数据就需要两小时。
用SQL脚本命令吧!至少现在大家都这么做的,而且利用Ant的 <exec> 任务也还很容易将其自动化。但你并不能保证每个测试开始时,你的数据库处于你所认为的应该是的那个状态。至少我认为这真是个问题。以前没出大错是我们测试强度根本就不够,写TestCase时又总是故意规避这一问题。无效测试!
但也许有其他方法,看看这篇文章:《用 DbUnit 和 Anthill 控制测试环境》(Go->) 。
用DbUnit?嘿嘿!老实说,我还没来得及细看:
“… 很多项目使用关系数据库存储数据,因而所有测试策略都需要考虑在每次测试过程中数据库中所发生的事情:如果测试使测试数据库处于不一致状态,那么后面的所有测试都可能失败!一种避免这种情况的方法是在每次测试之前将数据库状态设为一个已知的相关状态。”
“… DbUnit 扩展了 JUnit,它使数据库在测试之间处于一种已知状态,帮助避免造成后面的测试失败或者给出错误结果的问题,如果测试会破坏数据库就会出现这些问题。”
看来,的确可以尝试把DbUnit引入到我们的自动测试中来。
再看看Anthill。Anthill使得构建和发布过程更轻松更有效率。(原文: Anthill makes the build and release process easy and efficient.)Anthill还不止是一个构建工具,按照其官方网站上的介绍,Anthill是一个在组织内可以保证知识的远程共享和构建过程可控制的工具。(原文: Anthill is a tool that ensures a controlled build process and promotes the sharing of knowledge within an organization.). 看看这张图吧:
挺好!可惜是商业软件。
另外:
Ant在业界应该好有地位啊,Ant这Ant那的都出来不少了。单元测试也深入人心,Unit这Unit那的也有一堆了
Ant: 略
NAnt:.Net的Ant
Antenna: 一个Ant的J2ME开发子集
Anthill: 略
请朋友们补充啊 ^_^
JUnit:略
DbUnit: 数据环境测试
NUnit: .Net的JUnit
CppUnit: C++开发者用的单元测试工具
HttpUnit: Web开发者可以采用的测试工具
也请朋友补充啊 ^_^
-end-