The Capability Maturity Model Integration (CMMI) is a process model that provides a lucid definition of the process improvement approach which examines whether an organization’s current processes are in place and helps them identify their strengths and weaknesses. The essence of CMMI is to produce quality software.
CMMI is a tool provided by SEI which helps organizations standardize design, implementation and testing of software to increase its quality. According to CMMI, the most important features required to build great software are five ‘Maturity Levels’ or three ‘Capability Levels’ bundled together in a comprehensive model. CMMI supports the development teams to understand the current processes, learn what worked in previous projects and implement standards that will help increase the quality of their software products in the future.
The difference between ‘capability level’ and ‘maturity level’
Both these levels are closely related and often depend on each other. To measure the attained improvement in individual process areas Capability level is used, whereas maturity level determines the improvements achieved in multiple process areas.
Benefits of CMMI processes in software testing:
- Increases effectiveness and efficiency of test activities
- Aligns testing with organizational priorities and other project processes
- Improves both real and perceived value of testing to the organization
- It helps increase ROI
- When it is adapted, businesses see improved success.
- CMMI is compatible with other related methodologies such as ISO Standards, 6-Sigma and ITIL.
- The model is an improving and evolving one
Implementation of CMMI in testing a software application
Many software test departments are not interested in the implementation of software development standards. I think that the reason behind not implementing CMMI is perceptual.
Test engineers are not considered as part of the product delivered to the customer, hence the test software is not really required to CMMI development processes. While some test engineers would like to follow a standard process like CMMI, the time restrictions for project delivery make following a rigorous development process very challenging.
However since the past few years, some test software teams have started incorporating CMMI in their testing processes. This implementation has been motivated by the increasing importance of software in testing and the benefits that design departments have seen after following the standard.
When CMMI model is implemented in testing:
- Improves quality of software to be delivered.
- Increases customer satisfaction.
- Helps in targeted cost savings.
- Ensures stability and consistent high performance of software application
CMMI can be effectively implemented as follows
The CMMI model is not limited to processes alone. Enterprises can apply it to people, work groups, teams, rules and projects. To implement CMMI in your organization:
- Choose trained staff members
- Work on creating groups for engineering process
- Consult with CMMI consultants
- Implement quality processes and practices
- Select the appropriate tools
- Train staff to learn quality assurance, configuration management and project planning
- Implement the CMMI model to a few projects.
- Receive feedback and reviews from clients
- Learn and improve the practices implemented.
- Add more projects which follow the CMMI model.
Mapping of software testing with CMMI
Test and requirements
- Testers should be considered as important stakeholders in delivering on the customer requirements
- Requirements on requirements
- They should be involved in definition of product or product component requirements to ensure that these requirements are verifiable
Procedure of verification or validation
- Perform Peer Reviews on selected work products
- Prepare for Peer Reviews
- Conduct Peer Reviews
- Analyze Peer Review Data
- Verification of selected work products
- Perform Verification
- Analyze Results
- Validation of selected work products
- Perform Verification
- Analyze Results
Testing in the software life cycle
- Peer reviews and unit tests
- Integration tests
- System integration tests
- Acceptance tests
- Acceptance reviews and testing
Following the best test practices mentioned below, you can achieve CMMI levels in your enterprise:
- Static test
- Product component’s peer review
- Work products review
- Perform peer Reviews
- Dynamic test
- Coverage testing, boundary value testing, special value testing
- Path coverage testing
- Decision table-based testing
- Functional decomposition-based testingLoad, stress and performance testing
- Identification of verification criteria/procedure for the product integration environment
- Development of an integration environment
- Degree of simulation permitted for a product component to pass a test, constraints of the environment to be used for the integration test
- Establishment of verification environment
- Testing is work product-specific
- Defining test methods and criteria
I can confidently say that CMMI contributes towards a valuable support environment for test managers and test leads or checklist for setting up processes. While considering CMMI level 2, some important recommendations are mentioned for test leaders and mangers. There are a many real examples related to software testing and related areas. CMMI focuses much more on the testing aspects but it is not a dedicated test improvement model. Verification and validation are an integral part of the overall development process. It expands the scope of and visibility of the product lifecycle and testing activities to confirm that the product meets client’s expectations. CMMI incorporates various lessons from the best practices in measurement, risk management and test management. It also helps implementation of robust high-maturity practices and fully complies with ISO standards.