Lesson 1: Introduction to Quality Assurance
Quality Assurance (QA)
- Systematic activities within the quality system to ensure product/service meets quality requirements.
- Focuses on preventing defects through process management.
- Essential for ensuring high software quality.
Quality Control (QC)
- Involves inspecting/testing products post-development to identify defects.
- Focuses on detecting defects in the final product to ensure specifications are met.
Testing
- Process of executing a system to identify bugs, defects, or errors.
- Evaluates product quality by identifying issues.
Common Types of Testing
- Unit Testing: Tests individual components. Typically done by developers.
- Integration Testing: Tests interaction between combined modules to ensure proper data flow.
- System Testing: Comprehensive evaluation of the complete system against requirements.
- Acceptance Testing: Final validation to check if the software meets business requirements, usually done by end-users.
QA vs. QC vs. Testing
- QA: Process-oriented; prevents defects.
- QC: Product-oriented; identifies defects.
- Testing: Execution-oriented; finds and fixes defects.
Role of QA in the SDLC
- Planning: Establish quality standards/processes.
- Design: Review design for quality.
- Development: Ensure adherence to coding practices.
- Testing: Validate product requirements.
- Deployment: Confirm readiness for release.
QA Methodologies
- Waterfall Model: Fixed requirements, linear process; suitable for government projects.
- Agile Model: Iterative/incremental; flexible for startups/app development.
- V-Model: Focus on validation and verification; critical for safety applications.
QA Best Practices
- Implement clear processes and guidelines.
- Conduct regular code reviews.
- Encourage collaboration among teams.
- Use automation in testing.
- Track and measure defects systematically.
- Test Management Tools: JIRA, TestRail.
- Automation Tools: Selenium, Cypress.
- Bug Tracking Tools: Bugzilla, Mantis.
Benefits of QA
- Improved software quality.
- Reduced rework and associated costs.
- Increased customer satisfaction.
- More efficient development processes.