How Does Your Unit Testing Process Stack Up?
New Unit Testing Maturity Model
As a primary quality gate, unit testing:
- Prevents the introduction of defects that would consume valuable resources if detected later in the development process.
- Reduces risks associated with faulty software, which may result in costly litigation, brand erosion, or even loss of life.
- Verifies the functionality of the application and serve as artifacts for compliance traceability.
Unit Testing processes can range from very simple ad-hoc or reactive efforts to highly-optimized efforts where policies are regularly updated as part of a root-cause analysis effort to prevent defects from being discovered in QA.
Ad-Hoc Unit Testing
With ad-hoc unit testing efforts, developers independently choose to create and run unit tests while developing functionality, but tests are not saved or maintained. Instead, they are isolated on independent machines. Ad-hoc unit testing characteristics include:
- Test reports are non-existent or unverifiable.
- Tests are not maintained in an SCM.
- No scheduled automation.
- Reintroduction of defects is accepted as “normal” or “unavoidable.”
Any pockets of maturity at this point are based on the experience and initiative of individuals. There is no centralization of assets; it’s every man for himself.
Tests and test artifacts are typically created as one-off solutions and may or may not be stored on a local machine. Tests are created without consideration of the business or use case.
Signs that it's time to advance from this level include:
- The application is not adequately tested or integrated due to stated lack of time.
- Business is lost or hard to win due to users’ perception of application instability.
- Returns, uninstalls, and/or complaints tend to interrupt or control development activities
Optimized Unit Testing
At the optimized level of unit testing, there is an organizational focus. Policies are regularly updated as part of a root-cause analysis effort to prevent defects from being discovered in QA.
Unit tests are a verification mechanism to verify that policy and process are in synch. Test results are linkable and bi-directionally traceable to all data associated with software and device development. Traceability extends beyond the traditional borders of the SDLC.
Unit test policy is seamlessly integrated into a controlled quality, security, performance, and reliability framework, orchestrated from a centralized interface and inclusive of both development and nondevelopment systems. True Business Intelligence is achieved.
Developers, testers, or managers kick off a test run based on any combination of technical and business requirements. The system automatically appropriates the needed environments, VMs, and tests, then provides results as part of a customizable business intelligence layer.
Unit Testing Maturity Model
This is just a brief introduction to the two extremes of unit testing maturity. Most organizations today fall somewhere in between these two polar extremes.
Parasoft, the leader in Development Testing, has developed a unit testing maturity model that provides a detailed look at the 5 different levels of unit testing: Ad-hoc, Reactive, Proactive, Managed, and Optimized.
If you want to assess where your organization currently stands and see what’s involved in moving forward, download the complete Unit Testing Maturity Model.
Parasoft’s industry-leading automated software testing tools support the entire software development process, from when the developer writes the first line of code all the way through unit and functional testing, to performance and security testing, leveraging simulated test environments along the way.