So for me Testability in practical terms means how easy something is to test.
When there is a lack of testability it slows down feedback, it reduces the quality and dept of our testing efforts, it increases cost, destroys motivation and morale and ultimately results in poor quality.
Conversely focusing on Testability can unleash your development team, to do their best work, allowing them focus on the work that matters and facilitates:
- Faster Development.
- Earlier testing
- Broader & deeper testing
- Better more robust automation
This focus allows teams get changes into production safely and quickly in a sustainable way.
I use the 10 P’s of Testability model to help teams identify all the factors that influence the team testing experience:
People
The people in our team possess the mindset, skillset & knowledge set to do great testing and are aligned in their pursuit of quality.
Philosophy
The philosophy of our team encourages whole team responsibility for quality and collaboration across team roles, the business and with the customer.
Product
The product is designed to facilitate great exploratory testing and automation at every level of the product.
Process
The process helps the team decompose work into small testable chunks and discourages the accumulation of testing debt.
Problem
The team has a deep understanding of the problem the product solves for their customer and actively identifies and mitigates risk.
Project
The team is provided the time, resources, space and autonomy to focus & do great testing.
Pipeline
The team’s pipeline provides fast, reliable, accessible and comprehensive feedback on every change as it moves towards production.
Productivity
The team considers and applies the appropriate blend of testing to facilitate continuous feedback and unearth important problems as quickly as possible.
Production Issues
The team has very few customer impacting production issues but when they do occur the team can very quickly detect, debug and remediate the issue.
Proactivity
The team proactively seeks to continuously improve their test approach, learn from their mistakes and experiment with new tools and techniques.