Before you can test software effectively, you need to understand how software is built. The Software Development Life Cycle (SDLC) is the structured process that organisations follow to plan, design, build, test, deploy and maintain software. As a QA engineer, knowing the SDLC is not optional โ it tells you when to start testing, what artefacts to expect, and who to collaborate with at each stage. Teams that skip SDLC discipline ship chaotic releases; teams that follow it deliver predictable, testable software.
The Six Core Phases of the SDLC
While different organisations name them slightly differently, the SDLC consistently includes six phases: Requirements gathering, System design, Implementation (coding), Testing, Deployment, and Maintenance. Each phase produces deliverables that feed into the next, creating a traceable chain from business need to working software.
# Modelling SDLC phases and their key deliverables
SDLC_PHASES = [
{
"phase": "1. Requirements Gathering",
"activities": [
"Stakeholder interviews",
"Business requirements document (BRD)",
"Functional requirements specification (FRS)",
],
"qa_involvement": "Review requirements for testability and completeness",
},
{
"phase": "2. System Design",
"activities": [
"High-level design (HLD)",
"Low-level design (LLD)",
"Database schema design",
],
"qa_involvement": "Identify test scenarios from design documents",
},
{
"phase": "3. Implementation",
"activities": [
"Writing source code",
"Unit testing by developers",
"Code reviews",
],
"qa_involvement": "Prepare test cases, set up test environments",
},
{
"phase": "4. Testing",
"activities": [
"Execute test cases",
"Defect reporting and tracking",
"Regression testing",
],
"qa_involvement": "Primary QA phase โ execute, report, verify fixes",
},
{
"phase": "5. Deployment",
"activities": [
"Release to staging/production",
"Smoke testing in production",
"User communication and documentation",
],
"qa_involvement": "Smoke and sanity checks post-deployment",
},
{
"phase": "6. Maintenance",
"activities": [
"Bug fixes and patches",
"Feature enhancements",
"Performance monitoring",
],
"qa_involvement": "Regression testing on patches, monitoring dashboards",
},
]
for phase in SDLC_PHASES:
print(f"\n{phase['phase']}")
print(f" QA Role: {phase['qa_involvement']}")
for activity in phase['activities']:
print(f" - {activity}")
Common Mistakes
Mistake 1 โ Believing QA work only happens in the “Testing” phase
โ Wrong: “I am a tester, so I wait until the build is ready before I do anything.”
โ Correct: “I review requirements for testability in Phase 1, derive test scenarios from design docs in Phase 2, prepare test cases and environments in Phase 3, and execute tests in Phase 4.”
Mistake 2 โ Treating the SDLC as purely sequential regardless of model
โ Wrong: Assuming every project follows strict Waterfall and refusing to start testing until all development is complete.
โ Correct: Adapting your testing activities to the team’s actual SDLC model โ in Agile, testing happens every sprint alongside development rather than in a single late phase.