Strengthen your testing foundations
Even strong manual testers find gaps when they slow down to write code that implements a test plan. Tighten the basics first.
Core testing techniques
These are the test-design moves you'll automate. Get them right on paper before you write code.
You'll learn to
- Apply equivalence partitioning and boundary-value analysis
- Build a decision table for any business rule
- Use pairwise testing to cut combinatorial blowup
- Choose technique by risk, not habit
Defect lifecycle and risk
Bugs are the unit of work for QA. A precise lifecycle and clear triage save hours of meetings.
You'll learn to
- Trace a bug through new → assigned → fixed → verified → closed
- Triage by severity × priority
- Write a bug report a developer can fix from
- Pick where to test based on risk
Programming foundations
Automation tools generate stack traces, not test reports. You need to read code before you can debug tests.
Language fundamentals
Variables, control flow, functions, and data structures. Read a stack trace and trace it back to source.
You'll learn to
- Variables, types, conditionals, loops, functions
- Arrays/lists and objects/dicts
- Read and parse JSON programmatically
- Read a stack trace back to the source line
Type safety
OptionalTyped code catches whole categories of bugs at compile time. Critical for test framework code.
You'll learn to
- Read and write type annotations
- Interfaces for page objects
- Generics for reusable utilities
- Discriminated unions for test states
Version control with Git
Every team ships through Git. You need it to submit test code, review PRs, and unstick a broken pipeline.
You'll learn to
- Clone, branch, commit, push
- Open and review a pull request
- Resolve a merge conflict in a test file
- Understand `.gitignore` for test artefacts
Web UI automation
This is the deliverable. Everything before is enablement; this is the skill on the CV.
DOM, selectors, and stable locators
Stable locators reduce flakiness so the suite stays trustworthy as the UI changes.
You'll learn to
- Inspect HTML using browser DevTools
- Write CSS selectors and XPath expressions
- Identify stable vs brittle locator strategies
- Prefer test IDs and ARIA roles
Pick a runner and write your first spec
The fastest way to learn a runner is to write a real spec against a real page, then trace failures.
You'll learn to
- Set up a project with TypeScript or your chosen language
- Use auto-waits and web-first assertions
- Write assertions with expect and matchers
- Configure fixtures for setup and teardown
- Debug failures with traces or time-travel
Page Object Model
Page objects centralise locators so a UI change requires fewer test updates.
You'll learn to
- Separate page locators from test logic
- Create a page class with action methods
- Reuse page objects across multiple test files
- Refactor an existing test to use POM
API testing
Testing at the API layer is faster and less flaky than UI. Most modern teams expect it from day one.
REST fundamentals
Before you automate, you need to send requests by hand and reason about responses.
You'll learn to
- Send GET, POST, PUT, DELETE requests manually
- Read and validate HTTP status codes and headers
- Parse JSON request and response bodies
- Authenticate with Bearer tokens and API keys
Code-driven API tests
Postman is great to explore; code is what runs in CI on every PR.
You'll learn to
- Build a Postman collection with chained requests
- Write Postman test scripts with assertions
- Move from Postman to a code framework
- Validate response schemas programmatically
- Cover error paths and edge cases
CI/CD and reporting
Tests that don't run on every PR don't catch regressions — they catch them late.
Run tests on every change
CI runs your tests on every commit, so regressions get caught before they reach main.
You'll learn to
- Write a GitHub Actions workflow that runs tests on push and PR
- Manage secrets and environment variables in CI
- Configure test jobs to run in parallel
- Debug a red pipeline from logs
Reporting and flaky-test tracking
Clear dashboards make test results easy to share with engineering leads and stakeholders.
You'll learn to
- Generate HTML test reports from your framework
- Set up Allure reporting with historical trends
- Identify and quarantine flaky tests
- Track flaky-test rate over time
Containerised test environments
OptionalDocker lets the same image run on a laptop, in CI, and in production-like environments.
You'll learn to
- Write a Dockerfile for your test container
- Run tests inside a Docker container
- Use docker-compose to spin up app + tests together
- Set up Selenium Grid with Docker containers