Last Updated: February 25, 2016
·
301
· jonathaneunice

Test Against Multiple Platforms

You write unit tests for your modules, and integrated system-level tests for higher levels of your application or service, right? Good, good.

Now, make sure to run them against multiple instances of your programming language, platform, versions of your key support libraries, database versions, browsers and browser versions, etc. Whatever environmental variables you can test against? Test against them

This "test against everything, on every platform" used to be an enormous additional workload. For many, simply too much additional work to be practical. But the progress made in recent years in automated test runners, and in virtualized or in-the-cloud test environments, makes what used to be a massive additional workload into almost no extra work. I routinely test, for example, against four or five versions of Python. Typing the "run tests" command (in my case, tox), is no harder for five platforms than it is for one. And given modern system performance, its still usually done by the time I've returned with my next cup of coffee.

While it's no more work, it shows me a great deal about how the platform is evolving, what assumptions are changing across different language, library, and middleware versions, and in different runtime environments. It helps me future-proof my modules, and gives me strong insights into where I may have made dicey assumptions. It has improved my overall code quality and platform knowledge enormously. Highly recommended!