What is the Capability Maturity Model (CMM)?
Before 1986, the Software industries were realizing that their fundamental problem is, there is no proper management or control the software process. According to this problem, so many organization’s projects are over budget, highly late to deliver and chaotic. Based on above problem, in November 1986, the Software Engineering Institute (SEI), assistance with Mitre Crop developed a process-maturity framework that is mainly improving software process. Then after four years of experience with framework, SEI developed Capability Maturity Model (Paulk, Curtis, Chrissis, & Weber, 1993). The Capability Maturity Model was originally developed to assist the U.S. Department of Defense (DoD) (Herbsleb, Zubrow, Goldenson, Hayes, & Paulk, 1997). The CMM provides road map to developers on how to control and manage their development process through software engineering and management excellence. Normally, a software process is a list of works, methods, practices and transformations that people use to develop and maintain software and products (Paulk, Curtis, Chrissis, & Weber, 1993). There are few fundamental concepts for process-maturity:
- Software process capability
- Software process-performance
- Software process-maturity
In any organization, process improvement is an evolutionary step and the CMM facilitates framework for arranging these steps into five maturity levels. These maturity levels have a list of goals. If satisfied, stabilize each goal and then process will mature and achieving each level, resulting in an increase in the process capability of an organization. Figure 1 indicates the maturity framework with five levels and each one has foundation for the next one.
What is the Testing Maturity Model (TMM)?
Software testing is an important and critical area of a mature software development process. In any organization, testing is most challenging, timely manner and costly process that will cause the development of high quality software. The Testing Maturity Model address testing issues and testing process. The TMM has maturity levels that contain recommended practices (Burnstein, Suwanassart, & Carlson, 1996).The organization can develop and improve their testing process maturity by following up TMM.
TMM can be used either joining with capability maturity model or as a stand-alone tool. The TMM five testing maturity levels are built using the concepts of test process-maturity that have the attributes of a mature testing process below.
- A set of defined Testing Policies
- A Test Life Cycle
- A Test Planning Process
- A Test Group
- A Test Process improvement Group
- A Set of Test-Related Metrics
- Tools and Equipment
- A Controlling and Tracking Mechanism
- Product Quality Control
In TMM maturity level describes a unique testing maturity capability. The TMM can define by 5 level as follows:
- Level 1: Initial
- Level 2: Phase-Definition
- Level 3: Integration
- Level 4: Management and Measurement
- Level 5: Optimization/Defect Prevention and Quality Control
What is continuous feedback and why is it useful?
In Agile projects, tester plays a big role that is providing information to the agile team. There are most important contributions helping the client requirement for each test. The tester continually work together with team members to get customer accepted executable product. During this development, meaningful feedback guides team to run tests early and often (Crispin & Gregory, 2008).
Also feedback is one way to help remove the obstacles. For an example, if team delivered any part of the software that customer didn’t expect, it can be corrected according to customer expectation. Therefore, continuous feedback is very useful to figure out this kind of problems and solve it at initial stage. Additionally, the team can update their management about working progress by displaying visible chart of tests written, run and passing every day.
What are the differences between validation and verification?
In the software testing process “validation and verification” are most commonly used terms and one of the software-engineering disciplines that supports to develop quality software. Also “verification” and “validation” have separate definition and actually the terms are quite different. Verification includes analyzing software during each life cycle phase to confirm that the current phase meets the requirements list forward in the previous phase. Validation focuses on the testing software or its requirement at the end of the development effort to confirm that it meets the business needs(Wallace & Fujii, 1989). Verification demands all the static testing techniques and validation includes all the dynamic testing techniques.
The similarities and differences between software quality assurances with agile testing versus plan-driven (waterfall) software development projects.
Zemlyakov Yuri Dmitrievich, & Gregory, J. (2008). Agile Testing: A Practical Guide for Testers and Agile Teams. Pearson Education.
Herbsleb, J., Zubrow, D., Goldenson, D., Hayes, W., & Paulk, M. (1997). Software Quality and the Capability Maturity Model. Commun. ACM, 40(6), 30–40. https://doi.org/10.1145/255656.255692
Paulk, M. C., Curtis, B., Chrissis, M. B., & Weber, C. V. (1993). Capability maturity model, version 1.1. IEEE Software, 10(4), 18–27. https://doi.org/10.1109/52.219617
Wallace, D. R., & Fujii, R. U. (1989). Software verification and validation: an overview. IEEE Software, 6(3), 10–17. https://doi.org/10.1109/52.28119