O'Reilly logo

Beautiful Testing by Adam Goucher, Tim Riley

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Ensuring Correctness

The obvious—though not only—purpose of testing is to find bugs. First, each developer runs most of the tests before submitting. Why only “most”? The entire test suite, including all the options, takes over an hour to run.[24] Most developers won’t wait that long before checking in. The tests we ask developers to run[25] take at most seven minutes, a length of time most developers are willing to wait. We prefer to get them to run a slightly less complete set of tests rather than ask them to run the whole thing and have them ignore that request.

But, since the whole test suite does provide value on top of the smoke tests, we need some way to run them.

The Buildbot System

The Buildbot system[26] tests every check-in on many platforms. It runs on all of the active branches (currently 2.6, trunk [2.7], 3.1, and py3k [3.2])[27] on roughly 15–20 different architectures, and we’re about to add even more systems.[28] The machines are donated, and we’re always looking for more diversity. When any buildbot sees a build or test failure, it sends email to the python-checkins mailing list.[29] In theory, after submitting a change, a developer pays extra attention to her email to see if she has caused any problems.

Since most developers are on an x86, running Linux or Mac OS X, and compiling with gcc,[30] this serves to make sure that Windows and other minority platforms stay stable. We have a subset of “stable” platforms, and we don’t release new versions of Python until those ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required