This topic will cover the fundamentals of software testing, its importance in the software development lifecycle, types of testing, and the role of quality assurance in ensuring software reliability.
Introduction to Software Testing
(A concise, easy‑to‑read guide)
| Aspect | Description |
|---|---|
| Definition | The systematic process of evaluating a software product to find defects, verify that it meets requirements, and assess its quality. |
| Primary Goals | 1. Detect defects early. 2. Ensure the product behaves as expected. 3. Provide confidence to stakeholders. |
| Key Question | Does the software do what it is supposed to do, and does it do it well? |
| Concept | Meaning | Typical Use |
|---|---|---|
| Defect / Bug | A deviation from expected behavior. | Reported, tracked, and fixed. |
| Test Case | A set of inputs, execution conditions, and expected results. | Basis for manual or automated testing. |
| Test Suite | Collection of related test cases. | Organized execution (e.g., smoke suite, regression suite). |
| Test Plan | Document describing scope, approach, resources, schedule, and deliverables. | Guides testing activities. |
| Test Strategy | High‑level description of testing objectives and methods (e.g., “focus on security testing”). | Aligns testing with project goals. |
| Verification vs. Validation | Verification: “Are we building the product right?” (conformance to specifications). Validation: “Are we building the right product?” (meeting user needs). |
Both are essential; verification is often static, validation is dynamic. |
| Level | Focus | Typical Activities |
|---|---|---|
| Unit Testing | Individual components/functions. | Write/execute test code (often automated). |
| Integration Testing | Interaction between combined units/modules. | Test interfaces, data flow, API contracts. |
| System Testing | Whole system as a black box. | Functional, performance, security, usability tests. |
| Acceptance Testing | Business/Stakeholder perspective. | User Acceptance Testing (UAT), Contract Acceptance, Alpha/Beta testing. |
| Type | When Used | Goal |
|---|---|---|
| Functional | Throughout development | Verify features against requirements. |
| Non‑Functional | After functional baseline | Assess performance, security, usability, reliability, etc. |
| Static Testing | Early (requirements, design) | Review, walkthrough, static analysis – find defects without executing code. |
| Dynamic Testing | After code is runnable | Execute software, observe behavior. |
| Regression Testing | After changes/fixes | Ensure existing functionality remains intact. |
| Smoke / Sanity Testing | Build verification | Quick checks to confirm basic stability before deeper testing. |
| Exploratory Testing | When requirements are vague or to uncover hidden issues | Simultaneous learning, test design, and execution. |