What is Software Testing?
Software Testing is the process of evaluating and verifying that a software application or system meets the business and technical requirements and is bug-free.
Objectives of Testing
- Identify defects
- Ensure software meets user requirements
- Improve product quality
- Ensure reliable performance
Principles of Testing
- Testing shows presence of defects
- Exhaustive testing is impossible
- Early testing saves time and cost
- Defect clustering
- Pesticide paradox
- Testing is context dependent
- Absence-of-errors fallacy
Types of Testing
- Functional Testing
- Non-functional Testing
- Regression Testing
- Smoke and Sanity Testing
- Exploratory Testing
Software Testing Life Cycle (STLC)
- Requirement Analysis
- Test Planning
- Test Case Design
- Environment Setup
- Test Execution
- Test Closure
Levels of Testing
- Unit Testing
- Integration Testing
- System Testing
- Acceptance Testing
Manual vs Automation
- Manual: Performed by QA analyst by hand, suitable for exploratory and usability testing
- Automation: Uses tools/scripts to test repetitive scenarios, great for regression testing
Key Testing Terminology
- Test Case: A set of conditions to test a specific functionality
- Bug: A flaw in software causing incorrect behavior
- Defect: Deviation from requirement
- Severity: Impact of the defect
- Priority: Urgency to fix the defect
Pro Tips
- Understand the requirement thoroughly before writing test cases
- Always document your observations
- Use exploratory testing to uncover hidden issues
- Communicate well with the development team