In the past, software development companies practiced manual software testing. This required a human tester to utilize most of the features that an end-user would use on the proposed software. The test-user would complete a written test that would lead them through test scenarios. Manual testing in this fashion requires the knowledge and expertise of the tester on the key features of the software. This just allows for a more complete and solid test, with little to no errors or missed attempts. Every software requires you to have a strategy like this, for the purpose of developing and testing software before the release. The Software Engineering Institute has developed what is called a Capability Maturity Model for this purpose. This is a collection of rules that highlights certain levels of maturity in the software production process. The Capability Maturity Model, also called CMM, has since become the standard for this process.
The difference between mature and immature development models is that the immature model does not have an established model on which its software process is based. The mature model does have a set strategy in place, which allows the software development process to run smoothly.
The downfall to manual testing is the amount of time that it takes for the human user to do these tests, even as an expert. This is where automated testing comes into play.
Automated CMM is the strategy of trying out software using computers and other software, rather than human testers. A programmer would write a program to test the defects of the software, and identify any errors. These tests save companies a tremendous amount of time from doing the mundane tasks of testing a software, and reporting results with only a human tester.
Multiple computers can follow a list of orders more quickly than a human, and present the steps with less ado. Of course the primary labor would be automating, or writing the actual program to carry out the automated CMM. This has proved to be not only time effective but also cost effective, due to the fact that the same tests can be used for other software development projects. Most software that is graphically based uses the manual method, but for more of the text and information based software, the automated CMM is used. This would include device drivers and load testing.
Let’s look at what the traditional Capability Maturity Model entails.
- The maturity levels: this is a five level process where the fifth level is the signatory ideal state, where a process would be managed by a combination of both process optimization and improvement methods.
- Key Process Areas: a Key Process Area is a collection of activities that must be performed together to deliver an effective result.
- Goals: the goals of the above key process areas, which briefly summarize the stages that must exist, to give it longevity. The goals then become a measuring tool for how much capability the company has established, at that maturity level. The goals allow the company to define the scope and intent of each key process area during the development process.
Here are the original five stages of the Capability Maturity Model
- The Initial stage. This is the beginning stage, where the process is usually disorganized. Success is highly dependent on an individual programmer’s efforts, which may not be repeatable.
- The Repeatable stage. This is where the process is repeated, and so are the successes of the techniques.
- The Defined stage. At this point the company has developed its own solid software process. The primary attention is focused on documenting and solidifying this process.
- The Managed Level. This is where the company manages and controls its own process, by collecting and thoroughly analyzing data.
- The Optimizing Level. This is the final stage, where the methods are consistently being improved by feedback from the current method, and introducing a better method to serve a company’s needs.
In conclusion, all of the above traditional strategies are implemented into a written software program, to become the final automated CMM.