It’s the best time to learn Testing
Testing has never been at the center of software development as it is now. But before we talk about the present state and the future of testing, it is always good to have a historic perspective.
Like many other ideas, the idea of testing in Software Engineering came in from the more settled disciplines of Engineering like Manufacturing. In manufacturing world, testing or checking a product or component is normally an ‘after’ process which involves some inspections and verifications of the finished product. Imagine an assembly line that produces air conditioning unit and at the end of the assembly line, there is final inspection area that performs many checks to make sure that the assembled unit is fit for shipping.
So that’s where when software engineers started thinking about testing the code, it was proposed that it should be done after the coding phase (as described in a classical waterfall model). But just like many other ideas taken from manufacturing world that failed in the Software Engineering world, this idea also fell apart quickly. (I plan to write a post on this topic, some day)
What was proposed then was that testing should be done even before writing code, as pioneered by TDD (test driven development). And that testing should be done after writing the code by turning all those tests in Regression tests that run with every code check-in. This created a lot of value in recent years but now we are moving beyond.
The 21st century software development model is where Testing is at the center or heart of the software development models for faster deliveries as Rob Lambert discusses in this eBook. The ‘Three Amigos’ effect is reaching it’s peak where boundaries of different roles in software development are getting blurred. We like Programmers to do testing, we like Business Analyst to write tests and of course we want Testers to do more testing along with some coding needed to facilitate this process. See how learning essentials of testing is good for you, no matter what role you play in the team.
The future can never be predicted precisely but some ideas are emerging. Though James Whittaker foresees a diminishing role of Testers, I hink that the role of Testing is emerging and perhaps that is more important.
David Heinemmeier Hansson, the creator of Ruby on Rail and basecamp, recently wrote about how system Testing is the key rather than doing TDD. He suggests programmers to write more system tests. He mentions that:
“I think that’s the direction we’re heading. Less emphasis on unit tests, because we’re no longer doing test-first as a design practice, and more emphasis on, yes, slow, system tests. (Which btw do not need to be so slow any more, thanks to advances in parallelization and cloud runner infrastructure).”
Whereas Michael Bolton reminded us in his own way that TDD and making them Regression doesn’t solves all the problems by mentioning it’s limitation in finding new bugs. He emphasizes that to be successful, there has be a coherent strategy of testing at all levels.
All in all, it is the best time to be either a Tester as a professional or learn testing if you have other roles in the team.
Do you see some other future of testing than the one pictured above?