In this article we will see what is Quality Management, Quality Assurance, Quality Control and Testing in software development process. As this is a much wider subject we will provide overview and basic information about Quality Assurance process, methods.
What is Quality in Software Development? : Quality is defined as a degree of excellence; a distinctive attribute or characteristic of a product or process or service or program.
1. Quality Management
Quality management ensures that an organization, product or service is consistent. The definition of Quality management system according to ISO 9000:2000 is:
“A quality (management) system consists of the organizational structure, procedures, processes, and resources needed to implement quality management.”
QM has four main components: quality planning, quality assurance, quality control and quality improvement. Quality management, uses quality assurance and quality control of processes to achieve more consistent quality.
2. What is Quality Assurance?
Software Quality Assurance is the function of software quality that assures that the standards, processes and procedures are appropriate for the project and are correctly implemented.
Quality Assurance is continuous and consistent improvement and maintenance of process that enables the Quality Control (QC) job.
3. What is Quality Control?
Software Quality Control is the function of software quality that checks that the project follows its standards processes, and procedures, and that the project produces the required internal and external deliverable products. Quality Assurance is aimed to avoid the defect whereas Quality control is aimed to identify and fix the defects.
4. Quality Assurance process
Quality assurance has a defined cycle called PDCA (Plan-Do-Check-Act) cycle, the four step process used to consistently control and improve products and services.
- Plan – The first phase is planning, identifies the objectives leading to a high-quality outcome, then determines and plans the processes that are required to deliver a high-Quality end product.
- Do – This phase involves the development and testing of Processes. In the “do” phase the results of methods or changes are also measured, and data is gathered.
- Check – In this step, the data from the “Do” phase is analyzed and evaluated, you can monitor and modify the processes, and check whether it meets the predetermined objectives.
- Act – This is where you deploy changes that will refine your process and optimize results, this final phase involves the implementation of actions that are necessary to achieve improvements in the processes.
Quality Assurance is must to ensure that the product is designed and implemented with correct procedures. This helps reduce problems and errors, in the final product.
5. How do we measure Quality
In ISO 25010 standards, there are 8 leading factors, each having certain attributes that can be tested with different kinds of tests.
Generally, a high-quality software measured by testing Quality Attributes.
- Maintainability – It should be stable when the changes are made. It is easy to maintain the code and add amendments)
- Portability – Portability of the software, defined as how easily a system adapts to changes in the specifications. Easy to install, replace, adapt to new environments.
- Functionality – It does what it is intended to do. Quality of software is defined as how effectively the software interacts with other components of the system.
- Performance – It should work quickly without using too many resources and how that affects its scalability, customer satisfaction, and response times.
- Compatibility – the software is compatible with several components
- Usability – The user interface is the only part of the software visible to users, so it’s vital to have a good UI. Simplicity and task execution speed are two factors that lead to a better UI.
- Reliability – It is defined as the capability of the software to perform under specific conditions for a specified duration.
- Security – assesses how well an application protects information against the risk of software breaches. Poor coding and architectural weaknesses often lead to software vulnerabilities.
- Testability – Quality of documentation, quality software requires a high degree of testability. Finding faults in software with high testability is easier, making such systems less likely to contain errors when shipped to end users.
6. Quality assurance and Testing
Quality assurance largely depends on the amount of testing it undergoes. One of principal advantages of testing is the credibility it provides to a product; hence Quality assurance is an important part of most of the industries. When it comes to Software industry, what does testing or quality assurance mean? In simple terms, Testing is a process of finding defect(s) (deviation from expected behavior) in a software application, so as to define the application functions according to the accepted requirements. Much detailed look into software testing will give us more insights.
7. Software Testing
A software product is designed and developed according to the requirements of the end user. Testing as a process, helps to identify if the product is usable, meets the requirements, achieves the expected results. This involves various checks to find, if the product responds correctly to all kinds of acceptable inputs, performs its functions within an acceptable time, etc., Testing can also check if the product can be installed and run in various combinations of intended environments. When any of such a thing is missed, it is called a defect/bug/error.
To proceed further, it is very important to know the difference of these.
DEFECT: A defect commonly refers to several issues/unexpected behaviors/problems associated with functional or performance aspects of a software.
ERROR: An unexpected outcome of an action is defined an error. When a product functions not as expected, it leads to error.
BUG: A bug is an error found in the development environment before the product is released. It is a malfunction of product. The process of fixing the bug is hence termed debugging.
FAILURE: A failure is also the inability of a software or product to perform its required functions. This is a defect, which is not identified in the development environment and slips to the end customer.
Software testing can be broadly classified in to 2 categories,
- Non- functional
6.1. Functional Testing
Functional tests are performed to check if the application functions as expected. This tests if the application works against the set of requirements. The various types of functional testing, includes but not limited to
- Unit testing
- Integration testing
- System Testing
- Acceptance Testing
6.2. Non-Functional Testing
Non-functional tests are performed to done to verify the behavior of the system requirements like Performance, Usability etc. There are various types of non-functional testing, that includes but not limited to
- Performance testing
- Load Testing
- Stress testing
- Volume testing
- Security testing
- Installation testing
These tests can be done manually or can be automated. Manual testing is done by a designated quality assurance engineer, by manually clicking and entering data through the application and interacting with the software and APIs with the appropriate tools and technologies. Automated tests, are performed by a tool that executes an automated test script, which mimics the actions performed in a manual test.