Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Property Based Testing

Property Based Testing

The following presentation focuses on the Property Based Testing using Python framework Hypothesis.

48fdf38336211f8dbf454afcc6575806?s=128

Aniket Maithani

February 19, 2017
Tweet

Transcript

  1. - Aniket Maithani

  2. § 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. § A property-based testing framework runs the same test over and over with generated input § The main efficiency parameter of a property testing algorithm is its query complexity, which is the maximum number of input symbols inspected over all inputs of a given length (and all random choices made by the algorithm)
  3. None
  4. § Define a function which we want to write test

    for :
  5. § Write down the test function § Write down exact

    inputs § Write down the expected result(s) § Run the test and checks if assertion matches or not
  6. None
  7. § You may miss the boundary/edge cases! § Writing code

    for test(s) becomes complex and time consuming as your underlying feature-set grows § Maintaining tests in itself becomes a task : and that’s why most of the devs don’t like to write test cases!! [SAD BUT TRUE]
  8. § Writing random, unbiased examples is hard...

  9. None
  10. § YOU DEFINE THE INPUTS § DEFINE EXPECTED RESULTS §

    LET THE FRAMEWORK DO THE REST OF THE WORK!! § SOUNDS IMPOSSIBLE??? LET’S HAVE A LOOK AT IT
  11. None
  12. None
  13. §Suppose we want to write test for Sorting a list

  14. None
  15. None
  16. None
  17. None
  18. §Strategy is a basic building block of test(s) while using

    Hypothesis. §Hypothesis has built in types : Numbers, Strings, Collections, Dates. §One can write their own strategies! §Write Less Do More!
  19. § Fake_factory :

  20. None
  21. None
  22. None
  23. None
  24. §Example Link : http://hypothesis.readthedocs.io/en/latest/data.html

  25. § Hypothesis creates saved models. § This will run inside

    your testing transaction when using the test runner. § If you use the dev console this will leave debris in your database.
  26. None
  27. § How many times will Hypothesis run my test? §

    People generally assume that the number of tests run will depend on the specific strategies used, but that’s generally not the case. Instead Hypothesis has a fairly fixed set of heuristics to determine how many times to run, which are mostly independent of the data being generated. § The short answer is 200. Assuming you have a default configuration and everything is running smoothly, Hypothesis will run your test 200 times. § The longer answer is “It’s complicated”. It will depend on the exact behaviour of your tests and the value of some settings § For the passing case there are two other settings that affect the answer: max_examples and max_iterations.
  28. §http://hypothesis.readthedocs.io/ §http://hypothesis.works/ §http://hypothesis.works/articles/details/

  29. None
  30. § Aniket Maithani § Nature Lover, FOSS Enthusiast, Python Programmer

    § Learner § Loves to Travel and Make Friends § @2aniketmaithani § in.linkedin.com/in/aniketmaithani § Github.com/aniketmaithani