Direct answer: at Azure App Testing public list prices on 11 November 2026 (USD, excluding tax and discounts), Azure Load Testing bills per Virtual User Hour (VUH): $0.15/VUH for the first 10,000 VUH and $0.06/VUH above 10,000 (progressive tiers). VUH = virtual users × run minutes ÷ 60; Microsoft samples active virtual users every 10 seconds and bills fractional VUH. For example, 1,000 VUs for 30 minutes = 500 VUH = $75. From 1 March 2026 there is a minimum charge: each test bills at least 10 VUs per engine for its duration; runs shorter than 10 minutes use 10 minutes. So 5 VUs for 3 hours is 15 VUH actual but 30 VUH minimum, billed $4.50; 5 VUs for 5 minutes is 0.83 VUH actual but 1.67 VUH minimum, billed $0.25. The Retail API also lists a $10 JMeter Load Testing Resource meter (not shown on the pricing page; shown separately here as an optional resource fee to verify on the bill). 10,000 VUH = $1,500; 20,000 VUH = $1,500 + 10,000×$0.06 = $2,100; 100,000 VUH = $6,900.
This guide is for QA/performance engineering, SRE, platform engineering, finance and procurement choosing a load-testing tool, migrating from self-hosted JMeter/Locust, or budgeting CI/CD performance tests. It separates official prices, editorial calculations and exclusions, covering the VUH formula and 10-second sampling, the 1 March 2026 minimum charge, volume tiers and monthly costs, CI scenarios, Playwright Workspaces on the same page, the boundary with self-hosted JMeter and a 90-day checklist. Prices come from the Azure App Testing pricing page, Azure Retail Prices API and Microsoft Learn Load Testing overview/concepts docs (11 November 2026). This is not procurement advice.
(1) VUH is not "test count": it is virtual users × duration. 1,000 VUs for 30 minutes is 500 VUH ($75); for an hour it is 1,000 VUH ($150). (2) From 1 March 2026 there is a minimum: 10 VUs per engine; runs under 10 minutes use 10 minutes, so short/low-concurrency tests get lifted to the minimum VUH. (3) 10,000 VUH is the price break: $0.15 before, $0.06 after; big batches get cheaper, but the resource fee/engine count are separate.
VUH formula: virtual users × minutes ÷ 60
Official definition: VUH = (simulated virtual users × run minutes) ÷ 60; the service samples active virtual users every 10 seconds and bills fractional VUH. Examples: 1,000 VUs × 30 minutes ÷ 60 = 500 VUH; 500 VUs × 60 minutes = 500 VUH; 100 VUs × 10 minutes = 16.67 VUH. With multiple engines, the official billing example multiplies by engine count (500 VUs, 2 engines, 5 minutes = 500×5/60×2 = 83.33 VUH), so check "VUs per engine × engines", not just total VUs.
| Scenario | Calculation | VUH | VUH fee (0.15) |
|---|---|---|---|
| 1,000 VUs × 30 min | 1,000×30÷60 | 500 | $75.00 |
| 500 VUs × 60 min | 500×60÷60 | 500 | $75.00 |
| 100 VUs × 10 min | 100×10÷60 | 16.67 | $2.50 |
| 500 VUs × 5 min × 2 engines | 500×5÷60×2 | 83.33 | $12.50 |
| 50 VUs × 10 min × 20 runs/month | 50×10÷60×20 | 166.67 | $25.00 |
| 200 VUs × 30 min × 4 runs/month | 200×30÷60×4 | 400 | $60.00 |
Sources: Azure App Testing pricing FAQ and Load Testing concepts doc (11 November 2026). VUH samples every 10 seconds and bills fractions; the multi-engine row follows the official billing example; excludes resource fee, tax and discounts.
1 March 2026 minimum: 10 VUs per engine
From 1 March 2026, the minimum VUH per test run is 10 VUs per engine × duration; if the run is shorter than 10 minutes, it uses 10 VUs per engine × 10 minutes. Official examples: 5 VUs, 1 engine, 3 hours is 15 VUH actual but 30 VUH minimum, billed 30 VUH; 5 VUs, 1 engine, 5 minutes is 0.83 VUH actual but 1.67 VUH minimum, billed 1.67 VUH; 500 VUs, 2 engines, 5 minutes is 83.33 VUH, above the 3.33 VUH minimum, billed 83.33 VUH. The minimum materially changes unit cost for short/low-concurrency tests.
| Scenario | Actual VUH | Minimum VUH | Billed VUH | Fee (0.15) |
|---|---|---|---|---|
| 5 VUs × 3 h × 1 engine | 15 | 30 | 30 | $4.50 |
| 5 VUs × 5 min × 1 engine | 0.83 | 1.67 | 1.67 | $0.25 |
| 10 VUs × 5 min × 1 engine | 0.83 | 1.67 | 1.67 | $0.25 |
| 500 VUs × 5 min × 2 engines | 83.33 | 3.33 | 83.33 | $12.50 |
| 1,000 VUs × 30 min × 1 engine | 500 | 5 | 500 | $75.00 |
Editorial calculation: minimum = 10 VUs per engine × duration (or 10 minutes if shorter); billed = max(actual, minimum); unit price $0.15/VUH; excludes resource fee, tax and discounts.
Volume tiers: 10,000 VUH is the break
VUH uses progressive tiers: the first 10,000 VUH at $0.15, the portion above 10,000 at $0.06. So 10,000 VUH = $1,500; 20,000 VUH = $1,500 + 10,000×$0.06 = $2,100; 50,000 VUH = $1,500 + 40,000×$0.06 = $3,900; 100,000 VUH = $1,500 + 90,000×$0.06 = $6,900. Above 10,000 the marginal price drops to 40% of the first tier, so large regression/peak-test batches get cheaper; but the minimum charge still applies per run, and scattered short tests do not benefit from "total volume" automatically.
| Monthly VUH | Calculation | VUH fee | + $10 resource |
|---|---|---|---|
| 1,000 | 1,000×0.15 | $150 | $160 |
| 5,000 | 5,000×0.15 | $750 | $760 |
| 10,000 | 10,000×0.15 | $1,500 | $1,510 |
| 20,000 | $1,500 + 10,000×0.06 | $2,100 | $2,110 |
| 50,000 | $1,500 + 40,000×0.06 | $3,900 | $3,910 |
| 100,000 | $1,500 + 90,000×0.06 | $6,900 | $6,910 |
Editorial calculation: first 10,000 at $0.15, excess at $0.06, progressive; +$10 is the Retail API JMeter Load Testing Resource meter, not shown on the pricing page, treated as per resource/month—verify on the bill; excludes tax and discounts.
CI/CD scenarios: 20 short runs vs 4 long runs
Cost is driven by "concurrency × duration × runs", not script count. 50 VUs×10 min×20 runs/month = 166.67 VUH = $25; 200 VUs×30 min×4 runs = 400 VUH = $60; 1,000 VUs×30 min×10 runs = 5,000 VUH = $750. Put long peak tests before releases and short smoke tests on every merge instead of running a big test on every merge; also watch the minimum: 5 VUs×5 min is billed at 1.67 VUH, so 20 such runs are 33.33 VUH ($5), not 1.67 VUH.
| CI scenario | Calculation | VUH/month | VUH fee |
|---|---|---|---|
| 50 VUs×10 min×20 runs | 50×10÷60×20 | 166.67 | $25.00 |
| 200 VUs×30 min×4 runs | 200×30÷60×4 | 400 | $60.00 |
| 1,000 VUs×30 min×10 runs | 1,000×30÷60×10 | 5,000 | $750.00 |
| 5 VUs×5 min×20 runs (minimum) | 1.67×20 | 33.33 | $5.00 |
| 10,000 VUs×30 min×1 run | 10,000×30÷60 | 5,000 | $750.00 |
Editorial calculation: VUH = concurrency × minutes ÷ 60 × runs; short runs use the 1.67 VUH minimum; excludes resource fee, tax and discounts; multi-engine runs multiply by engines per the official example.
Playwright Workspaces on the same page
The Azure App Testing pricing page also lists Playwright Workspaces: a 30-day trial with the first 100 test minutes, Linux cloud browsers at $0.01/minute, Windows at $0.02/minute, billed by the second. This is a separate meter from Load Testing VUH: Playwright bills browser test minutes, Load Testing bills virtual-user hours. Don't mix them in one budget; if a team does both end-to-end functional testing and load testing, estimate test minutes and VUH separately, then combine.
| Meter | Price | Billed for | Example |
|---|---|---|---|
| Load Testing VUH | $0.15 (first 10k); $0.06 (above) | Virtual users × hours | 1,000 VUs×30 min = 500 VUH |
| Playwright Linux | $0.01/min | Cloud browser test time | 50 tests×12 sec = 10 min = $0.10 |
| Playwright Windows | $0.02/min | Cloud browser test time | 10 min = $0.20 |
| Playwright trial | $0 | First 100 min/30 days | Playwright only, not Load Testing |
| Resource fee | $10 (Retail API) | Load Testing resource | Not shown on pricing page; check bill |
Sources: Azure App Testing pricing page and Retail API (11 November 2026). Playwright and Load Testing are different meters; the trial applies only to the first 100 Playwright minutes.
Selection: managed Load Testing vs self-hosted JMeter/Locust
Managed Load Testing fits teams that need high concurrency quickly, don't want to maintain load generators, want tests in CI/CD, and need Azure Monitor resource metrics/private endpoints/VNet; VUH billing behaves like pay-per-test. Self-hosted JMeter/Locust fits long-running, high-frequency, stable concurrency with existing idle compute/containers and the ability to own generator scaling, JMeter tuning, result storage and maintenance; cost is VMs/containers + storage + labour, with no VUH but idle cost. For short/low-concurrency tests, watch the minimum charge and resource fee; for large occasional tests, managed is usually less operational work.
| Scenario | First choice | Check first |
|---|---|---|
| Occasional high-concurrency test | Managed Load Testing | VUH, minimum, resource fee |
| Per-merge CI smoke test | Managed or small self-hosted | 1.67 VUH minimum per run |
| Frequent, stable long tests | Self-hosted JMeter/Locust | VM/container + labour |
| Azure resource metrics needed | Managed Load Testing | Azure Monitor integration |
| Private endpoint/VNet | Managed Load Testing | VNet injection support |
| Functional/E2E testing | Playwright Workspaces | Billed per test minute, not VUH |
| Tight budget, can operate | Self-hosted | Idle cost and tuning |
Editorial summary, not a vendor recommendation; capabilities/prices follow official pages; self-hosted cost is not quoted here.
Hidden costs and 90-day checklist
Seven hidden costs: the minimum charge lifting short tests to 1.67 VUH each, the $10 resource fee (Retail API, not shown on the page), multi-engine VUH multiplication, the first 10,000 VUH costing 2.5× the marginal rate, Playwright and Load Testing being separate meters, the target environment's egress/bandwidth/database cost, and logs/monitoring generated by the test. 90 days: weeks 1–2 inventory test types (smoke/regression/peak), concurrency, duration and runs; weeks 2–3 estimate VUH and the minimum charge; weeks 3–4 compare self-hosted generator VMs/labour; weeks 4–6 split short and long tests and consolidate inefficient ones; weeks 6–8 validate multi-engine/private endpoint/CI integration; weeks 8–10 monitor actual VUH and resource fee; weeks 10–12 optimize concurrency/duration/runs against the bill.
| Cost item | Trigger | Control |
|---|---|---|
| VUH $0.15/$0.06 | Concurrency × duration | Tier tests; cut needless long runs |
| Minimum charge | Short/low-concurrency runs | Consolidate runs or lengthen |
| Resource fee $10 | Each Load Testing resource | Consolidate resources; verify bill |
| Multiple engines | VUs per engine | Size by total concurrency/engine capacity |
| Playwright minutes | E2E browser tests | Budget separately from VUH |
| Target environment | Egress/database/logs | Isolate and cap the test environment |
| Labour | Scripting/tuning/analysis | Reuse CI and templates |
Editorial summary: costs outside the price list bill as other Azure services; the resource fee follows the Retail API meter—verify the actual bill.
FAQ
How is Azure Load Testing billed?
Per Virtual User Hour (VUH): $0.15/VUH for the first 10,000 and $0.06 above; VUH = virtual users × minutes ÷ 60, sampled every 10 seconds. From 1 March 2026, each run has a minimum of 10 VUs per engine; runs under 10 minutes use 10 minutes.
What does 1,000 VUs for 30 minutes cost?
1,000×30÷60 = 500 VUH; at $0.15 that is $75. Only the portion above 10,000 monthly VUH gets $0.06; the resource fee is separate and should be verified on the bill.
How does the minimum charge work?
At least 10 VUs per engine × duration; if shorter than 10 minutes, use 10 minutes. Example: 5 VUs×3 h is 15 VUH actual but 30 VUH minimum, billed $4.50; 5 VUs×5 min is 1.67 VUH minimum, billed $0.25.
Is 10,000 VUH an all-unit discount?
No, it is progressive: the first 10,000 at $0.15, the excess at $0.06. 10,000 VUH = $1,500; 20,000 VUH = $1,500 + 10,000×$0.06 = $2,100, not 20,000×$0.06.
How are multiple engines counted?
The official billing example multiplies by engines: 500 VUs, 2 engines, 5 minutes = 500×5÷60×2 = 83.33 VUH. Check "VUs per engine × engines", not just total VUs.
Is there a free allowance?
The 30-day/first-100-minute trial on the pricing page belongs to Playwright Workspaces, not Load Testing; Load Testing has no separate free VUH allowance. The Retail API also lists a $10 JMeter Load Testing Resource meter—verify on the bill.
How do Playwright and Load Testing differ?
Playwright bills cloud browser test minutes (Linux $0.01/min, Windows $0.02/min, first 100 minutes trial); Load Testing bills VUH (virtual users × duration). They are different meters; budget separately.
How do I reduce cost?
Five steps: (1) separate short smoke tests from long peak tests and avoid a big test on every merge; (2) consolidate very short/low-concurrency runs to reduce minimum charges; (3) concentrate large batches above 10,000 VUH to use the $0.06 marginal rate; (4) consolidate Load Testing resources and verify the $10 fee; (5) compare self-hosted JMeter/Locust for frequent, stable long tests.
Research method and limitations
Official facts (App Testing pricing FAQ, Retail API, Learn Load Testing overview/concepts): VUH formula and 10-second sampling; 1,000 VUs×30 min = 500 VUH; the 1 March 2026 minimum and examples; two VUH tiers; Playwright Linux/Windows per-minute prices and 100-minute trial; test-engine concepts. Editorial calculations: VUH = concurrency × minutes ÷ 60 (multi-engine per the official example), progressive tiers, billed = max(actual, minimum), resource fee shown separately; run counts/concurrency/duration are editorial assumptions.
Seven limitations: (1) USD list prices only, excluding tax/contract discounts/regional differences; (2) run counts, concurrency, duration and engine counts are editorial assumptions; (3) excludes target environment/bandwidth/database/logs, self-hosted generator cost and labour; (4) no real high-concurrency/multi-engine benchmark; (5) the $10 resource fee's billing period is not shown on the pricing page—verify with the Retail API and bill; (6) Playwright and Load Testing have different trial/free scopes; (7) prices/minimum rules change—recheck official pages and bills before purchase.
Sources and basis
- Microsoft Azure, Azure App Testing Pricing: azure.microsoft.com/en-us/pricing/details/load-testing. VUH tiers, VUH formula and 10-second sampling, 1 March 2026 minimum, Playwright per-minute prices/trial. Accessed 11 November 2026.
- Azure Retail Prices API (productName contains App Testing): prices.azure.com/api/retail/prices. VUH $0.15/$0.06 (tierMinimumUnits 10,000), Playwright Linux $0.01/Windows $0.02, JMeter Load Testing Resource $10. Accessed 11 November 2026.
- Microsoft Learn, What is Azure Load Testing?: overview-what-is-azure-load-testing. JMeter/Locust, test engines, Azure Monitor metrics, private endpoints/VNet. Accessed 11 November 2026.
- Microsoft Learn, Key concepts for Azure Load Testing: concept-load-testing-concepts. Load Testing resource, test engines, concurrency/virtual-user concepts. Accessed 11 November 2026.
Data cut-off 11 November 2026; prices/billing rules follow Microsoft official pages and bills; this is not procurement, architecture or legal advice.