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

  1. Planning: Establish quality standards/processes.
  2. Design: Review design for quality.
  3. Development: Ensure adherence to coding practices.
  4. Testing: Validate product requirements.
  5. 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.

Tools Used in QA

  • 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.