Shift Left Testing
Move testing earlier in the SDLC, understand QA vs QE, and learn why automation engineers own quality differently than traditional testers.
What “shift left” means
On a traditional SDLC timeline (requirements → design → development → testing → deployment), testing sat at the right end. Shift left means pulling quality activities earlier — requirements review, design review, unit tests written before or alongside code, test automation in CI before merge.
Traditional: [ Requirements ][ Design ][ Dev ][ TEST ][ Deploy ]
Shift left: [ Req+Test ][ Design+Test ][ Dev+Test ][ Test ][ Deploy ]
STLC — Software Test Life Cycle
The test lifecycle mirrors the development lifecycle:
- Requirements analysis — identify what to test, clarify ambiguities before code is written
- Test planning — scope, schedule, resources, risk assessment
- Test design — write test cases, design test data, define acceptance criteria
- Test environment setup — databases, browsers, test accounts, CI pipelines
- Test execution — run manual and automated tests, log defects
- Test closure — metrics, retrospective, lessons learned, archive artefacts
Automation engineers spend most time on steps 1–4. Executing and reporting is automated.
QA vs QE — different jobs, different mindsets
| Quality Assurance (QA) | Quality Engineering (QE) | |
|---|---|---|
| Focus | Process and standards | Engineering and automation |
| Output | Test plans, defect reports | Test code, CI pipelines, frameworks |
| Approach | Validate after the fact | Prevent defects through design |
| Tools | JIRA, Zephyr, TestRail | Playwright, TypeScript, GitHub Actions |
| Mindset | ”Does it meet requirements?" | "How do we build it right the first time?” |
Modern automation roles are QE: embedded in engineering teams, writing code alongside developers, owning CI reliability as a first-class concern.
Three shift-left practices to adopt immediately
1. Write test IDs into markup from the start
// Developer adds data-testid at design time
<button data-testid="checkout-btn">Checkout</button>
// Automation engineer can write the locator before the feature ships
await page.getByTestId('checkout-btn').click();
2. Define acceptance criteria as test cases
Before a ticket is developed, the automation engineer writes the test cases that define “done”. The developer writes code until those tests pass.
3. Run the full suite in CI before merge
No PR merges with a red suite. This makes the automation engineer a first-class quality gate rather than an afterthought.