QA final notes

Software Testing Challenges

  • Complete Application Testing: Requires understanding of requirements and constraints.

  • Order of Test Execution: Critical for efficiency.

  • Production Environment Replication: Important for accurate testing.

  • Communication: Essential for effective testing.

Software Testing Definition

  • Process of analyzing software to identify defects and evaluate features.

  • Goals include:

    • Ensure software meets specifications.

    • Identify and fix defects.

    • Validate functional and non-functional requirements.

Verification vs Validation

  • Verification: "Are you building it right?"

    • Ensures functionality and includes static activities like code reviews.

  • Validation: "Are you building the right thing?"

    • Focuses on end-product and includes dynamic activities.

Static vs Dynamic Testing

  • Static Testing: Involves analyzing code without executing it (e.g., reviews).

  • Dynamic Testing: Involves executing the software to find defects.

  • Both methods are complementary.

Software Terminology

  • Failure: External behavior not conforming to specifications.

  • Error: State that may lead to failure if uncorrected.

  • Fault/Defect/Bug: Cause of error, synonymous with defects.

Testing Concepts

  • Test Case: Defined as an input and expected outcome pair.

  • Expected Outcome: Includes produced values, state changes, and potentially valid sequences.

  • Complete Testing: Nearly impossible due to vast input possibilities and complexity.

Software Quality Assurance (SQA)

  • Definition: Systematic actions to ensure products meet technical requirements.

  • Focus on:

    • Development processes.

    • Compliance with schedules and budgets.

Types of Testing

  1. Unit Testing: Tests individual components.

  2. Integration Testing: Tests interactions between components.

  3. System Testing: Tests complete integrated software.

  4. Acceptance Testing: Validates against business requirements.

  5. Functional vs Non-Functional Testing: Evaluates functional requirements and system performance.

Equivalence Class Testing

  • Involves defining input classes and testing representative values from each class to ensure adequate testing coverage.

Decision Table Testing

  • Involves creating tables that represent conditions and corresponding actions for testing complex logic.

Path Testing

  • Examines all possible execution paths through the software to ensure comprehensive testing, with a focus on cyclomatic complexity as a measure of complexity.

Object-Oriented Testing Strategies

  • Issues include handling of encapsulation, inheritance, polymorphism, and composition.

  • Unit testing frameworks such as JUnit facilitate automated testing in Object-Oriented environments.