U64B6SQA: SOFTWARE QUALITY ASSURANCE
Assignment
   Unit 1
   1. What is Software Testing? Explain Advantages of Software Testing.
Software Testing is the process of evaluating a software application to identify bugs, errors, and
ensure it meets the specified requirements. It helps improve software quality, reliability, and
security.
Advantages:
      Ensures software reliability and performance.
      Reduces development costs by detecting early defects.
      Improves user satisfaction and experience.
      Enhances security by identifying vulnerabilities.
      Increases efficiency through automation and structured testing.
   2. Fundamental Principles of Testing
      Testing Shows Presence of Defects – Cannot prove software is defect-free.
      Exhaustive Testing is Impossible – Prioritization is required.
      Early Testing – Detecting defects early reduces costs.
      Defect Clustering – Most defects occur in a few modules.
      Pesticide Paradox – Repeating the same tests can make them ineffective.
      Testing is Context-Dependent – Different software requires different
       approaches.
      Absence-of-Errors Fallacy – A bug-free system is useless if it does not meet
       requirements.
   3. Software Verification and Validation
      Verification: Ensures the software is being built correctly (reviews,
       inspections, walkthroughs).
      Validation: Ensures the correct software is being built (testing with
       execution).
   4. Difference Between Static Testing and Dynamic Testing
      Static Testing – Reviews and analysis of code without execution.
      Dynamic Testing – Executing code to find defects.
   5. Difference Between SDLC and STLC
      SDLC (Software Development Life Cycle) – Covers software development
       stages from planning to maintenance.
      STLC (Software Testing Life Cycle) – Focuses only on the testing process
       within SDLC.
   6. V-Model of Software Testing
The V-Model (Verification and Validation Model) aligns development phases with
corresponding testing phases, ensuring early defect detection.
   7. Prioritization Techniques in Software Testing
      Risk-Based Testing – Prioritize high-risk functionalities.
      Requirement-Based Prioritization – Critical business requirements first.
      Customer Priority-Based Testing – Focus on user-demanded features.
      Complexity-Based Testing – Test complex areas first.
   8. Requirement Traceability Matrix (RTM)
A document mapping requirements to test cases to ensure complete test coverage.
   9. Software Testing Life Cycle (STLC)
      Requirement Analysis – Understanding what needs testing.
      Test Planning – Strategy and resource allocation.
      Test Case Development – Writing test cases and scripts.
      Test Environment Setup – Preparing the testing environment.
      Test Execution – Running test cases.
      Test Closure – Evaluating test results and preparing reports.
   Unit 2
   10. White Box and Black Box Testing
      White Box Testing – Tests internal logic and code structure.
      Black Box Testing – Tests functionality without knowing internal details.
   11. Levels of Software Testing
      Unit Testing – Testing individual components.
      Integration Testing – Testing interactions between components.
      System Testing – Testing the entire system.
      User Acceptance Testing (UAT) – Validating with end-users.
   12. Functional Testing
Ensures software functions as per requirements (e.g., UI, APIs, database, security, etc.).
   13. Non-Functional Testing
Focuses on performance, usability, security, and reliability.
   14. Functional vs. Non-Functional Testing
    Feature          Functional Testing             Non-Functional Testing
    Focus          What the system does            How the system performs
    Example        Login authentication           Response time under load
   15. Form-Level vs. Field-Level Validation
      Field-Level Validation – Immediate validation as user enters data.
      Form-Level Validation – Checks the entire form before submission.
   16. Alpha Testing vs. Beta Testing
      Alpha Testing – Done by internal testers in a controlled environment.
      Beta Testing – Done by external users in a real-world environment.