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
Unit Testing: Tests individual components.
Integration Testing: Tests interactions between components.
System Testing: Tests complete integrated software.
Acceptance Testing: Validates against business requirements.
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.