Tuesday February 11, 2020
The relevancy of Software quality in modern times is increasing like anything. Nowadays software development companies are more focussed on deploying new codes into production even on an hourly basis without any proper software testing. That’s creating a chaotic environment in the market.
People often fail to understand that speed has minimal value if there is no quality. let’s learn how to ensure software quality in every build
What is software quality?
The quality of software can be defined as the ability of the software to function as per user requirement. When it comes to software products it must satisfy all the functionalities written down in the SRS document.
Key aspects that conclude software quality include,
ISO/IEC 25010:2011 Software Quality Model
What is Software Quality Model?
Software quality models were proposed to measure the quality of any software model.
There are three widely accepted models when it comes to measuring software quality
Mc call’s Model
Mc Call’s model was first introduced in the US Airforce in the year 1977. The main intention of this model was to maintain harmony between users and developers.
Boehm Quality Model
Boehm model was introduced in the year 1978. It was a kind of hierarchical model that’s structured around high-level characteristics. Boehm model measures software quality on the basis of certain characteristics.
Dromey’s quality model
Dromey’s model is mainly focussed on the attributes and sub-attributes to connect properties of the software to the quality attributes
There are three principal elements to this model
How can software engineers acquire software quality?
How do we achieve Software quality?
Achieving quality will ensure maximum profit for your software business. But the biggest hurdle is to achieve quality and here are some of the ways.
Read also: Why Quality assurance is shifting to quality engineering?
What are software quality metrics?
In any software project, you can go on building the code but at some point, you need to take a break and check if the work you are doing is right, if the process you followed is correct and so on. Metrics help you in exactly that.
Metrics are pointers or numbers which help you understand the attributes of a product, (like its complexity, its size, it’s quality, etc.), the attributes of the process (which can be used to improve the quality and speed of development) and the attributes of the project (which includes the number of resources, costs, productivity and timeline among others), popularly known as the three P’s.
Why are software quality metrics important?
Software quality metrics are an indicator of the health of the product, process, and project. Good metrics with accurate data can help in
Important Software Quality Metrics
For any metrics to truly serve the purpose, there are 2 parts. One is the data accuracy and the second is metrics selection.
All metrics will not be suitable for all processes and projects. So the selection of the metrics needs to be done carefully.
Let us now look at some very important and most commonly used Software Quality Metrics and how they are helpful in driving a better code
The first measure of the quality of any products is the number of defects found and fixed. Though there a many “conditions apply” cases this is the first ballpark estimate of the quality of the software.
The more the number of defects found, would be the quality of development is poor. So the management should strive hard to improve development and do an RCA (Root Cause Analysis) to find why the quality is taking the hit.
Defect Density = No. of Defects Found / Size of AUT or module
This is an important metric for assessing the effectiveness of a testing team. DRE is an indicator of the number of defects the tester or the testing team was able to remove from going into a production environment. Every quality team wants to ensure a 100% DRE.
DRE = A/(A+B) x 100
A – number of defects found before production
B – Number of defects found in production
As the name suggests it is the average time between two failures in a system. Based on the AUT and expectation of business the definition of failure may vary.
For any online website or mobile application crash or disconnection with the database could be the expected failure. No team can produce software that never breaks or fails, so the onus is always to increase the MTBF as much as possible, which means that in a time frame the number of times the applications fail should be reduced to an acceptable number.
This again is quite self-explanatory. The mean time to recover is basically the time it takes for the developers to find a critical issue with the system, fix it and push the fix patch to production. Hence the average time which the team needs to fix an issue in production. It is more of maintenance contract metrics, where an MTTR of 24 hours would be preferred over an MTTR of 2 days for obvious reasons.
Important metrics especially for mobile apps and online websites. It is a measure of how often the mobile app or website crashes in any environment. It is an indicator of the quality of the code. The better the code, the longer it will be able to sustain without crashing.
In recent times where the speed of delivery has taken utmost importance, the traditional methods life the SDLC and waterfall models have taken a backseat, giving way for more dynamic and fast-paced agile, scrum and lean methodologies.
This section on software quality metrics would be obsolete and incomplete if we do not look at some very important metrics in agile. These are the metrics that are more important and relevant in today’s scenario.
Lead time is defined as the time it takes from the time of project or sprint kick-off to the completion. In an agile process, we normally pick up user stories that will be delivered at the end of the sprint.
The lead time is thus defined as the time it takes to complete and deliver these user stories.
Cycle time is similar to the lead time with a difference that leads time is measured per user story, while cycle time is measured per task. For eg, if database creation is part of the user story related to client data.
Then time taken to create the database would be the cycle time, while the time taken to have the complete database ready would be the lead time. The cycle time data is used to arrive at delivery estimation timelines for future sprints.
Team Velocity is a very important metric for Agile/Scrum. It is an indicator of the number of tasks or user stories a team is able to complete during a single sprint. This does not include the items moved to the backlog and incomplete items. Only fully completed user stories are included for velocity calculations. This is an important metric because based on the team velocity, the management would decide on the number of stories they can pick up for the next sprint.
Read also: Quality assurance process
These metrics are in line with the agile principle of dynamic, fast and quality delivery. It is an indicator of the number of test cases that pass in the first run itself. It is also an indicator of the quality of development. In simpler terms, it means that no defects were found in the developed code when it went through testing for the first time
As the same suggests, these metrics take the count of defects found in each sprint. This is a very simple yet useful metrics for assessing the quality of the user stories delivered during any sprint.
Attaining software quality is indeed a tedious process. But through a systematic process, it’s indeed achievable. Remember, software quality is the only resort you can rely on in achieving profit for your business.
Software testing is a quality assurance process that helps in tracking bugs in software. It's a product-oriented methodology helps in preventing mishap once the product is deployed
Quality of any software can be measured by analyzing the code, number of code lengths, functional points, number of interfaces, number bugs per certain amount of codes, etc.
it's a meeting held by software development companies to examine the software. parties involved in the meeting include user representatives, managers, customers, project personnel, users, or other interested parties
Software quality management (SQM) is a management process that aims to maintain the quality of software throughout the development and deployment process.