让最终用户自己来验证软件的功能正确。它的作用不仅在于防止破坏用户数据的bug,而且可以帮助发现你的软件在新的环境中可能出现的无法预料的问题。新的环境包括不同的,新的硬件,不同的网络配置,或者各种各样的其它差异。自动测试可以把你的测试转移到其它平台上,确保你的程序在任何地方都能正确运行。
四、工具(Tools)
下面的几个工具对自动测试非常有用:
JUnit。JUnit是单元测试的鼻祖。其它工具经常在JUnit基础上创建,因为JUnit提供了单元测试和功能测试都必须用到的两项功能:断言检查和结果报告。可以在www.junit.org找到JUnit.
HttpUnit。HttpUnit是在JUnit之上构建的测试框架,它支持web应用的黑盒测试和in-container测试。它是功能,你可以用它验证软件符合业务需求,在可视的级别符合预期行为。有趣的是,HttpUnit的基础代码实际上跟测试没什么关系。HttpUnit库的目的是加强HTTP对web应用的访问,它支持的特征包括状态管理(cookies)、请求提交、应答解析(解析),以及网络蜘蛛(web spider)工具包需要的一些特征。HttpUnit还有一个支持容器内测试的类ServletUnit。在JUnit提供的断言功能和结果报告功能的基础上,HttpUnit成为了一个测试web应用非常有用的工具。可以在www.httpunit.org找到HttpUnit。
jUnit. jWebUnit是在HttpUnit上创建的一个辅助工具包,它减少测试web程序需要你写的代码。简单的说,你可以把它当作HttpUnit的宏程序库,提供到HttpUnit代码段的快捷方式,简化web程序测试中的大多数行为。HttpUnit提供相对底层的接口让你自己定制许多事情。你可能觉得 jWebUnit有用,也可能不,如果用HttpUnit可以解决你的所有问题,jWebUnit也可以。它可能带来更多的代码,但你有更好的控制。可以在http://jwebunit.sourceforge.net/找到jWebUnit。
StrutsTestCase. StrutsTestCase是为测试Struts应用在JUnit基础上创建的测试框架。Struts是用Java开发web应用的程序员非常喜欢的模型-试图-控制器(MVC)平台,它简化了数据、表示和逻辑分离的易维护性组件式代码开发。Struts使web程序容器间(in-container) 的功能测试和单元测试变得复杂,因为它们夹在servlet容器和你的程序之间。这就意味着这个测试框架要认识Struts,能处理Struts的容器间测试。由于不需要知道web程序的内部实现,HttpUnit的黑盒测试仍然工作得很好。然而你无法用HttpUnit做Struts应用的容器间测试,因为HttpUnit要独立的位于你的程序和servlet容器之间。StrutsTestCase是专为Struts程序的的容器间测试设计的。 StrutsTestCase可以在http://strutstestcase.sourceforge.net/获得。
五、总结(Conclusion)
如果你同意测试是重要的,而不仅仅是需要的,那么你就会开始自动化你的测试,或者继续已经使用的自动测试。如果你同意自动测试比手工测试优越,那么在开发程序代码的同时发展自动测试就是合理的。维护测试代码只是增加了一点点负担,但它使你不必担心程序是否满足测试代码的需求。采用了自动测试和程序代码修改的同时维护测试代码这两个原则,你就是采用了测试驱动的开发。程序的可靠性和质量都会得到提高,你的客户,不管是外面的零售客户,还是其他部门的同事,可能会感谢你,也可能更少的因为软件不稳定打扰你,或者两都都有。最后,写测试代码比反复的用鼠标点来点去的测试软件有趣得多。
现在准备阅读测试驱动的开发系列的下一篇论文。这篇标题为“业务层测试驱动的开发”(“Test-driven Development for the Business Tier”)的论文将探讨服务器端组件测试的细节,包括EJB和普通的Java类。
原文转自:http://www.uml.org.cn/Test/200911101.asp