Testing 如何为实时应用程序执行TDD
我一直在研究测试驱动开发的学科,对我来说,它在实现算法和输入输出系统方面非常有效 因此,据我所知,TDD的“本质”是为应用程序的每个需求编写测试。通常,该需求定义了具有输入和输出的行为 所以,现在。转到实时应用程序。假设您的应用程序运行一个无限循环。一个常见的例子是图形应用程序或音频应用程序,其中循环的每次迭代意味着输出到屏幕/扬声器 有了这样一个系统,我们可以说需求是这样的: 按下“回车”按钮时,屏幕应显示一个圆圈,圆圈内有文字“Hello World” 那么,您将如何测试这种需求 另一个例子,只是为了更好地说明我的问题。 假设我正在模拟CPU。在每次迭代中,我从文件中提取一个操作码,翻译并执行它。基本上没有实际产出。发生的情况是,输入改变了与CPU仿真相关的一些状态。因此CPU内部没有公共接口 我的要求是“在cpu仿真器上实现mov操作” 这可能是更大的要求“实现操作码仿真”的一部分 所以。使用TDD解决这种行为/需求的好方法是什么 使用TDD解决这种行为/需求的好方法是什么 我通常看到的是设计分成两部分Testing 如何为实时应用程序执行TDD,testing,tdd,real-time,Testing,Tdd,Real Time,我一直在研究测试驱动开发的学科,对我来说,它在实现算法和输入输出系统方面非常有效 因此,据我所知,TDD的“本质”是为应用程序的每个需求编写测试。通常,该需求定义了具有输入和输出的行为 所以,现在。转到实时应用程序。假设您的应用程序运行一个无限循环。一个常见的例子是图形应用程序或音频应用程序,其中循环的每次迭代意味着输出到屏幕/扬声器 有了这样一个系统,我们可以说需求是这样的: 按下“回车”按钮时,屏幕应显示一个圆圈,圆圈内有文字“Hello World” 那么,您将如何测试这种需求 另一个例子
- 这是一件复杂但真正“容易”测试的作品
- 一件很难测试但很“简单”的作品
考虑一下公共方法(可在模块外访问)和(可由您无法控制的代码访问)之间的区别也可能会有所帮助。如何手动测试此类应用程序?@Fabio对于emulator案例,这意味着运行一个测试rom;正好包含我们要测试的指令的整个rom。最后,断言是可视的。您可以直观地断言rom是否显示了您所期望的内容。我想不出一种真正自动化的方法,但听起来类似于验收测试。你能详细说明你的第一点吗?我主要担心的是,有一些稳定的代码片段(需求)在未来不会改变行为,我想测试它们的开发,这样我就可以重构/优化它们,但只有在它们工作之后。问题是大部分代码都是“内部”代码。公共接口是测试单一行为的一种方式。不过,测试界面听起来很有趣(只有当我将所有内容都设置为“受保护”时??)