Software Quality Assurance (SQA) is a process that ensures that developed software meets and complies with defined or standardized quality specifications. SQA is an ongoing process within the software development life cycle (SDLC) that routinely checks the developed software to ensure it meets desired quality measures
Software development, like any complex development activity, is a process full of risks. The risks are both technical and programmatic; that is, risks that the software or application will not perform as intended or will be too difficult to operate/browse, modify, or maintain are technical risks, whereas risks that the project will overrun cost or schedule are programmatic risks.
The goal of QA is to reduce these risks. For example, coding standards are established to ensure the delivery of quality code.If no standards are set, there exists a risk that the code will not meet the usability requirements, and that the code will need to be reworked. If standards are set but there is no explicit process for assuring that all code meets the standards, then there is a risk that the code base will not meet the standards. Similarly, the lack of an error management and defect life cycle workflow increases the risk that problems in the software will be forgotten and not corrected, or that important problems will not get priority attention.The QA process is mandatory in a software development cycle to reduce these risks, and to assure quality in both the workflow and the final product. To have no QA activity is to increase the risk that unacceptable code will be released and ultimately leads to the project failure.
Software quality can be quantified into two major groups :
Software functional quality:
It basically shows how well a software product conforms to the basic design, based on functional requirements. It determines how much software fulfill the needs of customer and their expectations.
Software structural quality:
It reflects on how well the project meets the non functional requirement such as usability, accessibility and security that helps in proper delivery of the requirement.
To achieve quality in software, quality should be maintained in each and every phases of software development life cycle. So,each software development life cycle will incorporate QA activities and deliverables that offset the risks of common project problems. The list of the QA activities and deliverables associated with each phase are as follows:
ASSESSMENT PHASE: Assessment process consists of market research and a series of structured workshops also where client teams participate in to discuss and analyze the project objectives and develop a strategic plan for the effort. The products of these meetings, combined with market research, form the basis for the final output of the assessment: a tactical plan for realizing specific business and project objectives.
a) QA Editor submits revised and approved deliverable documents.
PLANNING PHASE: In the Planning phase, the team defines specific system requirements and develops strategies around the information architecture (static content and information flows) and the business functions that will be addressed.
Establishing Standards and Procedures: QA records the set requirements.
Planning (Test Matrix): QA develops a test matrix. QA confirms that all set requirements are testable and coincide with the project objectives.
Auditing Against Standards and Procedures: QA editor edits the documents and confirms that they meet the objectives and the quality standards for documents.
Establishing Completion Criteria: QA records the completion criteria for the current phase.
QA submits an initial test matrix.
QA Editor submits revised and approved deliverable documents.
DESIGN PHASE:During the Design phase, the team identifies all of the necessary system components based on the requirements identified during the Assessment and Planning phases. The team then creates detailed design specifications for each component and for the associated physical data requirements.
Auditing Standards and Procedures: QA confirms that all designs meet the set requirements and notes any discrepancies. Additionally, QA identifies any conflicts or discrepancies between the final design of the system and the initial proposal for the system and confirms that an acceptable resolution has been reached between the project team and the client.
Planning (QA Plan, QA Test Plan):
QA begins developing the QA Plan.
QA revised the test matrix to reflect any changes and/or additions to the system.
QA presents the initial QA test plan.
QA submits a revision of the test matrix.
DEVELOPMENT PHASE: During the Development phase, the team constructs the components specified during the Design Phase.QA ActivitiesPlanning (Test Cases): Using the test matrix, QA develops a set of test cases for all deliverable functionality for the current phase.Prepare for Quality Assurance Testing:QA confirms that all test cases have been written according to the guidelines set in the QA test plan. Quality Assurance works closely with the Configuration Management group to prepare a test environment.
QA submits a set of Test Cases.
QA Environment is set up.
IMPLEMENTATION PHASE: In the Implementation phase, the team focuses on testing and review of all aspects of the system. The team will also develop system documentation and a training or market test plan in preparation for system launch.
QA Activities:QA Testing: QA executes all test cases in the QA testing cycle.