SDLC and STLC Explained
The software development lifecycle (SDLC) is the sequence of activities that takes a product from an idea to running software and keeps it running: requirements, design, implementation, integration, release and operation. The software testing life cycle (STLC) is the sequence of test activities — analysis, planning, design, environment preparation, execution and closure — that produces evidence about that software’s quality. The STLC is not a phase that starts when development ends; it runs alongside the SDLC, with a test activity paired to every development activity.
This pillar explains how the two lifecycles relate, where a tester takes part in each development phase, how the industry term “STLC” maps to the test process described by ISTQB, and how testing changes across sequential, V-model, iterative, Scrum and DevOps delivery. The narrower page in this topic, on the software testing life cycle, goes through the STLC phase by phase.
SDLC and STLC: what each term means
The SDLC describes how software is built and maintained. Its phases carry different names in different organisations and models, but the work is the same everywhere: agree what to build (requirements), decide how to build it (architecture and design), write it (implementation), put the pieces together (integration), make it available to users (release and deployment), and run, monitor and change it (operation and maintenance). The SDLC does not end at the first release; it ends when the product is retired.
The STLC describes how the testing inside that effort is organised. The version taught in most training material has six phases: requirement analysis, test planning, test case development, test environment set-up, test execution and test cycle closure. Each phase has inputs, outputs and criteria that say when it may start and when it is finished.
One precision matters. “STLC” is an industry term used in courses, interviews and job descriptions; it is not a term defined by ISTQB. The ISTQB Certified Tester Foundation Level (CTFL) v4.0 syllabus describes a test process made of seven groups of activities: test planning, test monitoring and test control, test analysis, test design, test implementation, test execution and test completion. ISO/IEC/IEEE 29119-2 describes test processes at the organisational, test management and dynamic test levels. The substance is the same; the names and the boundaries between steps differ. In short:
- Requirement analysis ≈ test analysis — deciding what to test (test conditions) and finding defects in the test basis.
- Test planning ≈ test planning — plus test monitoring and test control, which have no STLC phase of their own and run from planning to completion.
- Test case development ≈ test design (how to test: test cases, coverage items, data needs) and most of test implementation (procedures, scripts, suites, data).
- Test environment set-up ≈ the environment part of test implementation; ISO/IEC/IEEE 29119-2 treats it as a separate process.
- Test execution ≈ test execution, including defect reporting, confirmation testing and regression testing.
- Test cycle closure ≈ test completion.
How the development and testing lifecycles relate
The simplest accurate picture is two parallel tracks with links between them. Every development work product feeds the test work in its phase. Requirements, designs and API contracts are the test basis that test analysis and design read: a requirement is what test analysis reads, an API contract is what integration tests are derived from. A build, and later the running system, is the test object: the thing test execution runs against. And every test output feeds back into development: a review comment changes a requirement, a defect report changes the code, a test completion report informs the release decision.
- Development (SDLC):1Requirements
Feeds: Stories, specs, NFRs
Testing (STLC):Requirement analysis≈ test analysis; test planning startsFeeds back: A review comment changes a requirement
- Development (SDLC):2Design
Feeds: Architecture, API contracts, UI designs
Testing (STLC):Test analysis and designFor integration and system levels; environment needs identified - Development (SDLC):3Implementation
Feeds: Code, unit tests, builds
Testing (STLC):Test design and implementationTest data, environment set-up, automated checks, static analysis in CI - Development (SDLC):4Integration
Feeds: Integrated build
Testing (STLC):Test executionDeploy to the test environment; smoke and integration testsFeeds back: A defect report changes the code
- Development (SDLC):5Release
Feeds: Release candidate, then deployed version
Testing (STLC):Test execution and completionSystem, regression and acceptance tests; exit-criteria evaluation; deployment verificationFeeds back: A test completion report informs the release decision
- Development (SDLC):6Operation
Feeds: Running system, changes
Testing (STLC):Maintenance testingRegression testing for fixes; production signals reviewed
Throughout steps 1–5 Test monitoring and test control: no STLC phase of their own; they run from planning to completion.
The dashed links are the page’s examples of feedback, not the only ones.
CTFL v4.0 states this as good practice for any lifecycle model: for every development activity there is a corresponding test activity; each test level has its own specific objectives; test analysis and design for a given test level begin during the corresponding development phase; and testers take part in reviewing work products as soon as drafts are available. A team that follows these four rules has, in effect, aligned its STLC with its SDLC whatever names it uses.
- Scope — the SDLC covers the whole product from idea to retirement; the STLC covers the verification and validation work inside it.
- Output — the SDLC produces working software and its documentation; the STLC produces testware (test conditions, cases, data, scripts, results, defect reports, status and completion reports) and an assessment of quality and residual risk.
- Ownership — the SDLC belongs to the whole team, led by product and engineering; the STLC is usually led by test roles, but developers own component tests and product owners own acceptance.
- Frequency — a product has one SDLC with many iterations; the STLC repeats for every release, sprint and test level, and every defect fix triggers a small cycle of confirmation and regression testing.
- Success measure — for the SDLC, value delivered to users; for the STLC, how much justified confidence the evidence gives and how few defects escape to production.
Where QA takes part in each SDLC phase
Testers who join only when a build is ready can find failures but cannot prevent defects. The list below is what a tester does in each development phase, and the kind of problem that phase is best placed to catch.
- Requirements — review stories and specifications for ambiguity, contradictions, missing error paths and testability; propose acceptance criteria; list product risks. Typical findings: “refund within a reasonable time” has no number; nothing says what happens to a partially shipped order.
- Design — review architecture, API contracts and UI designs for testability: can the service run with a mocked payment provider, are errors logged with a request id, can the time zone and locale be configured? Derive integration test conditions from interface contracts and ask for numeric non-functional targets (response time, accessibility level, right-to-left layout).
- Implementation — prepare test cases, test data and automated checks while the feature is built; pair with developers on component tests; make sure static analysis and code review run in the pipeline. The tester’s aim here is that the first build handed over already passes the obvious checks.
- Integration — run component integration and system integration tests: API contracts, data flowing across services, handling of third-party timeouts and error responses; run the smoke and regression suites on every integrated build.
- Release — system and acceptance testing, full regression on the release candidate, evaluation of exit criteria, input to the go/no-go decision, and verification right after deployment that the release works in the target environment.
- Operation — review production signals (errors, latency, user reports), test hot-fixes, run maintenance testing when the platform, a dependency or the data change, and turn every escaped defect into a regression test.
Try it: AI Requirement Ambiguity Detector Try it: AI Requirement Gap Analyzer Try it: Acceptance Criteria Generator
The SDLC ↔ STLC mapping
The table pairs each development phase with the test activities that run during it, the test work products they produce and the test level they prepare or execute. Read it row by row: the test activity in a row starts when the development output in the same row exists, not when the whole project reaches that row.
SDLC phase | Development output | Test activities (STLC ~ ISTQB) | Test work products | Test level
----------------|-----------------------------|---------------------------------------------|------------------------------------|---------------------------
Requirements | Stories, specs, NFRs | Requirement analysis ~ test analysis; | Review findings, test conditions, | Acceptance (planned)
| | test planning starts | risk list, draft test plan |
Design | Architecture, API contracts,| Analysis and design for integration and | Integration test conditions, | Integration, system
| UI designs | system levels; environment needs identified | environment requirements | (planned)
Implementation | Code, unit tests, builds | Test design and implementation; test data; | Test cases, scripts, data, | Component (developers)
| | environment set-up; automated checks; | automated checks |
| | static analysis in CI | |
Integration | Integrated build | Deploy to test env; smoke and integration | Test logs, defect reports | Component integration,
| | test execution | | system integration
Release | Release candidate, then | System, regression and acceptance | Results, defects, status reports; | System, acceptance;
| deployed version | execution; monitoring and control; | go/no-go input, completion report | smoke in production
| | exit-criteria evaluation; deployment | |
| | verification; test completion | |
Operation | Running system, changes | Maintenance and regression testing for | Updated regression suite, | Whatever the change touches
| | fixes; review of production signals | lessons learned |Shift-left and shift-right testing
Shift-left means moving test activities earlier in the lifecycle so defects are found when they are cheapest to fix. CTFL v4.0 describes the approach and gives typical practices: reviewing specifications from a tester’s perspective, writing test cases before the code is written, using continuous integration for fast feedback, running static analysis before dynamic testing, and starting non-functional testing at component level where possible. The syllabus also notes the cost side: shift-left may need extra training, effort or cost early in the project, which is expected to save effort later. Shift-left is established practice.
Shift-right means extending testing and observation into production: releasing a change to a small share of traffic first and comparing it with the baseline (canary release, as described in Google’s SRE workbook), hiding unfinished features behind feature flags, running synthetic checks against live endpoints, and watching error rates and latency after every deploy. Canary releases and production monitoring are established practice in teams that deploy continuously; controlled fault-injection experiments in production (often called chaos engineering) go a step further.
The two are complements, not alternatives. Shift-left reduces the number of defects that reach a build; shift-right limits the damage of the ones that still reach users and tells you which of them your pre-release tests missed. Testing in production never replaces pre-release testing, and it needs safeguards: dedicated test accounts, no real personal data in test transactions, a flag or rollback that can switch the change off in minutes.
- Shift-left examples — acceptance criteria reviewed before sprint planning; API contract tests written from the OpenAPI document before the endpoint exists; unit and static checks on every pull request.
- Shift-right examples — a canary on 5% of traffic with automatic rollback if the error rate rises above the baseline; a synthetic login check every minute; a post-deploy health check across all public APIs.
Lifecycle models and how testing differs in each
The lifecycle model decides when test activities can happen, how much is written down and what the biggest testing risk is. The test activities themselves — analysis, design, execution, completion — exist in every model; what changes is their timing and granularity.
- Sequential (waterfall) — phases run in order and each finishes before the next begins. Dynamic testing is concentrated in a test phase after implementation; test planning and documentation are done up front and are usually formal. The main risk is lateness: defects in requirements are discovered months after they were written, and when development overruns, the test phase is the one that gets squeezed. The counter-measure is to do static testing (reviews of requirements and design) in the early phases even though dynamic testing waits.
- V-model — still sequential, but each development level is paired with a test level: requirements with acceptance testing, system specification with system testing, architectural design with integration testing, detailed design with component testing. Test analysis and design for each level start as soon as its development counterpart is produced, which is an early form of shift-left; execution still happens on the right-hand side of the V, after the code exists.
- Iterative and incremental — the product is built in increments, and each increment passes through its own design, build and test. Testing is repeated every iteration, so the growing regression suite becomes the main cost; without automation, each iteration spends more time re-checking old behaviour and less on the new.
- Agile / Scrum — the Scrum Guide defines Sprints of one month or less, an Increment that must meet the Definition of Done, and three accountabilities (Product Owner, Scrum Master, Developers) with no separate tester role: everyone who creates the Increment is a Developer, so testing is a whole-team responsibility inside the Sprint. Documentation is lighter, acceptance criteria and the Definition of Done work as the exit criteria, and test-first practices (TDD, ATDD, BDD) are common. The agile testing quadrants — defined by Brian Marick and described in Lisa Crispin and Janet Gregory’s book Agile Testing — help a team check that business-facing, technology-facing, manual and automated testing are all present.
- DevOps and continuous delivery — every change passes through a CI/CD pipeline that builds, deploys and runs automated tests, so the pipeline is the main test execution engine and quality gates live in it. Releases are small and frequent, which lowers the risk of each one, and shift-right monitoring closes the loop. DORA’s change fail rate and failed deployment recovery time are useful signals of whether testing in the pipeline is doing its job. CTFL v4.0 notes that manual testing from the user’s perspective is still needed and that the pipeline itself must be built and maintained.
Model | When dynamic testing runs | Documentation | Main testing risk | Key practice
---------------|----------------------------------|--------------------|---------------------------------------|------------------------------
Waterfall | After implementation, one phase | Formal, up front | Requirement defects found late; | Early reviews of requirements
| | | test phase squeezed | and design
V-model | Per level, right side of the V | Formal, per level | Execution still late | Design tests per level early
Iterative | Every iteration | Moderate | Regression effort grows each round | Automate regression
Scrum | Inside every Sprint | Light, just enough | "Done" without testing done | Testing in Definition of Done
DevOps / CD | On every change, in the pipeline | Pipeline as record | Slow or flaky pipeline; blind spots | Fast suites + monitoringEntry and exit criteria across the lifecycle
Entry criteria define the preconditions for starting an activity; exit criteria define what must be achieved before it can be declared complete. CTFL v4.0 notes that in agile teams exit criteria are often called the Definition of Done and entry criteria for a user story the Definition of Ready. The end-to-end QA pillar gives the general overview and the testing life cycle page gives criteria for each STLC phase; at SDLC level the useful gates are the hand-overs between development phases:
- Requirements → design — every story in scope has acceptance criteria including error paths; the ambiguity review is done; open questions have an owner and a date.
- Design → implementation — API contracts are published; non-functional targets are numbers, not adjectives; the test environment needs are agreed.
- Implementation → integration — the build is green; unit tests pass; static analysis shows no new critical findings; the change has been code-reviewed.
- Integration → release — the release candidate deploys to the test environment; the smoke suite passes; the test data baseline is loaded. This is the entry to system and acceptance testing on the release candidate.
- Within release, release candidate → production (the go/no-go decision) — planned tests executed or explicitly descoped; no open blocker or critical defects; regression suite green; residual risks accepted in writing by the product owner.
- Release → operation — deployment verification passed; dashboards and alerts exist for the new behaviour; rollback has been rehearsed.
Worked example: one feature through both lifecycles
For example, a fictional online store in Riyadh adds “pay in 4 instalments” at checkout for orders between SAR 200 and SAR 5,000, through an external instalment provider. Here is what testing does in each SDLC phase.
- Requirements — the tester’s review asks three questions the story never answered: how is SAR 999.99 split into four payments (who gets the rounding halala)? What does the shopper see if the provider declines? How is a partial refund handled after two instalments were paid? The answers become acceptance criteria.
- Design — the provider’s API contract is reviewed; the tester asks for a sandbox account and a mock for the decline and timeout responses, and for a rule on how long checkout waits before giving up.
- Implementation — test cases are designed with boundary values (199.99, 200.00, 5,000.00, 5,000.01), equivalence classes for provider responses (approved, declined, timeout, malformed) and a risk ranking that puts payment and refund first; API checks are automated as the endpoints appear.
- Integration — tests run against the provider sandbox: approval, decline, a 30-second timeout, a duplicate callback. A defect is found: “Order stays in PENDING forever when the provider callback arrives twice.”
- Release — full checkout regression, exit criteria evaluated (no open critical defects, all high-risk conditions passed), release to 5% of traffic first with the instalment error rate watched against the card-payment baseline.
- Operation — production shows a small rate of provider timeouts at peak hours; the tester adds a regression test for the retry path and a monitoring check for the timeout rate.
Try it: Boundary Value Analysis Try it: Risk-Based Test Generator Try it: Regression Scenario Generator
Map of this topic and where to go next
This pillar is the entry point for lifecycle questions. The software testing life cycle page goes through each STLC phase in depth — tasks, work products, entry and exit criteria per phase — and maps it to the ISTQB test process and ISO/IEC/IEEE 29119-2. Related pillars cover the neighbouring subjects: static testing and reviews (how requirements and designs are reviewed before any code runs), test strategy, test planning and risk-based testing (how the effort is decided and ranked), the defect lifecycle and triage (what happens to a defect after it is reported), and CI/CD testing with smoke, sanity and regression testing and deployment verification (how the cycle runs inside a pipeline).
For the overall picture of test levels, test types and release gates, see the end-to-end quality assurance pillar; for what to automate and what to keep manual, see the manual versus automated testing comparison. A short self-check for any team:
- Testers review requirements before development starts, not after the first build.
- Each development phase has a named test activity and an owner.
- Entry and exit criteria exist for the hand-overs, and a missed criterion is an explicit, recorded decision.
- The regression suite runs automatically on every integrated build.
- Production signals are reviewed after every release and escaped defects become regression tests.
Frequently asked questions
What is the difference between SDLC and STLC?
The SDLC is the whole process of building and running software — requirements, design, implementation, integration, release and operation. The STLC is the sequence of testing activities inside it — requirement analysis, test planning, test case development, environment set-up, execution and closure. The SDLC produces the product; the STLC produces evidence about its quality.
Is the STLC part of the SDLC?
Yes. The STLC runs inside the SDLC and in parallel with it: test analysis starts with requirements, test design with design and implementation, execution with integration and release, and maintenance testing continues during operation. It is not a stage that begins after development ends.
Does ISTQB use the term STLC?
No. STLC is an industry term. The ISTQB CTFL v4.0 syllabus describes a test process of seven activity groups — test planning, test monitoring and control, test analysis, test design, test implementation, test execution and test completion — which covers the same work under different names and boundaries.
When should testing start in the SDLC?
As soon as there is a work product to review — usually the first draft of the requirements. Reviewing requirements and designs is static testing; it finds ambiguities and missing cases before any code is written, which is when they are cheapest to fix.
How is testing different in agile compared with waterfall?
In waterfall, dynamic testing is concentrated in a phase after implementation, with formal documentation planned up front. In Scrum, testing happens inside every Sprint as a whole-team responsibility, documentation is lighter, and the Definition of Done acts as the exit criteria. Regression automation matters much more in agile because the same behaviour is re-checked every Sprint.
What is the difference between shift-left and shift-right testing?
Shift-left moves testing earlier — requirement reviews, tests written before code, fast checks in CI — to prevent defects. Shift-right extends testing into production — canary releases, feature flags, monitoring and synthetic checks — to detect what pre-release testing missed and limit its impact. Mature teams do both.
Who is responsible for testing in Scrum?
The whole Scrum Team. The Scrum Guide has no separate tester accountability: the Developers create a usable Increment that meets the Definition of Done, and testing is part of that. Many teams still have testing specialists among the Developers, who lead test analysis, exploratory testing and the quality of the automated suite.
References
- ISTQB Certified Tester Foundation Level (CTFL) v4.0The foundation syllabus of software testing: test levels and types, test design techniques, test management and tools.
- ISO/IEC/IEEE 29119-2:2021 — Software and systems engineering — Software testing — Part 2: Test processesThe test process model: organisational, test management and dynamic test processes, with their activities and outcomes.
- ISO/IEC/IEEE 29119-1:2022 — Software and systems engineering — Software testing — Part 1: General conceptsThe international software-testing standard: concepts, processes, documentation and techniques.
- The 2020 Scrum GuideThe definition of Scrum: its accountabilities, events and artifacts, including the Definition of Done that testing helps meet.
- Agile Testing: A Practical Guide for Testers and Agile Teams (Lisa Crispin, Janet Gregory)The agile testing quadrants and how testers work inside a delivery team — the basis of "testing at the right layer".
- Continuous Integration (Martin Fowler)The widely referenced description of continuous integration: integrate often, keep the build self-testing and fast, and fix a broken build immediately.
- DORA's software delivery performance metricsThe DORA delivery metrics — change lead time, deployment frequency, failed deployment recovery time, change fail rate and related measures — grouped by throughput and instability.
- Canarying Releases — The Site Reliability WorkbookReleasing a change to a small share of traffic first and comparing it with the baseline before rolling out — deployment verification as practised in SRE.
Practice exercise
Trace a bank feature’s problems back through the SDLC
You have joined the QA team of a fictional bank. Its mobile app has just launched "Scheduled transfers". The feature was built as a sequential (waterfall) project, and testers were involved only from the first build. The project log below records five problems, P1 to P5. Your team lead asks for a short retrospective: where should testing have caught each problem, and what should testing have done in each phase of the SDLC?
Work with the guide’s SDLC ↔ STLC mapping and its entry and exit criteria. Name each test activity both by its common STLC name and by the ISTQB CTFL v4.0 test process activity. Pen and paper are enough; allow about 30 minutes.
Project: "Scheduled transfers" in the mobile app of a fictional bank
Model: sequential (waterfall), go-live date fixed in advance
Weeks 1–3 — Requirements
Story: "Customers can schedule a one-off or a monthly transfer to a saved
beneficiary. The transfer runs on the chosen date." The business signs it off.
QA is not invited.
Weeks 4–6 — Design
The payment service will call the core banking system, which executes
transfers only on business days (Sunday to Thursday, except public holidays).
The API contract is written. No QA review.
Weeks 7–12 — Implementation
Code is written; developers write unit tests for the "next run date" calculation.
Week 13 — Integration
QA receives the first build and starts writing test cases.
Week 14 — System testing
P1: A one-off transfer dated on a Friday is never executed. No message is shown.
P2: A monthly transfer set for the 31st is skipped in 30-day months and in February.
P3: If the balance is too low on the run date, the transfer fails silently;
the customer is not told.
P4: The test environment has no stub of the core banking system, so every test
that makes a transfer is blocked for three days.
P1 is fixed (Friday and Saturday dates move to the next Sunday) and retested.
P2 and P3 stay open with severity "Minor".
Week 15 — Release
The go-live date is fixed, so testing stops. No exit criteria were ever agreed.
Week 18 — Operation
P5: Transfers dated on a public holiday are not executed and customers are
not told. Complaints reach the call centre.- For each problem P1 to P5, name the SDLC phase in which the mistake behind it was made, and the earliest SDLC phase in which a test activity could have caught it.
- For each problem, name that test activity (STLC name and ISTQB name) and say whether it is static testing (a review) or dynamic testing (running the software); for dynamic testing, add the test level.
- Rewrite the project’s testing phase by phase, from Requirements to Operation: one or two test activities per phase and the test work product each one produces. Mark which actions are shift-left and which are shift-right, and include what QA does about P5 now.
- Write the exit criteria the go/no-go decision in week 15 should have used, state which of them were met, and give the recommendation testing should have made.
Show the model answer
The common thread: no tester reviewed the story, so its gaps — non-business days (a rule known in the design), month ends and the low-balance path — never reached the requirement or its acceptance criteria. P1, P2, P3 and P5 start from defects in the test basis, which static testing could have found before any code existed. In strict ISTQB terms, P1, P2 and P3 as testers saw them in week 14 were failures; the defects that caused them sat in the story and in the code. The log also shows the two risks the guide names for the sequential model: requirement defects found late and a squeezed test phase.
P1 (the Friday transfer never runs). The mistake was made in Requirements: the story says "runs on the chosen date" but gives no rule for non-business days. It was repeated in Design, when the core banking constraint was known but not fed back into the story. Earliest catch: Requirements, by reviewing the story — requirement analysis in STLC terms, test analysis in ISTQB terms; static testing. The question to raise: "What happens when the chosen date is not a business day?" The design review of the API contract in weeks 4–6 was a second chance, also static. The dynamic test that finds it is a system test with a Friday date.
P2 (the 31st skipped in shorter months). The mistake was made in Requirements ("monthly" is not defined for days that do not exist in every month) and repeated in Implementation (the developers filled the gap with their own choice instead of raising it, so their unit tests checked that choice, not an agreed rule). Earliest catch: the Requirements review (requirement analysis ≈ test analysis; static), asking "What happens to a monthly transfer on the 29th, 30th or 31st in a shorter month?" Next chance: Implementation, in test case development (≈ test design): a test case with the 31st in a 30-day month, or with February in a leap or non-leap year, needs an expected result, and writing it forces the question the story left open. Those tests are dynamic: component tests in the developers’ unit tests, then system tests once a build exists.
P3 (a transfer that silently does not happen on a low balance). The mistake was made in Requirements: the error path is missing and no notification is specified. Earliest catch: the Requirements review (static; requirement analysis ≈ test analysis), which should produce an acceptance criterion such as "If the balance is too low on the run date, the transfer is not made and the customer is notified." Dynamic checks follow as system and acceptance tests with a low-balance account. Logging P3 as Minor understated it: a payment that silently does not happen affects customers’ money, so its severity is at least Major, and it belongs in the go/no-go discussion.
P4 (no stub of the core banking system). This is not a product defect but a gap in test planning. The mistake was made in Design: nobody identified the test environment needs. Earliest catch: Design, when the architecture is reviewed for testability ("Can the payment service run against a stub of the core banking system?") and the environment needs are recorded in the test plan. The design review is static testing; test planning (the same name in STLC and ISTQB) is a management activity — no software runs in either. The stub is then built during Implementation (test environment set-up ≈ the environment part of test implementation), and its availability becomes an entry criterion for integration testing.
P5 (public holidays). The same mistake as P1, made in Requirements; the hurried fix for P1 covered weekends only. Earliest catch: the same Requirements review that would have caught P1 (static). The last chance before release was in week 14, when P1 was fixed: the tester confirmed the Friday case (confirmation testing) but did not ask which other non-business days exist. Test analysis of "the run date is not a business day" should have produced two test conditions — a weekend date and a public-holiday date — each with its own test; the dynamic test that finds P5 is a system test with a public-holiday date. Because P5 reached production, it is an escaped defect.
Phase by phase, the project should have run like this. The actions in Requirements, Design and Implementation are shift-left; the checks in production — deployment verification right after go-live and the monitoring in Operation — are shift-right.
Requirements (weeks 1–3): requirement analysis ≈ test analysis. Review the story (static testing) and raise the questions about non-business days, end-of-month dates, low balance and notifications; turn the answers into acceptance criteria; list the product risks (money moved on the wrong day, or not at all); start test planning. Work products: review findings, acceptance criteria, test conditions, a risk list and a draft test plan.
Design (weeks 4–6): requirement analysis ≈ test analysis, now of the design documents for the integration and system levels, and test planning for the environment. Review the API contract and the architecture for testability (static testing). How does the core banking system answer a transfer on a non-business day or with too little balance? Can the test environment use a stub of it? Can testers set the system date to simulate a future run date? Record the environment needs in the test plan. Work products: integration test conditions and environment requirements (the stub, a settable date, test data for the holiday list).
Implementation (weeks 7–12): test case development ≈ test design and test implementation. Test cases for each kind of date (business day, weekend, public holiday, the 29th, 30th and 31st in shorter months, February in leap and non-leap years) and for a low balance; test data (low-balance accounts, saved beneficiaries); test environment set-up with the stub; developer unit tests that include month ends. Work products: test cases, test data, the stub and automated checks.
Integration (week 13): test execution (the same name in STLC and ISTQB). Deploy the integrated build to the test environment, run a smoke test, then integration tests between the payment service and the stub (transfer accepted, rejected because the date is not a business day, rejected because the balance is too low). Work products: test logs and defect reports.
Release (weeks 14–15; the log’s "System testing" week belongs to this phase): test execution, test monitoring and test control, and test cycle closure ≈ test completion. System and acceptance testing on the release candidate, with the business checking the acceptance criteria; confirmation testing of every fix followed by regression testing of scheduling and transfers; monitoring and control of progress against the plan; exit-criteria evaluation and a test completion report as input to the go/no-go decision; deployment verification right after go-live. Work products: test results, defect reports, status reports, the go/no-go input and the test completion report.
Operation (week 16 onwards): review production signals — a daily comparison of the scheduled transfers due with those executed or notified (shift-right), and customer complaints. For P5: a defect report with the holiday date and the expected and actual results; confirmation testing of the fix with holiday dates; regression testing of scheduling; a permanent regression test for holidays; and maintenance testing whenever the holiday list changes. Some public holidays follow the Hijri calendar, so their Gregorian dates move every year: the list is data that must be updated. Work products: defect reports, an updated regression suite and lessons learned.
Exit criteria for the go/no-go decision in week 15, and whether they were met: (1) every planned test executed, or descoped by a recorded decision — not met: tests were blocked for three days and then testing simply stopped. (2) No open blocker or critical defect, and every open major defect accepted in writing by the product owner — not met in substance: P2 and P3 are open and logged as Minor, although both mean a payment that does not happen. (3) All high-risk test conditions passed: weekend and public-holiday dates, month ends, low balance — not met: holidays were never tested, and P2 and P3 are open. (4) Regression suite green on the release candidate after the last fix — not met: the P1 fix had confirmation testing only. (5) Residual risks accepted in writing, and a way to switch the feature off (a feature flag or a rollback) ready — not recorded.
Recommendation: no-go for scheduled transfers in week 15. Testers do not own the release decision — the product owner and the business do — but the test input should state plainly that none of the exit criteria were met and name the residual risks: money not moved on the expected date, and customers not told. Reasonable options: delay the feature, or release the app with scheduled transfers switched off behind a feature flag until P2 and P3 are fixed and holiday dates are tested.
To check your own answer: if you placed the earliest catch for P1, P2, P3 and P5 in the Requirements phase as a static review, and for P4 in the Design phase as test planning, you have the key idea of this guide: every development work product feeds testing (requirements, designs and API contracts as the test basis; builds and the running system as the test object), and testing starts as soon as the first draft of the requirements exists.
Your progress on this topic
Not started
Mark the topic complete when you have studied it and done the exercise.
Sign in to track your progress
Mark topics complete, continue where you left off and unlock specialisation exams.
Part of the QA Roadmap
Before this topic
Next topics
Tools mentioned in this guide
Detect ambiguous, vague or contradictory statements in requirements and get clarifying questions from Mutqan AI.
Find missing requirements — error handling, permissions, edge conditions, non-functional needs — with Mutqan AI.
Generate Given/When/Then acceptance criteria and a definition-of-done checklist from a user story.
Convert a list of numbered requirements into traceable test cases with a requirement-to-test matrix.
Score features by likelihood and impact, then generate a prioritised risk-based test plan.
Perform full boundary value analysis (2-value and 3-value BVA) with equivalence classes and expected results.
Generate regression scenarios from a change description and a list of affected and related modules.