STLC: the six phases of the software testing life cycle

STLC title card reading System Testing Life Cycle, with an icon of a computer screen and a gear
The software testing life cycle in six phases, with the entry criteria, exit criteria and deliverables for each phase, and how it runs inside a two-week sprint.

The software testing life cycle is the sequence a test effort runs through, from reading the requirement to signing off the release. It exists so that testing is a process with defined start and stop conditions rather than a period of time that ends when someone runs out of patience.

Most teams already do a version of it informally. Writing it down as phases matters for one reason: each phase has an entry condition that says whether you are allowed to start, and an exit condition that says whether you are allowed to stop. Without those two, "testing is done" means "the sprint ended", which is not the same claim.

What STLC means

STLC stands for software testing life cycle. It covers the testing activity only. The software development life cycle, SDLC, covers building the product; the STLC sits inside it and runs against whatever the SDLC produces.

The phases are not a schedule. In a sequential project they run once, end to end. In a two-week sprint they run every sprint, compressed, with several of them overlapping. The order holds even when the durations collapse to hours.

Six phases or seven?

Search for this and you will get both numbers, which is the first thing that confuses people. Both are correct, and the difference is one boundary.

The six-phase version treats test environment setup as its own phase. The seven-phase version splits requirements analysis into two, separating the study of the requirement from the decision about what is feasible to test, and some sources instead split execution into execution and defect reporting. A few merge environment setup into test case development and get five.

None of this changes the work. The activities are identical; only the lines drawn between them move. If you are answering an exam question, use the numbering in the syllabus you were taught. If you are running a project, the number is irrelevant and the entry and exit criteria are the whole point. This article uses six because the environment is where projects most often stall, and a phase that has no name gets no owner.

The six phases, with entry and exit criteria

The table is the part worth keeping. A phase without a stated exit condition tends to end when the next phase's deadline arrives.

1. Requirements analysis

The testers read the requirement and work out what can be tested and how. This is also the cheapest defect detection in the whole cycle, because ambiguity found here costs a conversation and the same ambiguity found in execution costs a rebuild.

The question that earns its keep: "how would I prove this is wrong?" A requirement nobody can fail is not a requirement, it is a hope. "The page should load fast" fails that test. "The product listing renders within 2 seconds at the 95th percentile on a throttled 4G connection" passes it.

Entry Requirements, user stories or specs exist in some reviewable form
Exit Every requirement is marked testable, untestable or needs clarification, and the open questions are logged against a named person
Deliverables Requirement traceability matrix, list of open questions, automation feasibility note

2. Test planning

The lead decides scope, approach, effort, environments, tools and risk. In a sprint this is twenty minutes and a paragraph in the ticket. On a regulated project it is a controlled document under ISO/IEC/IEEE 29119.

The plan is where the exit criteria for the whole cycle get written, and they should be written as numbers you can check rather than adjectives. "All critical and high defects closed, no more than 3 medium defects open with documented workarounds, 100% of priority-1 test cases executed, 95% passed" is checkable. "Quality is acceptable" is not.

Entry Requirements analysis complete, scope of the release known
Exit Plan reviewed and agreed by dev lead and product owner, effort estimated, risks named with owners
Deliverables Test plan, effort estimate, risk register

3. Test case development

Cases get written, reviewed and linked back to requirements. Test data gets prepared, which is the step teams skip and then lose two days to.

A case with an expected result of "works correctly" is not a case. The expected result has to be specific enough that two different testers reach the same verdict on the same screen. Review matters here for the same reason code review does: the author is the worst-placed person to spot their own missing branch.

Entry Test plan approved
Exit Cases peer reviewed and approved, every priority-1 requirement has at least one case, test data prepared and loaded
Deliverables Test cases, test scripts, test data sets, updated traceability matrix

4. Test environment setup

Hardware, software, network, test data and access, in a state that matches production closely enough for results to mean something. This phase runs in parallel with case development, and it is the one that most often silently fails.

Setup is not finished when the environment exists. It is finished when a smoke check passes against it, run by someone who did not build it. A one-line health check in CI is enough to catch the usual failures, which are a stale build, a missing seed and a service that is up but pointing at the wrong database:

curl -fsS -o /dev/null -w '%{http_code}\n' https://staging.example.com/health \
  && curl -fsS https://staging.example.com/api/version | jq -r '.build, .commit'

If the returned commit is not the one you meant to test, everything after this point is a measurement of the wrong artefact. That failure mode is common and it is very hard to spot from test results alone, because the tests pass or fail plausibly either way.

Entry Architecture and environment requirements known, build available
Exit Smoke test passes, build version confirmed against the intended commit, all testers have access
Deliverables Environment ready confirmation, smoke test results, build version record

5. Test execution

Cases are run, results recorded, defects raised, fixes retested, and a regression pass confirms the fixes broke nothing else.

Two records matter more than the pass rate. The first is the build each result belongs to, because a pass on yesterday's build is not evidence about today's. The second is blocked versus failed: a blocked case was never run, and rolling blocked cases into "not passed" hides the fact that a chunk of the suite has no result at all.

Entry Environment ready, cases approved, build deployed and version confirmed
Exit Planned cases executed or formally deferred, defects logged and triaged, exit criteria from the test plan met
Deliverables Execution results per build, defect reports, retest and regression results

6. Test cycle closure

The cycle ends with a record of what was tested, what was found, what is still open and what the team would do differently. Closure is the phase that gets dropped when a release runs late, which is why the same environment problem shows up in three consecutive releases.

Useful closure numbers are defect density per module, defect leakage (defects found in production divided by total defects found, which tells you what the cycle missed), the ratio of blocked to executed cases, and the average time a defect sat between raised and fixed. One page is enough. Nobody reads twelve.

Entry Execution complete, exit criteria met or exceptions signed off
Exit Closure report circulated, metrics recorded, lessons logged as actions with owners
Deliverables Test closure report, metrics, updated reusable assets

STLC vs SDLC

The two are often confused because the phase names rhyme. The distinction is simple: SDLC builds the product, STLC checks it, and STLC phases are triggered by SDLC outputs.

SDLC phase What STLC does at the same time
Requirements Requirements analysis, feasibility, traceability matrix started
Design Test planning, approach and environment requirements agreed
Development Test case development, test data preparation, environment setup
Testing Test execution, defect reporting, retest and regression
Deployment and maintenance Cycle closure, production defect tracking, suite maintenance

The practical consequence is that testing starts at the requirements phase, not after development finishes. A team that begins its STLC when the build lands has already skipped the two phases where defects are cheapest to remove.

What the STLC looks like in a two-week sprint

The formal description reads as though each phase takes weeks. In practice it compresses hard, and it is worth seeing the compressed version because that is the one most teams are actually running.

A feature enters refinement. The tester reads the story and asks the questions that requirements analysis exists to produce, usually two or three of them, usually about error states nobody specified. Those answers change the acceptance criteria before a line of code is written.

While the developer builds, the tester writes the cases against the agreed criteria and prepares the data. Planning here is a paragraph, not a document: what is in scope, what is deliberately out, which environment, and what would make this story not shippable.

The build lands. Environment setup means confirming the deployed commit matches the one in the ticket, then running the smoke check. Execution follows, defects are raised with the build number attached, fixes come back, the tester retests and runs the regression subset around the touched area.

The story closes when the exit criteria in the ticket are met, not when the sprint ends. If they are not met, the honest outcome is that the story does not ship, and the closure note records why. That last sentence is the one that makes the whole cycle worth having.

Where the STLC breaks down

Most of it comes down to the same handful of failures, and they are process problems wearing a technical costume.

The first is environments that drift from production. Different data volumes, different configuration, different versions of a dependency. The result is defects that reproduce in one place and not the other, and a team that slowly stops trusting its own test results.

The second is requirements that move after cases are written and nobody updates the traceability matrix. The suite keeps passing while testing something the product no longer does. This is invisible from the pass rate, which is exactly why it survives.

The third is time. When a release runs late, execution gets cut, and it gets cut from the end, which is where the regression pass lives. The alternative is to cut scope rather than coverage: ship fewer features fully tested rather than all of them partially. That decision belongs to the product owner, and the test plan's exit criteria are what makes it a decision instead of an accident.

Sources

The ISTQB glossary defines the terms used here, and ISO/IEC/IEEE 29119 is the international standard for software testing documentation, including test plans and the content of a test completion report.

If you want the structured version of the planning phase, our guide on how to write a test plan covers the document section by section with a worked example. For the execution phase, how to write bug reports covers the expected-result problem in more detail.

BetterQA runs this cycle as an embedded QA team for clients who would rather not build the process from scratch. If your testing currently ends when the sprint ends, the entry and exit criteria above are the cheapest place to start.

Built by BetterQA

Need help with software testing?

BetterQA provides independent QA services across manual testing, automation, security audits, and performance testing. ISO 27001, 9001, 14001 and 13485 certified.

Share the Post: