AGENCYSCRIPT
CoursesEnterpriseBlog
๐Ÿ‘‘FoundersSign inJoin Waitlist
AGENCYSCRIPT

Governed Certification Framework

The operating system for AI-enabled agency building. Certify judgment under constraint. Standards over scale. Governance over shortcuts.

Stay informed

Governance updates, certification insights, and industry standards.

Products

  • Platform
  • Certification
  • Launch Program
  • Vault
  • The Book

Certification

  • Foundation (AS-F)
  • Operator (AS-O)
  • Architect (AS-A)
  • Principal (AS-P)

Resources

  • Blog
  • Verify Credential
  • Enterprise
  • Partners
  • Pricing

Company

  • About
  • Contact
  • Careers
  • Press
ยฉ 2026 Agency Script, Inc.ยท
Privacy PolicyTerms of ServiceCertification AgreementSecurity

Standards over scale. Judgment over volume. Governance over shortcuts.

On This Page

Why Traditional Testing Is Not Enough for MLThe ML Testing PyramidLayer 1: Unit Tests (Foundation)Layer 2: Data Validation TestsLayer 3: Model Validation TestsLayer 4: Integration TestsLayer 5: Production Monitoring Tests (Continuous)Implementing the Testing Pyramid in Your AgencyThe Minimum Viable Testing StackThe Standard Testing StackThe Enterprise Testing StackPricing Testing WorkYour Next Step
Home/Blog/The Testing Pyramid for AI/ML Systems: How Agencies Ensure Quality at Every Layer
Delivery

The Testing Pyramid for AI/ML Systems: How Agencies Ensure Quality at Every Layer

A

Agency Script Editorial

Editorial Team

ยทMarch 20, 2026ยท13 min read
AI testingML quality assurancetesting pyramidmodel validation

The Testing Pyramid for AI/ML Systems: How Agencies Ensure Quality at Every Layer

An AI agency in London delivered a credit scoring model to a neobank. The model passed all accuracy checks โ€” 89% AUC on the holdout set. The agency shipped it, invoiced, and moved on. Two weeks later, the neobank called in a panic. The model was approving loans for applicants who listed annual income as negative numbers. It was approving loans for applicants whose age was 3. It was approving loans where the debt-to-income ratio was mathematically impossible.

The model had never been tested on invalid inputs. It had only been tested on clean, well-formatted validation data that matched the training distribution. In the real world, input data was messy, sometimes adversarial, and frequently nonsensical. The model had no guardrails.

The agency spent two weeks building input validation, output range checks, and adversarial input tests โ€” work they should have done before delivery. The client lost confidence and demanded a 30% discount on the next phase. The agency's margin on the project went from healthy to barely break-even.

ML systems need a comprehensive testing strategy, not just accuracy metrics on clean data. The testing pyramid for AI/ML systems is fundamentally different from the traditional software testing pyramid, and agencies that master it deliver more reliable systems and retain more clients.

Why Traditional Testing Is Not Enough for ML

In traditional software, a function takes an input and produces a deterministic output. Testing means verifying that f(x) = y for known x and y. If the test passes today, it passes tomorrow. The behavior is deterministic and inspectable.

ML systems are fundamentally different:

Non-deterministic behavior. The same model trained on slightly different data can produce different predictions. The same prediction can be correct today and wrong tomorrow because the underlying distribution changed.

Learned behavior cannot be fully specified. You cannot enumerate all the rules a neural network has learned. Testing must cover the model's behavior empirically, not by inspecting its logic.

Data is a first-class dependency. In software, if you do not change the code, the behavior does not change. In ML, the behavior changes when the data changes โ€” even if the code is identical.

Failures are silent. A crashed software service produces an error. A degraded ML model produces subtly wrong predictions that look perfectly valid. You need proactive monitoring to catch these failures.

The blast radius of failures is different. A software bug typically produces an obvious error for affected users. A biased ML model silently discriminates against an entire population segment. The consequences can be legal and reputational, not just operational.

The ML Testing Pyramid

The ML testing pyramid has five layers, from fastest and cheapest (bottom) to slowest and most expensive (top). Like the traditional pyramid, you should have many tests at the bottom and fewer at the top.

Layer 1: Unit Tests (Foundation)

What they test: Individual functions and components in isolation โ€” data transformations, feature engineering functions, preprocessing logic, post-processing logic.

Examples:

  • Does the feature engineering function correctly calculate "days since last purchase" given a specific purchase timestamp and current date?
  • Does the categorical encoding function handle unseen categories gracefully?
  • Does the normalization function handle edge cases (zero variance, all nulls, extreme values)?
  • Does the post-processing function correctly apply business rules (e.g., "minimum confidence threshold of 0.6")?

How to implement:

Use standard testing frameworks (pytest for Python). Write tests for every function in your pipeline that transforms data or applies logic. Mock external dependencies (databases, APIs).

Coverage target: Every data transformation function, every feature engineering function, every pre/post-processing function. This is the most automatable and cheapest testing layer.

Agency delivery tip: Build a standard test template for common transformations. When you write a new feature engineering function, copy the template and fill in the specifics. This reduces the activation energy for writing tests.

Layer 2: Data Validation Tests

What they test: The quality, schema, and distribution of data at every stage of the pipeline โ€” input data, intermediate data, training data, and prediction-time data.

Examples:

  • Schema validation: Does the input data have all expected columns with correct types? Are there unexpected new columns?
  • Range validation: Are feature values within expected ranges? Is age between 0 and 120? Is transaction amount positive?
  • Null validation: Are null rates within acceptable thresholds? If "email" is 95% null, something is wrong.
  • Distribution validation: Has the feature distribution shifted significantly from the training distribution? If the mean transaction amount jumped 300%, the upstream data source probably changed.
  • Referential integrity: Do all foreign keys resolve? Are there orphaned records?
  • Freshness validation: Is the data as recent as expected? If the latest record is from three days ago, the ingestion pipeline might be broken.
  • Volume validation: Is the data volume within expected bounds? A sudden 10x increase or 90% decrease signals a problem.

How to implement:

Use frameworks like Great Expectations, Pandera, or Deequ. Define expectations as code, run them as part of the pipeline, and fail the pipeline when expectations are violated.

A Great Expectations example set for a training dataset:

  • Expect column "age" values to be between 18 and 100
  • Expect column "income" values to be positive
  • Expect column "credit_score" values to be between 300 and 850
  • Expect "email" column null rate to be below 5%
  • Expect total row count to be between 500,000 and 2,000,000
  • Expect "loan_status" column to have exactly values ["approved", "denied", "pending"]

Coverage target: Every data input point, every pipeline stage boundary, and the final training/inference data.

Layer 3: Model Validation Tests

What they test: The trained model's performance, behavior, and characteristics โ€” beyond simple accuracy metrics.

Performance tests:

  • Overall accuracy/AUC/F1 on the holdout test set (the obvious one)
  • Performance on specific data segments: does the model perform equally well across customer segments, geographic regions, time periods?
  • Performance on edge cases: what happens with extreme feature values, rare combinations, or unusual patterns?
  • Comparison against the previous production model: is the new model at least as good?
  • Comparison against simple baselines: does the model beat a random predictor, a majority-class predictor, or a simple rule-based system?

Behavioral tests:

  • Invariance tests: Small changes to non-important features should not change the prediction. Changing a customer's name should not affect their credit score.
  • Directional tests: Known relationships should hold. Higher income should generally lead to lower credit risk, all else being equal.
  • Monotonicity tests: For features with known monotonic relationships, verify that the model respects them. More late payments should always increase default probability, never decrease it.
  • Minimum functionality tests: Define a set of "must-get-right" examples where the correct prediction is obvious, and verify the model gets all of them right. If the model cannot correctly identify a transaction of $0.01 from a new account in a high-fraud country as suspicious, something is fundamentally wrong.

Fairness tests:

  • Demographic parity: Are positive prediction rates similar across protected groups?
  • Equal opportunity: Are true positive rates similar across protected groups?
  • Calibration: When the model says 70% probability for different groups, is the actual positive rate close to 70% for all groups?
  • Feature audit: Does the model rely on features that are proxies for protected attributes?

How to implement:

Build a model validation notebook or script that runs automatically after every training run. If any test fails, the model is not promoted to production. Period.

Coverage target: Performance metrics on the full test set and at least 5-10 important segments. At least 10 behavioral tests. Fairness metrics for all protected attributes relevant to the use case.

Layer 4: Integration Tests

What they test: The full pipeline working together โ€” from data ingestion through prediction serving and monitoring.

Examples:

  • End-to-end pipeline test: Feed known test data through the complete pipeline (ingestion, feature engineering, prediction, post-processing) and verify the final output matches expectations.
  • API contract tests: Send prediction requests to the serving API and verify response format, latency, and correctness.
  • Feature store consistency tests: Verify that features served online (for real-time prediction) match features computed offline (for training). Training-serving skew is one of the most common and hardest-to-detect bugs in production ML.
  • Monitoring integration tests: Verify that prediction logs are correctly captured, metrics are correctly computed, and alerts fire when thresholds are breached.
  • Fallback behavior tests: Simulate component failures (feature store timeout, model server crash) and verify that the system degrades gracefully โ€” returning default predictions or error codes, not crashing.

How to implement:

Create a test environment that mirrors production. Run integration tests as part of the deployment pipeline, before the model reaches production.

Coverage target: At least one end-to-end test per critical path. API contract tests for all prediction endpoints. Feature consistency tests for all features used in real-time serving.

Layer 5: Production Monitoring Tests (Continuous)

What they test: The system's ongoing health in the live production environment.

This is not traditional testing โ€” it is continuous validation. But it belongs in the testing pyramid because it catches issues that no pre-deployment test can catch: real-world data drift, user behavior changes, and emergent failure modes.

Metrics to monitor continuously:

  • Prediction distribution: Is the distribution of model outputs stable? A sudden shift in the ratio of positive to negative predictions signals a problem.
  • Feature distribution: Are input feature distributions stable? Drift in input features precedes degradation in output quality.
  • Latency: Is the prediction service meeting latency SLAs consistently?
  • Error rates: Are there increasing API errors, timeout rates, or malformed responses?
  • Business metrics: Are the downstream business metrics (conversion rate, churn rate, fraud losses) tracking as expected?

Alerting thresholds:

  • Prediction distribution shift: more than 2 standard deviations from the 30-day rolling average
  • Feature distribution shift: KL divergence exceeding a threshold for any feature
  • Latency: p99 exceeding 2x the target
  • Error rate: exceeding 0.1%
  • Business metric: deviating more than 10% from forecast

Implementing the Testing Pyramid in Your Agency

The Minimum Viable Testing Stack

For every project, regardless of budget:

  1. Unit tests for all data transformation functions (pytest)
  2. Schema and range validation on all pipeline inputs (Great Expectations or Pandera)
  3. Holdout performance validation with segment breakdowns (custom script)
  4. At least 5 behavioral tests (invariance and directional)
  5. API response validation (pytest with requests)

This takes 2-3 days to implement and catches 80% of issues.

The Standard Testing Stack

For production client engagements:

Everything in the minimum viable stack, plus:

  1. Distribution validation on training data (Great Expectations)
  2. Fairness metrics for relevant protected attributes (Fairlearn or AIF360)
  3. Feature consistency checks between online and offline (custom)
  4. Integration tests for the full pipeline (custom)
  5. Production monitoring with alerting (custom or Evidently AI)

This takes 5-7 days to implement.

The Enterprise Testing Stack

For regulated industries or high-stakes applications:

Everything in the standard stack, plus:

  1. Adversarial input testing (custom or TextAttack for NLP)
  2. Model robustness testing (performance under synthetic noise and perturbations)
  3. A/B testing infrastructure (for safe production rollout)
  4. Comprehensive audit logging (for regulatory compliance)
  5. Automated retraining triggers based on monitoring thresholds

This takes 10-15 days to implement.

Pricing Testing Work

Testing should not be a separate line item that the client can cut from the budget. It should be built into your standard delivery process.

Include in every project:

  • Minimum viable testing: built into the project cost (add 10-15% to your model development estimate)
  • Standard testing: add 20-25% to the model development cost
  • Enterprise testing: add 30-40% to the model development cost

Frame it to the client: "Our delivery includes a comprehensive validation suite that ensures the model performs reliably in production. This prevents the costly failures and emergency fixes that plague ML deployments without proper testing."

Do not offer a "no testing" option. Just as you would not ship software without tests, do not ship models without validation. It protects the client and it protects your reputation.

Your Next Step

Take your current model validation process and compare it against the five layers of the ML testing pyramid. Where are the gaps? Most agencies have decent holdout performance validation (Layer 3) but are missing data validation (Layer 2) and behavioral tests (Layer 3). Start by adding schema validation to your pipeline inputs using Great Expectations and five behavioral tests (two invariance, two directional, one minimum functionality). These additions take one day and dramatically reduce the risk of production failures.

Search Articles

Categories

OperationsSalesDeliveryGovernance

Popular Tags

prompt engineeringai fundamentalsai toolsthe difference between AIMLagency operationsagency growthenterprise sales

Share Article

A

Agency Script Editorial

Editorial Team

The Agency Script editorial team delivers operational insights on AI delivery, certification, and governance for modern agency operators.

Related Articles

Delivery

Real-Time Stream Processing for AI Applications: The Complete Delivery Guide

When your client's AI model needs predictions in milliseconds instead of minutes, batch processing is not an option. Here is how to deliver production-grade stream processing for AI workloads.

A
Agency Script Editorial
March 21, 2026ยท14 min read
Delivery

Delivering Survival Analysis for Customer Retention: The AI Agency Playbook

A SaaS company knew their churn rate was 18 percent annually but could not predict when specific customers would leave. Survival analysis gave them a 90-day early warning system that saved $2.1 million in ARR.

A
Agency Script Editorial
March 21, 2026ยท13 min read
Delivery

Building Synthetic Data Generation Pipelines โ€” Creating Training Data When Real Data Is Scarce, Sensitive, or Biased

A healthcare AI company generated 500,000 synthetic patient records that preserved statistical patterns while eliminating privacy risk, cutting their model development timeline by 60%. Here is how to build synthetic data pipelines.

A
Agency Script Editorial
March 21, 2026ยท12 min read

Ready to certify your AI capability?

Join the professionals building governed, repeatable AI delivery systems.

Explore Certification