What is Software Quality Assurance? – International Software Test Institute
What is Software Quality Assurance?
When we talk about software quality, we are actually talking about the evaluation of the software based on certain attributes. A software quality is defined based on the study of external and internal features of the software. The external quality is defined based on how software performs in real time scenario in operational mode and how useful it is for its users. The internal quality on the other hand focuses on the intrinsic aspects that are dependent on the quality of the code written. The user focuses more on how the software works at the external level, but the quality at external level can be maintained only if the coder has written a meaningful good quality code.
Software Quality
What Is Software Quality Assurance?
Presently there are two important approaches that are used to determine the quality of the software:
- Defect Management Approach
- Quality Attributes approach
As mentioned before anything that is not in line with the requirement of the client can be considered as a defect. Many times the development team fails to fully understand the requirement of the client which eventually leads to design error. Besides that, the error can be caused due to poor functional logic, wrong coding or improper data handling. In order to keep a track of defect a defect management approach can be applied. In defect management, categories of defects are defined based on severity. The number of defects is counted and actions are taken as per the severity defined. Control charts can be created to measure the development process capability.
Defect Management Approach
As mentioned before anything that is not in line with the requirement of the client can be considered as a defect. Many times the development team fails to fully understand the requirement of the client which eventually leads to design error. Besides that, the error can be caused due to poor functional logic, wrong coding or improper data handling. In order to keep a track of defect a defect management approach can be applied. In defect management, categories of defects are defined based on severity. The number of defects is counted and actions are taken as per the severity defined. Control charts can be created to measure the development process capability.
Quality Attribute Approach on the other hand focuses on six quality characteristics that are listed below:
Quality Attributes Approach
1. Functionality: refers to complete set of important functions that are provided by the software
- Suitability: whether the functions of the software are appropriate
- Accurateness: are the functions implemented correctly?
- Interoperability: how does the software interact with other components of the system?
- Compliance: is the software in compliance with the necessary laws and guidelines?
- Security: Is the software able to handle data related transaction securely?
2. Reliability: this refers to the capability of software to perform under certain conditions for a defined duration. This also defines the ability of the system to withstand component failure.
- Maturity: Frequency of failure of software
- Recoverability: this gives an idea of a system’s ability to get back into full operation after failure.
3. Usability: refers to the ease of use of a function.
- Understandability: how easily the functions can be understood
- Learn ability: How much effort the users of different level need to put in to understand the functions.
4. Efficiency: generally depends on good architecture and coding practices followed while developing software.
5. Maintainability: also known as supportability. It is greatly dependant on code readability and complexity and refers to the ability to identify and fix a fault in a software:
- Analyzability: identification of the main cause of failure.
- Changeability: defines the effort that goes in modification of code to remove a fault.
- Stability: how stable a system is in its performance when there are changes made to it
- Testability: how much effort goes in testing the system.
6. Portability: Ability of the system to adopt to changes in its environment
- Adaptability: how easily a system adapts to the changes made in specifications
- Installability: how easily a system can be installed.
- Conformance: this is same as compliance in functionality.
- Replaceability: how easy it is to replace a component of the system in a given environment.
this refers to the capability of software to perform under certain conditions for a defined duration. This also defines the ability of the system to withstand component failure.refers to the ease of use of a function.generally depends on good architecture and coding practices followed while developing software.also known as supportability. It is greatly dependant on code readability and complexity and refers to the ability to identify and fix a fault in a software:Ability of the system to adopt to changes in its environment
Cost of Software Quality
Cost of quality is important because when you decide to conduct software testing for your product you are actually going to invest your time, money and effort in getting quality checks done. By conducting an analysis of cost of software quality you would know what the return on that investment (ROI) is.
Cost of Software Quality
Cost of quality is calculated by analyzing the conformance costs and non conformance costs. A conformance cost is related to:
- Prevention costs: amount spent on ensuring that all quality assurance practices are followed correctly. This includes tasks like training the team, code reviews and any other QA related activity etc.
- Appraisal costs: this is the amount of money spent on planning all the test activities and then carrying them out such as developing test cases and then executing them.
The non conformance cost on the other hand is the expense that arises due to:
- Internal failures: it is theexpense that arises when test cases are executed for the first time at internal level and some of them fail. The expenses arise when the programmer has to rectify all the defects uncovered from his piece of code at the time of unit or component testing.
- External failures: it is the expense that occurs when the defect is found by the customer instead of the tester. These expenses are much more than what arise at internal level, especially if the customer gets unsatisfied or escalates the software failure.
Cost of Software Failure
We know that a software failure is caused when:
- It displayslack of ability to keep up: this generally happens when the software starts aging. As it grows old the size increases because the easiest way of adding a feature is by adding new code without touching anypart of code written earlier. Over a period of time it becomes bulky and it becomes difficult to identify the sections of code that need to be changed.
- Performance drop is observed: Every application generally slows down with age and tends to occupy more and more computer memory therefore it is better to switch to other software.
- It doesn’t seem to be reliable: It is a known fact that every time when changes are made to the code of the software to fix an error, more defects are introduced in the system. Surprisingly, this is one of the major reasons for increased failure rates and in order to save situation it is always better to ditch the project or give up bug fixing.
Software Testing VS Quality Assurance
In IT industry it is often observed that people generally don’t differentiate between the software quality assurance and software testing. Testers are often looked upon as Software Quality Assurance professionals because the objectives of software testing as well as quality assurance are the same .i.e. to ensure that the software is of top quality.
As the name suggests quality assurance processes are carried out to assure the quality of the product is in line with the requirement of the client. The quality assurance professionals work on development and implementation of all the necessary processes to ensure that all the necessary procedures of software development lifecycle are followed correctly. Quality assurance is a proactive activity that is focused on:
- Defect Prevention
- Processes
- Continuous improvement of this processes
Software testing on the other hand is carried to identify or uncover defect and errors in the software. It involves actual rigorous testing of the software to see if there are any defects or variations from the client’s requirement that needs to be fixed. Software testing is a part of quality control process and it focuses only on product oriented activities. Software testing is carried out during the testing phase and only defects are identified and not corrected in this process. Fixing defects is not a part of software testing.
Cost of quality is calculated by analyzing the conformance costs and non conformance costs. A conformance cost is related to:The non conformance cost on the other hand is the expense that arises due to:We know that a software failure is caused when:In IT industry it is often observed that people generally don’t differentiate between the software quality assurance and software testing. Testers are often looked upon as Software Quality Assurance professionals because the objectives of software testing as well as quality assurance are the same .i.e. to ensure that the software is of top quality.As the name suggests quality assurance processes are carried out to assure the quality of the product is in line with the requirement of the client. The quality assurance professionals work on development and implementation of all the necessary processes to ensure that all the necessary procedures of software development lifecycle are followed correctly. Quality assurance is a proactive activity that is focused on:Software testing on the other hand is carried to identify or uncover defect and errors in the software. It involves actual rigorous testing of the software to see if there are any defects or variations from the client’s requirement that needs to be fixed. Software testing is a part of quality control process and it focuses only on product oriented activities. Software testing is carried out during the testing phase and only defects are identified and not corrected in this process. Fixing defects is not a part of software testing.
Quality Assurance VS Quality Control
Another subject that is closely related to quality assurance is quality control. People often get confused between the two but there is a huge difference. While quality assurance is all about preventive activities, quality control focuses on corrective processes.
Here is what you need to understand: software testing is a subset of quality control and quality control is a subset of quality assurance. Theentire focus of Quality assurance is on implementation of processes and procedures that are required for the verification of the software under development and the requirements of the client.
Quality Assurance VS Quality Control
Quality control on the other hand deals with actual activities that ensure that the product is being developed as per the defined requirements. It deals with all the actions that are important to control and verify certain characteristics of the product including testing. Examination and testing of the products is the most important aspect of quality control.
Companies employ quality control team to identify if there is any product or service that does not meet the company’s standard of quality. If there is an issue the quality control team has the authority to stop the production of that product till the issue is resolved.
Importance of Audit and Inspection
Audit comprises of some very systematic processes that define how the software testing is taking place in the organization. The audit team examines all the processes that are conducted at the time of testing. IEEE defines audit as a review of documented processes to ensure that the organization or a team is following all the processes as per the defined standards.
Inspection can be a formal or an informal review of software requirement, designer or code. It is conducted by a team or an individual person other than the author to check if there are any violations or deviations from the defined development standards. The following processes are considered as part of Inspection:
- Planning
- Overview Preparation
- Inspection Meeting
- Rework
- Follow up