Software Testing in SAD
Quick Revision Notes · Verification vs Validation · Testing Levels · Black Box vs White Box · 15 Interactive MCQs
What is Software Testing?
Software Testing is the process of evaluating a software application to identify defects (bugs) and verify that it meets the specified requirements.
🎯 Objectives:
- Detect defects before deployment
- Ensure software meets user requirements
- Improve software quality & reliability
- Reduce maintenance cost
- Increase customer satisfaction
Why is Testing Important?
- Prevents costly software failures
- Improves application security
- Ensures optimal performance under load
- Saves development and long-term maintenance costs
- Increases customer confidence and adoption
Verification vs. Validation
| Feature | Verification | Validation |
|---|---|---|
| Core Question | Are we building the product right? | Are we building the right product? |
| Execution | Static (No code execution) | Dynamic (Requires code execution) |
| Activities | Reviews, walkthroughs, inspections | Unit, integration, system, acceptance testing |
💡 Exam Tip: Verification = Without Code Execution (Static) · Validation = With Code Execution (Dynamic)
Levels of Testing
1. Unit Testing
- Tests individual components or smallest code modules
- Usually performed by developers
- Advantages: Easy debugging, early bug detection, reduces integration overhead
2. Integration Testing
- Tests interactions and data transfer between integrated modules
- Strategies: Top-Down, Bottom-Up, Big Bang, Hybrid (Sandwich)
3. System Testing
- Tests the complete, fully integrated software system end-to-end
- Conducted after integration testing to ensure compliance with specified requirements
4. Acceptance Testing
- Performed by the customer or end-users to validate business requirements
- Alpha Testing: Conducted at the developer's site in a controlled environment
- Beta Testing: Conducted by real end-users at customer sites in a real-world environment
Types of Software Testing
Black Box Testing
- No knowledge of internal source code. Focuses purely on functional inputs and outputs.
- Techniques: Equivalence Partitioning, Boundary Value Analysis (BVA), Decision Table Testing, State Transition Testing.
White Box Testing
- Requires full knowledge of source code structure and logic.
- Techniques: Statement Coverage, Branch Coverage, Path Coverage, Cyclomatic Complexity, Loop Testing.
Grey Box Testing
- Partial knowledge of internal code structure. Combines functional black-box perspective with structural awareness.
Functional vs. Non-Functional
- Functional Testing: Verifies functional requirements (e.g., Login, Payment Gateway, Registration)
- Non-Functional Testing: Measures quality attributes such as Performance, Load, Stress, Security, Usability, Compatibility
Specialized Testing Types
- Regression Testing: Re-testing modified software to ensure existing features remain unbroken
- Smoke Testing: "Build Verification Testing" — checks basic stability before launching deeper tests
- Sanity Testing: Fast, targeted check focusing on specific code changes or recent bug fixes
- Static Testing: Done without running the code (Code Reviews, Walkthroughs, Inspections)
- Dynamic Testing: Done by executing code (Unit, Integration, System, Acceptance)
Error, Fault, Bug, and Failure
| Term | Meaning |
|---|---|
| Error | Human mistake made during coding or design |
| Fault / Defect | Incorrect code or manifestation of an error |
| Bug | Informal developer term for a fault |
| Failure | Incorrect behaviour exhibited by software during execution |
Software Testing Life Cycle (STLC)
- Requirement Analysis
- Test Planning
- Test Case Development
- Test Environment Setup
- Test Execution
- Defect Reporting & Tracking
- Test Closure
Quick Revision Table
Memory Tricks
Unit → Integration → System → Acceptance
Alpha → Beta
Black → Grey → White Box
Exam-Oriented Tips
- GATE: Master White-Box coverage criteria (Statement vs. Branch vs. Path Coverage), Cyclomatic Complexity (V(G) = E − N + 2P), and Boundary Value Analysis test case count.
- Rajasthan Computer Teacher: Focus on direct distinctions: Alpha vs. Beta, Verification vs. Validation, Smoke vs. Sanity, STLC phase ordering.
- UGC NET: Structural software engineering concepts, formal definitions of Error-Fault-Failure, static analysis techniques, and SDLC/STLC process models.
Conclusion
Software Testing is an essential part of the Software Development Life Cycle. Understanding the differences between verification and validation, the levels of testing, and the various testing techniques is crucial for both academic and professional success.
For deeper revision, check out Software Engineering Revision by Aditi Mam — covers key UGC NET & GATE MCQs with clear explanations.
परिणाम
बहुत अच्छा!
ऊपर 'पुनः प्रयास' बटन से दोबारा प्रयास करें