x, y satisfy a relation R(x, y), then F(x), F(y) satisfy a relation R’(F(x), F(y)) ✤ A way to solve the oracle problem in testing ✤ Oracle problem: we do not know the correct F(x) for x ✤ Example: sin(x) ✤ Hard to know the correct sin(x) for the given x ✤ But sin(x) = sin(x+2π) must always hold
F(x), not a correct value of F(x) ✤ Automatic test case generation using type information ✤ Started from Haskell’s QuickCheck but now there is an implementation for almost any language ✤ We introduce Kotlin implementation (kotlintest)
with type inference, and memory-safe language ✤ Full interoperability with Java ✤ Developed by JetBrain, “Preferred language for Android app developers” (Google) ✤ Kotlintest supports property based testing
based on types ✤ QuickCheck (for Haskell) deﬁnes generators for almost all types (?) ✤ Generators must be deﬁned manually for Classes in Kotlin (but all base types are already covered)