Hypothesis with David MacIver

The Python Podcast.__init__

Episode | Podcast

Date: Sat, 09 Apr 2016 05:00:00 -0400

<p>Visit our <a href="http://pythonpodcast.com?utm_source=rss&amp;utm_medium=rss">site</a> to listen to past episodes, support the show, join our <a href="https://discourse.pythonpodcast.com?utm_source=rss&amp;utm_medium=rss">community</a>, and sign up for our mailing list.</p> <h3>Summary</h3> <p>Writing tests is important for the stability of our projects and our confidence when making changes. One issue that we must all contend with when crafting these tests is whether or not we are properly exercising all of the edge cases. Property based testing is a method that attempts to find all of those edge cases by generating randomized inputs to your functions until a failing combination is found. This approach has been popularized by libraries such as Quickcheck in Haskell, but now Python has an offering in this space in the form of Hypothesis. This week, the creator and maintainer of Hypothesis, David MacIver, joins us to tell us about his work on it and how it works to improve our confidence in the stability of our code.</p> <h3>Brief Introduction</h3> <ul> <li>Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.</li> <li>Subscribe on <a href="https://itunes.apple.com/us/podcast/podcast.-init/id981834425?mt=2&amp;uo=6&amp;at=&amp;ct=&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">iTunes</a>, <a href="http://www.stitcher.com/s?fid=64838&amp;refid=stpr&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Stitcher</a>, <a href="http://tunein.com/embed/follow/p726240/#?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">TuneIn</a> or <a href="https://www.pythonpodcast.com/feed/mp3/?utm_source=rss&amp;utm_medium=rss">RSS</a></li> <li>Follow us on <a href="https://twitter.com/Podcast__init__?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Twitter</a> or <a href="https://plus.google.com/+Podcastinit-the-python-podcast?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Google+</a></li> <li>Give us feedback! Leave a review on <a href="https://itunes.apple.com/us/podcast/podcast.-init/id981834425?mt=2&amp;uo=6&amp;at=&amp;ct=&amp;utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">iTunes</a>, <a href="https://twitter.com/Podcast__init__?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Tweet</a> to us, send us an <a href="mailto:hosts@podcastinit.com">email</a> or leave us a message on <a href="https://plus.google.com/+Podcastinit-the-python-podcast?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Google+</a></li> <li>Join our community! Visit <a href="https://discourse.pythonpodcast.com?utm_source=rss&amp;utm_medium=rss">discourse.pythonpodcast.com</a> for your opportunity to find out about upcoming guests, suggest questions, and propose show ideas.</li> <li>I would like to thank everyone who has donated to the show. Your contributions help us make the show sustainable. For details on how to support the show you can visit our site at <a href="http://pythonpodcast.com?utm_source=rss&amp;utm_medium=rss">pythonpodcast.com</a></li> <li>Linode is sponsoring us this week. Check them out at <a href="http://linode.com/podcastinit?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">linode.com/podcastinit</a> and get a $20 credit to try out their fast and reliable Linux virtual servers for your next project</li> <li>Open Data Science Conference on May 21-22nd in Boston. 20%</li> <li>Your hosts as usual are Tobias Macey and Chris Patti</li> <li>Today we are interviewing David MacIver about the Hypothesis project which is an advanced Quickcheck implementation for Python.</li> </ul> <h3>Interview with David MacIver</h3> <ul> <li>Introductions</li> <li>How did you get introduced to Python? &#8211; Chris</li> <li>Can you provide some background on what Quickcheck is and what inspired you to write an implementation in Python? &#8211; Tobias</li> <li>Are there any ways in which Hypothesis improves on the original design of Quickcheck? &#8211; Tobias</li> <li>Can you walk us through the execution of a simple Hypothesis test to give our listeners a better sense for what Hypothesis does? &#8211; Chris</li> <li>Have you had trouble getting people to use Hypothesis? How has adoption been? &#8211; David</li> <li>What does this sort of testing get you that conventional testing doesn’t? &#8211; David</li> <li>Why do you think this sort of testing hasn’t caught on in the Python world before? &#8211; David</li> <li>Are there any facilities of the Python language that make your job easier? Are there aspects of the language that make this style of testing more difficult? &#8211; Tobias</li> <li>What are some of the design challenges that you have been presented with while working on Hypothesis and how did you overcome them? &#8211; Tobias</li> <li>Given that testing is an important part of the development process for ensuring the reliability and correctness of the system under test, how do you make sure that Hypothesis doesn’t introduce uncertainty into this step? &#8211; Tobias</li> <li>Given the sophisticated nature of the internals of Hypothesis, do you find it difficult to attract contributors to the project? &#8211; Tobias</li> <li>A few months ago you went through some public burnout with regards to open source and Hypothesis in particular, but circumstances have brought you back to it with a more focused plan for making it sustainable. Can you provide some background and detail about your experiences and reasoning? &#8211; Tobias</li> <li>What’s next for Hypothesis? &#8211; Chris</li> </ul> <h3>Keep In Touch</h3> <ul> <li><a href="https://twitter.com/drmaciver?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Twitter</a></li> <li><a href="http://drmaciver.com?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Blog</a></li> <li><a href="http://tinyletter.com/drmaciver?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">NewsLetter</a></li> </ul> <h3>Picks</h3> <ul> <li>Tobias <ul> <li><a href="http://typeform.io?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">TypeForm</a></li> <li><a href="https://podcastinit.typeform.com/to/gCdmf7?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Listener Survey</a></li> <li><a href="https://tobiasmacey.typeform.com/to/kq6rwd?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">CI Survey</a></li> </ul> </li> <li>Chris <ul> <li><a href="http://seashinegame.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Seashine</a></li> <li><a href="https://www.checkio.org/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">CheckIO</a></li> <li><a href="https://medium.com/@mscccc/jr-developers-0-hello-world-dd1d4a2a098c#.bual8m633?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Mike Coutermarsh’s Jr. Developer series</a></li> </ul> </li> <li>David <ul> <li><a href="http://makeitstick.net/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Make It Stick by Peter Brown</a> </li> <li><a href="https://www.beeminder.com/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Beeminder</a></li> <li><a href="https://en.wikipedia.org/wiki/Vorkosigan_Saga?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">Vorkosigan Saga by Lois McMaster Bujold </a></li> </ul> </li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&amp;utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a><img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fwww.pythonpodcast.com%2Fepisode-52-hypothesis-with-david-maciver%2F&amp;action_name=Hypothesis+with+David+MacIver+-+Episode+52&amp;urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&amp;utm_source=rss&amp;utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" /></p>