A Fresh Look at Testing
There are as many opinions about testing as there are developers, and then some. The opinions run the range from considering all testing a waste of time, to the belief that only unit testing is worthwhile, to an insistence that end to end tests are the most important, to a dismissal of end-to-end tests as not maintainable.
Because of all the fragmented practices and preferences around testing, it’s very rare to find a mobile dev team with coherent, consistent and comprehensive testing practices. I’ve been implementing, writing about and creating tools for testing on iOS for the last 5 years and although I’ve seen many pitfalls and failures, I think the more important lessons have been experiencing what testing practices actually add value, and why. This series of articles is a distillation of those successful experiences, and hopefully a blueprint for replicating it on other teams and projects.
Be warned that the subject of testing has a lot of “common wisdom” that, in my experience, ranges from not particularly useful to downright wasteful of time and resources. While these articles will reference some useful established principles of testing, they will just as frequently attempt to call out dogma and practices that add no real value despite being widely accepted.
The goal of all this is simple: to help mobile developers build tests that add more value to the project than they cost in resources to build.
It’s not enough for tests to provide hypothetical or academic benefits, because development costs real time and work to do. The tests you build should be unambiguously “worth it” and align with the goals of your project and team. Even a few of these net-positive tests will help your codebase. The more your team creates and maintains, the greater that benefit should be.
I encourage readers to always keep this in mind when implementing tests and testing practices. Keep a critical finger on the pulse of how much value the tests are adding. Never write tests just for the sake have having tests. Make the work you put into them count, and deliver real value to your project.
With that said, the below are the articles that comprise A Fresh Look as Testing. I’ll continue updating this list as new blog posts are added:
- What Is Testing For Anyway?
- Testing and the Product Cycle
- The Two Kinds of Tests
- What About Unit Tests?
- A Useful and Practical Approach to Testing
- Creating a Sustainable Software Cycle
I look forward to hearing thoughts and feedback in the comments or on Twitter, and maybe having some great discussions as a result!
Next up: We start the series with an answer to the question “What is testing for anyway?”