Flink
Flink 的测试工具只有 local cluster fake,而且它需要用户花费大量的精力手动生成所有那些与测试中的每个特定功能相关的流(及其相应的输出)。
Flink文档中描述的测试流程序的策略建议使用经典的单元测试框架来测试单个运算符,并使用 local cluster fake 来测试一个完整的程序,同时也参考了一些具有不稳定接口的内部测试工具来测试检查点和状态处理。
然而,在所有这些情况下,用户都需要手动介绍输入流和预期输出,一般来说,输入流和预期输出可能是巨大的,这使得这些测试技术变得繁琐而容易出错。
此外,文档本身指出,状态处理测试 “由于时间上的依赖性,状态处理测试可能很棘手”,这就强调了面向流的测试技术的必要性。
Flink Check
Flink Check 是 Apache Flink 的一个基于属性的测试库,它扩展了 ScalaCheck 的线性时序逻辑运算符,适用于测试 Flink 数据流转换。
基于属性的测试(PBT)是一种自动的黑盒测试技术,它通过生成随机输入并检查获得的输出是否满足给定的属性来测试功能。
FlinkCheck 提供了一个有边界的时间逻辑,用于生成函数的输入和声明属性。这个逻辑是为流媒体系统设计的,它允许用户定义流如何随时间变化,以及哪些属性应该验证相应的输出。
FlinkCheck随机生成指定数量的有限输入流前缀,并对Flink运行时产生的输出流进行评估。
Flink Check 是基于 sscheck,这是 Apache Spark 的一个基于属性的测试库,所以它依赖于 sscheck-core 项目,其中包含了 sscheck 和 Flink Check 共同的代码,特别是系统所基于的 LTLss 逻辑的实现。
LTLss 是一种有限字的离散时间线性时序逻辑,在 Spark Streaming 的 Property-based testing for Spark Streaming 的论文中有详细介绍。
Getting started
Flink Check 已经用 Scala 2.11.8 和 Apache Flink 1.8.0 进行了测试。
Flink Check 可作为 Maven 依赖使用
<dependency>
<groupId>es.ucm


621

被折叠的 条评论
为什么被折叠?



