- Initial – You don’t test or manually test in an ad hoc manner
- Repeatable – You start building test suite(s) that can be run repeatably
- Defined – You automate your test suites and run them in a continuous integration environment
- Managed – You start observing metrics from the tests such as how good the coverage is, how long it takes to run and how difficult they may be to write
- Optimising – You start to make changes to your code to make it easier to test, and you use the tests to highlight areas that need refactoring or a redesign. You start running Test Driven Development or Behaviour Driven Development to enhance the testability of your code.
After applying the CMM to way I execute testing, I find it interesting that the practices that emerged from the agile community are heavily biased towards the higher end of the CMM. There’s definitely a message here.
Disclaimer: This list was created by myself and does not reflect any official source associated with the Software Engineering Institute (SEI). It was written by me in terms of thinking of how I have seen testing executed and then trying to describe it in terms of the CMM.
I’d go even further and say that once you’re on level 5, in come phases. We’ve observed the practices of our team follows these phases rather closely, we’re hovering somewhere above phase 4 at the moment.