Introduction to property-based testing concepts.
Property-based testing 101
TDD: hacer lo mínimo para que pase vs Generalización vs Edge cases
Property-based tests make statements about the output of your code based on the
input, and these statements are verified for many different possible inputs.
Rather than writing a test that tests just a single scenario, you write tests that describe
a range of scenarios and then let the computer explore the possibilities for you rather
than having to hand-write every one yourself.
A single test is run hundreds of times with randomly generated inputs (fuzzing).
A property-based testing framework runs the same test over and over with generated
Property-based tests are best combined with example-based tests.
Examples help you start organizing your thoughts, and they're easier for future-you to
read and understand when you come back to this code later.
Humans think in examples. Programs don't extrapolate. Property-based thinking and
property-based testing can bridge between us and the computer.
Math, it's a tool.
Haskell Quickcheck: http://hackage.haskell.org/package/QuickCheck
The programmer provides a specification of the program, in the form of properties
which functions should satisfy, and QuickCheck then tests that the properties hold in a
large number of randomly generated cases.
Property-based testing en Python
https://github.com/npryce/python-factcheck >> https://pypi.python.org/pypi/factcheck
Links de interés
Property-based testing tools:
TDD + QuickCheck: