tdd - 测试驱动开发与自动定理证明

标签 tdd automated-tests

我对数字逻辑/架构设计感兴趣的一件事是自动定理证明来验证,例如,浮点乘法模块。

单元测试很方便,但尝试测试(蛮力)每个可能的浮点模块输入几乎是棘手的。相反,您会发现 (1) 它总是会生成正确结果的证据,或者 (2) 表明它至少会生成一个错误结果的证据。

我现在正在尝试将类似的逻辑集成到我的软件中,我想知道我是否可以将它与测试驱动开发结合使用或代替测试驱动开发?

最佳答案

过去我在形式验证方面有很多经验,尽管它是针对硬件组件 (VHDL/Verilog) 的。相同的原则可以应用于软件,但如果您有任何类型的 I/O 或事件,输入空间就会变得难以管理。随着状态空间变得太大,在大型“模型”上证明任何类型的陈述也是不切实际的。

理想情况下,您可以在“计算”函数上使用定理证明器来证明它们的正确性。但是,出于以下几个原因仍应使用测试:

  • 您的定理中可能存在“错误”。如果编写定理的人就是编写被测实际代码的人,这尤其“危险”。
  • 被检验的定理往往是不完整的。
  • 必须在您的测试环境中放置断言,以确保您用于代码输入(“环境”)的假设是有效的。

关于tdd - 测试驱动开发与自动定理证明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/833259/

相关文章:

unit-testing - 您建议从TDD转移到BDD的哪些步骤?

PHPUnit 测试 - 无法断言实际大小 11935 与预期大小 3 匹配

java - 在 Spring MVC 应用程序中使用 Selenium WebDriver 进行前端测试

android - 设置值时未调用 NumberPicker OnValueChangeListener

magento - (单元)测试 pdf 生成

Android:仅为测试添加单独的资源

multithreading - 使用 TDD 驱除线程安全代码

java - 在Java中为属于同一组的测试定义@BeforeGroups方法的执行顺序

c# - 检查 HTML 元素是否不存在

javascript - 用 promises 替换 TestCafe async/await