测试驱动开发可以正式验证吗?是否可以保证程序正确且正常运行?选择测试有什么正式的依据吗?有什么算法可以遵循吗?
4 回答
TDD 不是灵丹妙药。您仍然必须编写代码,并且您仍然可以在逻辑和代码中犯错误。我认为 TDD 是一种思维工具,可以帮助您以非常系统的方式解决问题。
以下是一些文章,可以帮助您了解要遵循的算法:
很好的一点是,如果没有系统功能的正式规范,就很难编写一组已知足够的测试。以下是一些可能会有所帮助的论文,以及他们摘要中的引用:
http://www.pst.ifi.lmu.de/~baumeist/publications/baumeister04a.pdf
“本文的目标是表明,在适当的工具支持下,可以将正式规范与测试驱动开发相结合,而不会失去测试驱动开发的敏捷性。”
http://wiki.overturetool.org/images/d/df/WS9Mochio.pdf
“本文介绍了使用 VDM++ 形式规范语言作为可扩展敏捷形式 (SAF) 软件开发方法的基础,这是一种用于任务关键型或大规模软件开发的敏捷方法”
https://online.tugraz.at/tug_online/voe_main2.getVollText?pDocumentNr=275810&pCurrPk=67400
“在本文中,我们建议将几种技术组合到一个敏捷的正式开发过程中:基于模型的测试、正式模型、模型改进、模型检查和测试驱动开发。”
测试驱动开发可以正式验证吗?
测试驱动开发没有正式的验证,因为它的主要目标不是产生测试,而是提供一种接近设计和编码的方法。
是否可以保证程序正确且正常运行?
我认为无论我们采用哪种方法,都不能完全保证程序是正确的。
选择测试有什么正式的依据吗?
我们在 TDD 中选择测试的方式是编写那些应该指导我们完成我们将要编写的下一个代码单元的实现的测试。
有什么算法可以遵循吗?
它实际上非常简单(但很难精通)。
- 想想应该编写的下一个代码单元。
- 编写一个由于没有实现代码而将失败的测试。
- 编写代码并确认测试成功。
- 重构