Test like a scientist
QuickCheck, the father (y. 1999)
Checks that a function abides by a property or hypothesis.
The property is abstracted from any input and output data.
Associative
a + (b + c) = (a + b) + c listA.append(listB.append(listC)) == (listA.append(listB).append(listC)
https://github.com/QAJungle/cates/tree/master/property-based-testing-kotlin
https://github.com/Karumi/MaxibonKataKotlin
Commutative
a + b = b + a Math.max(a,b) == Math.max(b,a)
Idempotent
f(a) = f(f(a)) Math.abs(x) == Math.abs(Math.abs(x))
Bilbo testing (There And Back Again)
list == list.Reverse().Reverse() book == book.toDto().toDomain()
By Aritz Águila
CATE for a Property-based testing