■ Software Engineering Basics (Simplified)
1. Purpose of Software Testing
Testing is done to find errors and check if the software works as users expect. Example:
Checking if a food delivery app shows the correct address.
2. Design Verification
Before coding starts, make sure the design has all the required features. Example:
Railway booking system design should have ticket booking, cancellation, and seat
selection.
3. Characteristics of Good Software
• Reliable – works correctly without failing. • Usable – easy to learn and use. Example:
Google Maps is reliable and easy to use.
4. Verification in Software Engineering
Verification = building the product correctly as per design. Example: Reviewing an online
exam portal design before coding it.
5. Cohesion
Cohesion = how well tasks in a module belong together. High cohesion = easier to
understand and maintain. Example: A “Billing” module should only handle billing tasks.
6. Verification vs Validation
• Verification – Are we building it right? (design check) • Validation – Are we building the
right thing? (real use check) Example: Verification: ATM design has “withdraw” option.
Validation: Actually withdrawing cash works.
7. Test-Driven Development (TDD)
Write tests first, then code, then improve code. Benefits: - Catches errors early - Makes
design clear - Increases confidence in changes Example: Write a test for “Add to Cart”
before coding it.
8. Fault Tolerance
System keeps working even if something fails. Use backups, error recovery. Example:
Google Drive uses backup servers if one fails.
9. Low-Level Design (LLD) vs High-Level Design (HLD)
HLD – Big picture of the system (modules, structure) LLD – Detailed design of each part
(algorithms, classes) Example: Banking app HLD → Transaction Module LLD →
Debit/credit algorithm, class design
10. Coupling vs Cohesion
• Cohesion = tasks in a module are related • Coupling = how much one module depends
on another Best practice: High cohesion + low coupling = easy to maintain and grow.
11. Role of Documentation
Helps understand design, coding, and testing Includes test plans, test cases, and bug
reports Example: Hospital system docs explain modules, user guides, and test steps.
12. Manual vs Automated Testing
Manual Testing: - Done by humans, slow, error-prone Automated Testing: - Done by tools,
fast, accurate Example: Manual → Visually checking a signup form. Automated →
Running 100 logins using Selenium.
13. Error Detection & Correction
Detect errors using: - Reviews, testing, debugging tools Fix errors using: - Bug fixing, error
handling (try-catch), recovery systems Example: ATM shows “Transaction failed” if the
network drops.
Key Idea
• Verification → Did we build it right? • Validation → Did we build the right thing? • High
cohesion + low coupling = good software.