This article provides clarity on the often confusion in the IT industry regarding the difference between quality assurance (QA) and quality control (QC). Many QA teams, in fact, practice quality control. But let’s briefly discuss why Quality is a must property of software 应用程序s nowadays.
It has always been known that the success of any software product, 应用程序, and/or service relies greatly upon users’ satisfaction. Users are satisfied just when they have their requirements/needs met and associated with all relevant quality factors (Correctness, 可用性, 可靠性, 效率, 完整性, 等.) to enhance their journey using the software 应用程序.
In any typical IT project, there are four significant constraints that need to be worked out during project execution. These four requirements are scope, time, cost, and quality.
In terms of importance, experience has proven that quality ranks second after scope. Simply because if a software 应用程序 is delivered within the given cutoff time, scope and cost but lacks the quality factors would lead to unhappy users and consequently business loss. Organizations usually get rectified by adding more time and budget to cover for the needed correction and rework.
Quality terms can be segmented into two categories – assurance/control – based on the scope and type of activities involved. The confusion between both categories can be clarified by the following definitions.
What is 质量保证?
质量保证 is a strategy of prevention. This means that QA covers all activities that are related to planning, 定义, and designing work policies, 流程, and procedures for the team to follow during the software development lifecycle in order to prevent producing errors, 问题, 或缺陷.
This set of 流程 helps minimize or even avoid result variation (due to technologies, 工具, 人力资源, 等.) and ensures that the acceptable level of quality is always achieved. Therefore, if there is no need for a process, there is no role for quality assurance.
Examples of QA deliverables:
- Development methodologies
- Requirements definition 流程
- Testing 流程 and standards
Quality control is a strategy of detection. This means that QC activities focus on identifying defects in the actual software produced. These activities begin at the start of the software development process with reviews of requirements and continue until all 应用程序 testing is complete.
Therefore, it is possible to have quality control without quality assurance. 例如, a test team may be in place to conduct 应用程序 testing at the end of development, regardless of whether that 应用程序 is produced using a software development methodology.
Examples of QC deliverables:
- Requirement Review Reports
- Testing Execution Reports
Summary: Difference between 质量保证 (QA) and 质量控制 (QC)
QA activities aim to prevent defects
QC activities aim to detect defects
It is a proactive measure
It is a reactive measure
QA identifies weaknesses in a process to improve it
QC identifies defects in an 应用程序 or service to have them fixed
|QA is concerned with all 应用程序s that will ever be developed by a process.||
QC relates to a specific 应用程序 or service.
Types of 软件测试
Based on what was explained earlier in this article, 软件测试 is one of the main activities under the umbrella of 质量控制. 软件测试 is segmented into two categories; functional and non-functional.
功能测试 – validate the 应用程序’s compliance with its functional requirements and design specifications. The various techniques under this testing type focus on validating that 应用程序’s functionalities are met and work as expected without 问题.
Some of the main functional testing techniques are:
- Component Testing (Whitebox)
- Integration Testing (Greybox)
- System Testing (Blackbox)
- Business As Usual Testing (BAU)
- User Acceptance Testing (UAT)
非功能性测试 – validate the 应用程序’s compliance with technology, 安全, 操作, digital standard and best practices. functional requirements and design specifications. The various techniques under this testing type focus on validating that 应用程序’s non-functional requirements are met and work as expected without 问题.
Some of the main non-functional testing techniques are: