Slide 1

Slide 1 text

Property-based testing 101

Slide 2

Slide 2 text

El problema https://fsharpforfunandprofit.com/posts/property-based-testing/ http://hypothesis.works/articles/what-is-hypothesis/#how-to-use-it TDD: hacer lo mínimo para que pase vs Generalización vs Edge cases

Slide 3

Slide 3 text

Definición (I) 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.

Slide 4

Slide 4 text

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 input. Definición (II)

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Example-based testing 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.

Slide 7

Slide 7 text

El origen 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.

Slide 8

Slide 8 text

Property-based testing en Python https://github.com/npryce/python-factcheck >> https://pypi.python.org/pypi/factcheck https://github.com/HypothesisWorks/hypothesis-python https://pypi.python.org/pypi/pytest-quickcheck/

Slide 9

Slide 9 text

https://github.com/islomar/poc-python/tree/master/property-based-testing

Slide 10

Slide 10 text

Links de interés ● http://blog.jessitron.com/2013/04/property-based-testing-what-is-it.html ● https://fsharpforfunandprofit.com/posts/property-based-testing/ ● https://fsharpforfunandprofit.com/posts/property-based-testing-2/ ● Property-based testing tools: https://gist.github.com/npryce/4147916 ● https://blog.wearewizards.io/using-haskells-quickcheck-for-python ● TDD + QuickCheck: http://www.natpryce.com/articles/000795.html ● https://www.infoq.com/presentations/hypothesis-afl-property-testing

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content