<aside> 💡 Hola friends! We recently created a Discord for Software Automation where we discuss these kinds of topics on a bi-weekly basis.
Responses range from people with 0 to 30+ YOE in the industry and wanted to share this with the community!
</aside>
This discussion explores various perspectives on software testing strategies, primarily focusing on the Testing Pyramid model and its alternatives. Contributors, ranging from experienced developers to QA professionals, share their views on the effectiveness and practical application of different testing approaches. The conversation covers topics such as the balance between unit, integration, and end-to-end tests, the challenges of implementing these strategies in real-world scenarios, and the evolving nature of testing methodologies in response to changing development practices and project requirements.
Key points of discussion include:
<aside> 💡 Below are gathered discussions from the Discord as well as /r/softwaretesting, /r/programming, and /r/qualityassurance. Enjoy!
</aside>
IMO The
Testing Pyramid
is a decent guideline overall and I’ve had success following it majority of my career, but in the last few years I have leaned more towards aTesting Diamond
these days where I have most emphasis on myIntegration
tests andEnd-to-End
/Unit
tests are not the majority.
My reasoning behind putting more emphasis on
Integration
versusUnit
is that many things start being conflated withUnit
tests that IMO aren’t trulyUnit
tests andIntegration
tests seem to give the best bang for their buck if tooling is in place to support them.
Unit tests can be more difficult to write for developers especially if the code is a mess and isolating your
System Under Test
becomes a nightmare ofStubs/Mocks/Doubles/Fakes/Illuminati
to test one function and may require refactoring.
Not to mention the more one starts mocking things, you might accidentally bypass an important
System Under Test
without knowing it.