Formal training programme: manual testing to automatic testing
A formal training programme of 308 hours that upskills manual testers at Bands 3 to 7 into automatic testers, while each person stays in their current band and UK GDaD PCF role. There are eight tuned tracks. Every gate repeats a full capability self-assessment: the band (21 dimensions), the UK GDaD PCF role aspects, and every skill in the role.
The programme is 308 hours of protected learning time, by default 7.5 hours a week (20% of a 37.5-hour week), starts with three basics modules of 20 hours each (a programming language, a browser automator, and an AI assistant) and two ISTQB certifications (Foundation Level, and Advanced Level Test Automation Engineer), and ends on every track with a Lean Six Sigma Green Belt, lifetime certification (40 hours). The stack is JavaScript with Selenium and Mocha. Participants need only Node.js 24, Google Chrome, VS Code, and git: nothing needs Docker.
Start here
- spec/index.md: the single source of truth for the programme
- curriculum.md: the curriculum in one place: learning outcomes, schedule, every module with its depth, evidence, and materials, and the gates
- plan.md: why the programme is shaped this way
- tasks.md: the work to build, run, evaluate, and maintain it
What to do
Find your role, and work down its checklist. The roles are listed in the order the work happens.
Everyone
- Read the summary of the programme and its principles and rules.
- Know that gates are developmental only: a gate result never starts an HR procedure, and nobody changes band (Principle 14).
- Keep personal records out of this repository (see Privacy).
Sponsor (head of test)
- Read the sponsor brief and the resource estimate.
- Agree to sponsor the programme, and name a training lead.
- Release mentors: at least one band above each participant, at most 3 participants each.
- Decide Decision 1 (tool), Decision 2 (CI service), and Decision 8 (Green Belt certification body) with the training lead, in the decision log.
- Chair the Gate 4 panels for Band 7 participants.
Training lead
- Work through the Planning, Analysis, and Design sections of tasks.md.
- Get answers to the open questions, and record Decisions 1 to 7 in the decision log and the spec.
- Send the HR briefing, and get HR's agreement to Decision 6 and Decision 7 before Gate 0.
- Brief line managers with the manager briefing, and stakeholders with the stakeholder briefing.
- Fill in the cohort roster in the organisation's HR or learning system, and place each person in a track.
- Print the cohort's dates with
python3 scripts/gate_calendar.py <start Monday>, and book every gate. - Set up the practice repository for the cohort, and run its CI once on the organisation's CI service.
- Re-run the accessibility scan, and complete the manual checks.
- Run each gate with the gate materials, and moderate 1 in 5 assessments.
- After Gate 4, run the evaluation in tasks.md, and revise the spec.
HR
- Read the HR briefing.
- Agree that gates are developmental only, and that no band changes follow (Decision 7).
- Agree the Band 3 rule and the mapping rule for unusual band and role combinations (Decision 6), and who signs off each mapping.
- Agree how assessment records are kept, and for how long.
Line manager
- Read the line manager page: what you do, why, and about 33 hours per person.
- Read the manager briefing and the calibration guide.
- Sign the learning agreement, and protect the learning time in both calendars.
- At every gate, rate your person independently in their track's self-assessment, then agree each rating with them using evidence.
- Agree the individual learning plan after each gate, and check in every 15 learning hours.
Mentor
- Read the mentor page: what you do, why, and about 38.5 hours per participant.
- Read your participants' track guides and the modules.
- Get the practice repository working on your own machine:
npm ci, thennpm test. - Sign off each participant's three basics walkthroughs (Module 1 to Module 3) before Gate 0.
- Pair with each participant, review their pull requests, and run the role foundations practice in every 7.5 hours of learning.
- Prepare participants for each gate, including the Part D practicals.
Participant
- Find your track from your band and UK GDaD PCF role, and read its guide.
- Install Node.js 24, Google Chrome, VS Code with the ESLint extension, and git, using the environment checklist.
- Complete the three basics modules, each with a walkthrough to your mentor: Module 1 Basics of a programming language, Module 2 Basics of a browser automator, and Module 3 Basics of an AI assistant.
- Set up the practice repository:
npm ci, thennpm run test:katas. - Before Gate 0, complete your track's self-assessment, with evidence, following the calibration guide. The website has an interactive version of each.
- Agree your individual learning plan and sign your learning agreement.
- Work through the modules for your track, and keep a learning log.
- After Gate 4, complete the Lean Six Sigma Green Belt: your Green Belt project and the certification exam.
- Repeat the self-assessment before every gate, and give feedback after each one.
Product owner, clinical safety officer, information governance lead, and developers
- Read the stakeholder briefing: what the programme asks of you, and when.
- Clinical safety officer: review the traceability matrix template before the cohort starts.
Maintainer of this repository
- After changing any document or instrument, run
manual-testing-to-automatic-testing.github.io/bin/sync, thenmake check. - After changing the spec's tables, rebuild the track guides with
python3 scripts/build_track_guides.py .. - When the roles-skills reference changes, rebuild the instruments with
python3 scripts/build_instrument.py, and update the pinned version in instruments/README.md. - Publish the website with
make github-pages(see publishing).
Contents
| Folder | What it holds |
|---|---|
| instruments/ | The capability self-assessment for each track, generated from the roles-skills reference |
| scripts/ | build_instrument.py builds the instruments; capability_index.py scores a completed one; build_track_guides.py rebuilds the track guides from the spec; gate_calendar.py prints a cohort's dates; accessibility-scan/ scans the reading list's web resources |
| materials/modules/ | Core modules, Module 1 to Module 17: session plans, exercises, templates, capstone briefs, and the Lean Six Sigma Green Belt |
| materials/tracks/ | Track guides (Band 3 to Band 7) and the track modules: Role foundations, Health care foundations, Coaching others in automation, Automation strategy and metrics, Frameworks and non-functional testing, Acceptance test automation, and Leading teams through automation adoption |
| materials/planning/ | Planning pack: sponsor brief, HR briefing, manager and stakeholder briefings, decision log, resource estimate, cohort roster template |
| materials/gates/ | Gate overview, Part D practicals, review form, calibration guide, panel guide, individual learning plan and other templates |
| practice-repo/ | The participants' practice repository in JavaScript, with Selenium and Mocha: katas, browser and API tests, CI, and the FHIR sandbox (practice-repo/fhir-sandbox/): a small local FHIR server in JavaScript, with no Docker, with synthetic data and a profile, for Module 12 |
Website
manual-testing-to-automatic-testing.github.io/ is the programme's website: SvelteKit 3 with the Lily Design System and its PickerBar, published to GitHub Pages by git subtree. It renders every document here and adds an interactive capability self-assessment for each track. See spec/monorepo-github-pages/index.md.
manual-testing-to-automatic-testing.github.io/bin/sync # after changing any document or instrument
make check # check, build, and test the website
make github-pages # publish (needs the github-pages remote)
Privacy
Completed self-assessments, individual learning plans, learning logs, and gate forms are personal records. Keep them in the organisation's HR or learning system, never in this repository. The .gitignore blocks the usual file names as a safety net.
Sources
See spec/index.md.
View this document on GitHub README.md