How the model works
Every figure on this site comes from the formulas below. A model you can check by hand is one you can defend. Every name in a formula links to its entry in the glossary, which defines each term the calculator uses.
Cost lives in three phases
A suite is paid for three times: once to build, every release to run, and continuously to keep working. The licence is usually the smallest of the four.
Build — one-off
- Total test cases
- basic + average + complex Test case complexity tiers
- Build effort
- Set up, install and configure + Scoping the suite + Training time per person × People trained
- + Σ Test case complexity tiers × Build time per test case for each tier, as Scratch vs migration
- Build cost
- Build effort × Effective hourly rate + Build tokens priced as Token cost
Authoring dominates. The gap between a codeless tool at fifteen minutes a case and a hand-written framework at four hours is, across a few hundred cases, measured in person-months.
Run — every release
- tests broken per run
- Total test cases × Test breakage rate ÷ Runs per year — found here, repaired under Maintain
- flaky per run
- Total test cases × Flaky failures per run
- Failures per run
- Defects found per run + tests broken per run + flaky per run — derived, never asked
- Run effort
- Prepare and start a run + Failures per run × Triage one failure + Defects found per run × Write up one defect + Report and sign off — an automation tool
- Run effort
- Prepare and start a run + Total test cases × Execution time per case + Defects found per run × Write up one defect + Report and sign off — a manual approach — the tester is the run
- Machine time per run
- Total test cases × Execution time per case — automation only; duration, not labour
- Run cost per year
- Run effort per run × Runs per year × Effective hourly rate + Token cost
Human effort is priced as what the person does, never as a share of machine time. For a tool, execution is machine time — it decides how long a run takes, not what it costs. The cost is everything a person has to do afterwards: look at each failure and decide whether it is a real defect, a broken test, an environment problem or a flake; write up the real ones; sign the run off. That deciding and writing up is defect validation, and the failures it rejects are the false positives — broken tests and flakes — that cost triage time whichever tool produced them. Failures are never asked for — they are derived from three things: how many bugs a cycle finds (a property of your product, entered once), how many tests the product broke (Maintain's breakage rate, spread over the year's runs), and the tool's flake rate. A run finds broken tests; Maintain fixes them, so nothing is counted twice. For a manual approach the tester is the run, so execution is counted in full, and there is no separate triage — the person decides what a failure means as they go. The vendor's kind, manual or automation, selects which formula applies; nothing is asked twice.
Maintain — continuously
- cases to repair
- Total test cases × Test breakage rate
- cases healed
- Total test cases × Self-healed cases per year
- Maintenance effort per year
- cases to repair × Repair time per case + cases healed × Review one heal + Platform upkeep per year + New cases added per year × Build a new case
When a vendor claims self-healing, or fewer false positives, they are claiming a lower breakage rate. This is where you put a value on that claim: reduce the rate from 30% to 10% and the five-year total moves accordingly. What healing does not remove is the person. Current practice is that every automatic repair is reviewed before it is trusted, so a heal is priced as a short review rather than as nothing.
Turning effort into cost
- Effective hourly rate
- loaded cost per FTE per year ÷ productive hours per FTE per year
- Labour cost
- hours × Effective hourly rate
- Token cost
- tokens ÷ 1,000,000 × cost per million tokens
A division that meets a legitimate zero — no FTEs budgeted, no runs a year — shows a dash. A number that cannot be computed is never shown as zero.
Licences are counted once, not once per application
Licence and infrastructure belong to the vendor, not the application. Summing them per application bills the same enterprise licence four times over on a four-app estate, which favours whichever tool has the smallest licence.
Aggregates count them once. Per-application views show an apportioned share, allocated by that app's share of total cases and labelled as allocated. The shares sum back to the total; a test asserts it.
| Counted once | Summed per app | |
|---|---|---|
| Test Automation Tool A | $36k | $144k |
| Test Automation Tool B | $18k | $72k |
Adding it up
- Annual ongoing cost
- Run cost per year + Maintenance cost per year + Licensing and infrastructure (allocated)
- Analysis horizon
- Build cost + Annual ongoing cost × years in the horizon — the total over the horizon
The build lands entirely in year one; everything else recurs for each year of the analysis horizon. That is why the cumulative chart matters more than any single year: it is where a tool with the higher licence and the lower maintenance overtakes the cheaper licence.
Build duration is a workspace-level question
- FTE capacity
- FTEs in budget × productive hours per FTE per year ÷ 52
- Build duration
- Σ Build effort across all applications ÷ FTE capacity
Applications compete for the same people, so a per-application duration is a comfortable number and an impossible plan. Where the build outruns the gap between releases, or needs more engineers than are budgeted, the model flags it.
Why we do not price named products
Cost estimates describe a category of tool — AI-native, codeless, script-based, homegrown, manual — never a named product. Comparison pages name vendors and state sourced facts about them. They do not attach a price to a name.
A site that priced a named company's software could not be neutral ground: any vendor that lost such an evaluation could argue the numbers were weighted against them. You assign the category, so the only prices in your comparison are the ones you entered.
The default scenario
Figures on comparison pages describe this suite unless a page says otherwise:
- One application with 300 test cases (90 basic, 150 average, 60 complex).
- 12 full regression runs a year, each finding about 5 defects.
- 40 new cases added a year as the product grows.
- A loaded cost of $120k per engineer per year across 1800 working hours.
- A 5-year horizon.
It is a generic mid-size estate, chosen to be recognisable rather than favourable to anything. Open the Calculator to replace it with yours.
What the model leaves out
It counts labour, licensing, infrastructure and AI token spend. It does not price the quality outcomes that are usually the actual reason to automate: defects that reach production, incidents avoided, and the release velocity a faster feedback loop buys.
Those are real and often larger than the labour saving. Leaving them out understates the case for automation, which is the right direction of error for a number you have to defend in front of a finance function — but say so when you present it, because someone will ask.
Three things are excluded deliberately: discounted cash flow, confidence ranges and sensitivity analysis. Discounting is not how organisations choose a test tool, and the other two double the input burden for a degree of precision the underlying estimates do not support.
Glossary of terms
Every term in the calculator's first column, defined: what it means, why it moves the cost, what values are typical for each category of tool, and where it is entered. Browse the full glossary.
Build
Run
Maintain
Licensing & Infra
Disclosure
TestingBudget takes no payment from any vendor and accepts no paid placement or affiliate arrangement. The application runs entirely in your browser, and your inputs are never uploaded anywhere.