Software Testing

SDLC Models

Overview of different Software Development Life Cycle models

What are SDLC Models?

Software Development Life Cycle (SDLC) models provide a structured framework for planning, creating, testing, and deploying software systems. Different models offer different approaches to organizing these activities based on project requirements, team size, and risk tolerance.

Common SDLC Models

ModelDescriptionBest For
WaterfallLinear sequential approach where each phase must be completed before the next beginsClear requirements, stable projects
V-ModelExtension of Waterfall with testing planned in parallel to each development phaseProjects requiring high reliability
SpiralCombines iterative development with systematic aspects of Waterfall; emphasizes risk analysisLarge, complex, high-risk projects
AgileIterative approach with frequent delivery of working software; embraces changing requirementsDynamic projects with evolving needs
ScrumAgile framework with fixed-length sprints, daily stand-ups, and defined rolesTeams needing structure within Agile
KanbanVisual workflow management with continuous delivery and work-in-progress limitsContinuous flow of work items
Extreme Programming (XP)Agile methodology emphasizing technical excellence and customer satisfactionProjects with changing requirements
RAD (Rapid Application Development)Focuses on rapid prototyping and quick feedback over strict planningTime-sensitive projects
DevOpsCombines development and operations for continuous integration and deploymentOrganizations seeking automation
Big BangLittle to no planning; development starts immediately with all resourcesSmall projects, proof of concepts
IterativeDevelops system through repeated cycles (iterations) with incremental improvementsLarge systems built in increments
IncrementalDivides requirements into standalone modules; each increment adds functionalityProjects with clear module boundaries

Model Selection Considerations

When choosing an SDLC model, consider:

  • Project Size and Complexity
  • Requirements Stability
  • Team Experience and Size
  • Risk Tolerance
  • Time Constraints
  • Budget Limitations
  • Customer Involvement Needs

V-Model (Verification and Validation Model)

The V-Model is a software development life cycle (SDLC) model that extensively focuses on testing, specifically the processes of verification and validation. While it follows the traditional flow of a waterfall model—proceeding through planning, requirements, design, architecture, and coding—it is unique because it directly maps each development phase to a corresponding testing phase.

Structure of the V-Model

The model is visualized as a "V" shape, where the left side represents the decomposition of requirements and system creation, and the right side represents the integration and validation of those components.

V-Model showing the relationship between development phases (left side) and testing phases (right side)

The Left Side (Development Phases):

  • Requirements Analysis
  • System Design
  • Architecture Design
  • Module Design
  • Coding (at the base of the "V")

The Right Side (Testing Phases):

  • Unit Testing (along with coding)
  • Integration Testing (where modules are put together)
  • System Testing
  • Acceptance Testing (performed just before or after deployment)

Mapping and Dependencies

A critical aspect of the V-Model is how it fixes dependencies, identifying exactly where the test cases for each stage should originate:

Development PhaseTesting PhaseTest Case Origin
Module DesignUnit TestingTest cases are derived from the module design specifications
Architecture DesignIntegration TestingTest cases are derived from the architectural design
System DesignSystem TestingTest cases are derived from the design documents
Requirements AnalysisAcceptance TestingTest cases are derived from the requirements document

By establishing these connections, the V-Model ensures that testing is not an afterthought but is instead integrated into every stage of the development process.

Key Characteristics

  • Sequential Approach: Like Waterfall, each phase must be completed before the next begins
  • Early Test Planning: Test planning begins during the corresponding development phase
  • High Quality: Rigorous testing at every level reduces defects in production
  • Clear Documentation: Each phase produces detailed documentation
  • Best For: Projects where reliability is critical (medical devices, aerospace, financial systems)

Agile Model

Agile software development is a collection of methodologies rather than a single, specific model. It is currently the most widely used SDLC model in the software industry.

Core Philosophy and Goals

Adaptability: The primary goal of Agile is to be adaptive to changing customer and market needs. Unlike traditional models that resist change, Agile embraces it as a natural part of software development.

Incremental Progress: Instead of waiting for all requirements or designs to be finished, the software is developed in small subsets of features that are incremental in nature. Each increment delivers working, valuable functionality.

Customer-Centric: The model is heavily dependent on customer interactions, rapid development, and quick delivery. Regular feedback loops ensure the product meets actual user needs.

Iterative Structure (Sprints)

Repetitive Cycles: Software is developed in quick phases called sprints or iterations, typically lasting 1-4 weeks.

Full SDLC in Each Iteration: In every single iteration (e.g., Sprint 1, Sprint 2, etc.), the team encounters all phases of the SDLC:

Sprint PhaseActivities
PlanningSprint planning, requirements analysis for selected features
DesignArchitecture and design for sprint scope
CodingImplementation of sprint features
TestingUnit testing, integration testing, acceptance testing
ReleaseDeploying working features to production

Continuous Evolution: After one iteration is released, the process repeats for the next set of features, adding them as an increment to the existing software.

Testing and Development Roles

Developer Responsibility: Agile methodologies specifically insist that the developer performs debugging and unit testing alongside the coding phase. This is not delegated to a separate QA team at the end.

Rapid Validation: Testing is integrated into each iteration to ensure that every release of features is thoroughly checked. The definition of "done" includes working, tested code.

Key Agile Practices:

  • Daily Stand-ups: Quick team sync on progress and blockers
  • Pair Programming: Two developers working together
  • Continuous Integration: Automated builds and tests on every code commit
  • Retrospectives: Team reflection on what went well and what to improve

Agile Manifesto Values

  1. Individuals and interactions over processes and tools
  2. Working software over comprehensive documentation
  3. Customer collaboration over contract negotiation
  4. Responding to change over following a plan

Best For

  • Projects with evolving or unclear requirements
  • Startups and innovative products
  • Teams that value flexibility over rigid planning
  • Environments where customer feedback is readily available
  • Products requiring frequent releases and updates

On this page