I was asked to research "What is the best industry standard report for Code quality control and measurement over time?". Our QA team provides weekly reports on Regression and New bugs found. I need to find out how to report to stakeholders that our code quality is stable and we do not introduce more bugs or regressions.
Industry standard metric is Defects per Function Point (or per any other volume unit you use).
Example of report indicators:
- Defects per function point
- Defect potential
- Defect removal efficiency
- Defects removed
- Defects delivered
- Cost per defect prerelease
- Cost per defect postrelease
- Average cost per defect
Recommended book: The Economics of Software Quality - Capers Jones
- ISO/IEC 25030 Software engineering -- Software product Quality Requirements and Evaluation (SQuaRE) -- Quality requirements
- ISO/IEC 25010 Systems and software engineering -- Systems and software Quality Requirements and Evaluation (SQuaRE) -- System and software quality models
- IEEE 730-2014 - IEEE Standard for Software Quality Assurance Processes
- IEEE 1061-1998 - IEEE Standard for a Software Quality Metrics Methodology
- ISO 9000-9001 Quality Management
- ISO/IEC 10181 Information technology -- Open Systems Interconnection -- Security frameworks for open systems: Access control framework
- ISO 17799 Information technology -- Security techniques -- Code of practice for information security management
I need to find out how to report to stakeholders that our code quality is stable and we do not introduce more bugs or regressions.
Question: Is your code quality stable and you refrain from introducing more bugs?
Yes? Then, follow-up question:
How do you know?
Are you using a bug-tracking system of some sort? You track every single bug? And thus have access to a report that definitively shows your team isn't generating more bugs than it used to? Then just show that report to your boss. Simple.
Are you using a bug-tracking system but do not track every single bug? Then you'd better start tracking every single bug.
Are you tracking bugs as they come up, but throwing them away afterwards? Stop throwing them away.
Are you not tracking them at all (ie. (receiving those reports from QA, dealing with them, and then tossing them)? Start tracking them. This could be via a full-blown issue tracking/project management system (JIRA, Trello, etc.), or just an excel spreadsheet.
Have a look at the OpenSource SonarQube for measuring and managing code quality trends. Ranging from defects to code analysis trends. It is even possible to deny commits if it does not meet the minimal standards.
Code quality is more than the end-result and the number of defects. How many defects per X does not make a lot of sense anymore in a world that is moving to continuous delivery. You cannot compare one product or industry to another. Mainly because of complexity. Wonder how do you prevent defects? Make it less complex.
How to measure code quality with metrics?
- Introduced defects vs completed features trends
- Test code coverage percentage trends
- Code complexity trends
- Known Code smells trends
Next to that I would also introduce gathering of
- Root-causes of defects
I think these are the most important metrics to monitor and report on.
Also research Clean Code if you want your teams to deliver higher quality code.