《自然》杂志曾在2016年刊登了一篇关于可复现性危机的文章1,作者对将近一千五百名科学家进行了问卷调查,结果显示,有超过 70% 的研究人员并未能成功复制另一位科学家的实验,有一半以上的研究人员未能复制自己的实验。卡尔·波普尔(Karl Popper)也曾说过,"non-reproducible single occurrences are of no significance to science."(不可重复的单次试验对科学没有任何意义)。
数据科学也属于科学,可复现性无论对于我们自己或使用我们工作成果的他人都有着重要的意义,在 KNIME 中进行测试,能在一定程度上了解我们工作流的质量,及时发现错误,提高对最终结果的信心,以及保证我们工作的可复现性(reproducibility)。从实用的角度来说(这也是我们《数据分析指北》的风格),在一些探索性的工作,或是一次性的工作上(one-off workflow),并不值得做专门的测试,只需要完成需要的功能,做一些简单的手动测试就可以了。但某些时候,我们会构建自己的分析模式,重复使用我们创建的某些特定模块(集),而且可能会在多个不同的 workflow 中使用它们。这个复用的逻辑和其他编程语言中的库(library)一样,对于这些抽象出来的,和具体任务无关的模块(集),我们希望它们是正确的,希望在 KNIME 版本升级以后它们能正常工作,希望它们有很好的普适性(因为我们要在多个不同的 workflow 中使用),希望在某一次对这些创建的模块(集)改进之后,没有破坏它原有的功能。在这些时候,简单的手动测试就有点困难了,我们需要的正是专门