# Questions About Functional Acceptance Testing at the Boundary

Boundary testing questions concern evidence, isolation, failures, and release confidence. Compare the practice with mocks, TDD, generated checks, formal models, and production observation.

Published: 2026-06-15
Updated: 2026-09-27
Source: https://matlus.com/writing/questions-about-functional-acceptance-testing-at-the-boundary/
Tags: acceptance-testing, verification, mocking, test-driven-development, refactoring, test-mediator, transport-spy, builder-pattern, factory-pattern, domain-facade, design-patterns, architectural-patterns

---
These questions came up while explaining this practice. This
article turns them into reader questions with direct answers and links to worked
examples. The purpose throughout is confidence to go to production after business
requirements, acceptance criteria, functional requirements, and non-functional
requirements are established and the scenarios and expectations verified as correct.

> **About the examples:** Meridian Ordering is a private training reference project. The inline listings illustrate the techniques; the full C# and Python repositories are not currently public.

## Purpose and the worked practice

<a id="question-01"></a>

### Why spend as much effort on tests as on the feature?

The arrangements and assertions establish a complete feature outcome through production code and real infrastructure. The business receives a maintained regression suite; the team receives release confidence, runnable documentation, and the freedom to refactor the internals with unchanged acceptance tests. That refactoring benefit depends on preserving the requirements and public contract. The investment protects earlier behavior while later sprints change the system.

**Detailed Explanation:** [Functional Acceptance Testing at the Boundary](/writing/functional-acceptance-testing-at-the-boundary/).

<a id="question-02"></a>

### What does a green suite let the team conclude?

With requirements established and scenarios and expectations verified as correct, a green required suite demonstrates those obligations for the build and arrangements executed. Without those prerequisites, green can mean that incomplete tests passed. Configuration and deployed readiness retain their own responsibilities.

**Detailed Explanation:** [Functional Acceptance Testing at the Boundary](/writing/functional-acceptance-testing-at-the-boundary/).

<a id="question-03"></a>

### Why is this the primary maintained behavioral verification discipline?

The release question is whether the assembled service produces its required outcomes before exposure. Correct components, declared contracts, and post-exposure observations do not answer that whole question. The maintained boundary suite is the authority for that behavioral decision under this discipline.

**Detailed Explanation:** [Functional Acceptance Testing at the Boundary](/writing/functional-acceptance-testing-at-the-boundary/).

<a id="question-04"></a>

### How do we establish the scenarios a feature needs?

Review business requirements, acceptance criteria, functional requirements, and non-functional requirements. Break each outcome into observable obligations, include refusal and failure states, and connect each obligation to its arrangement, expectation, actual observation, and comparison. Review counts and required absence alongside content.

**Detailed Explanation:** [Knowing Which Scenarios a Feature Requires](/writing/knowing-which-scenarios-a-feature-requires/).

<a id="question-05"></a>

### Who owns business and implementation-derived requirements?

The product team owns business intent and the scenarios expressing it. Developers identify technical obligations introduced by transactions, retries, concurrency, translation, and resource handling. Both need reviewed expectations and maintained verification; technical behavior does not become optional because a business example omitted it.

**Detailed Explanation:** [Knowing Which Scenarios a Feature Requires](/writing/knowing-which-scenarios-a-feature-requires/).

<a id="question-06"></a>

### What happens when a scenario is missing or an expectation is wrong?

Establish the missing rule or correct the expectation against the approved requirement. Add or repair its permanent scenario and comparisons. A test cannot expose a condition that nobody arranged or a field nobody compares. A passing run cannot resolve a missing business decision.

**Detailed Explanation:** [Knowing Which Scenarios a Feature Requires](/writing/knowing-which-scenarios-a-feature-requires/).

<a id="question-07"></a>

### Does coverage establish scenario completeness?

Executed lines do not identify unknown business obligations or establish that every field was compared. Coverage can direct investigation toward unexercised paths. Completeness review follows the requirements into scenarios and assertions, including forbidden effects and technical conditions.

**Detailed Explanation:** [Knowing Which Scenarios a Feature Requires](/writing/knowing-which-scenarios-a-feature-requires/).

<a id="question-08"></a>

### How do stakeholders review and approve scenarios?

Present the scenarios in language stakeholders can review, with a maintained connection to their executable source. Record the reviewed version, owner, and conditions requiring renewed approval. A derived presentation helps access; it must not drift into a competing account of behavior.

**Detailed Explanation:** [Knowing Which Scenarios a Feature Requires](/writing/knowing-which-scenarios-a-feature-requires/).

<a id="question-09"></a>

### What do we test in one accepted order?

Compare the caller result, independently read order and lines, received fulfillment payload, additional-message observation, and captured confirmation. Verify required identity, content, amounts, time relationships, counts, and absence. The complete walkthrough shows each observation and its comparisons.

**Detailed Explanation:** [One Order, Every Obligation](/writing/one-order-every-obligation/).

<a id="question-10"></a>

### How do we test a successful operation with no return value?

Await completion, then independently inspect its required effects. Registration returns no data on success, but must create exactly one customer with every supplied field, normalized email, defaults, status, identity, and time. Successful completion alone is insufficient evidence for those stored values.

**Detailed Explanation:** [One Order, Every Obligation](/writing/one-order-every-obligation/).

<a id="question-11"></a>

### Why use random data in a named scenario?

Fresh identities isolate records across runs. Varied valid values test propagation of the supplied input, and invalid generated values test precise refusal reporting. The defining condition remains deliberate. Random selection gives variation within a scenario, without claiming exhaustive input coverage.

**Detailed Explanation:** [Arranging Scenarios That Stay True](/writing/arranging-scenarios-that-stay-true/).

<a id="question-12"></a>

### How do we keep randomness from changing the rule being tested?

Constrain generated data before selection. Meridian caps eligible catalog prices to preserve Placed status and samples different products without replacement. Choose rule-defining quantities and statuses explicitly. A scenario guard verifies an exact premise when seed data can change it.

**Detailed Explanation:** [Arranging Scenarios That Stay True](/writing/arranging-scenarios-that-stay-true/).

<a id="question-13"></a>

### How do seed data and threshold guards work?

Read the current reference data and calculate expectations from the approved rule. For exactly $10,000.00, verify the selected product and quantity produce that amount before Act. A seed change then reports an invalid arrangement rather than silently exercising a different scenario.

**Detailed Explanation:** [Arranging Scenarios That Stay True](/writing/arranging-scenarios-that-stay-true/).

<a id="question-14"></a>

### When do factories and immutable builders help?

Use narrow factories for simple values and builders for wide models whose irrelevant defaults obscure the scenario. Default delegates draw fresh values at Build. Explicit overrides remain private to an immutable builder. Owned identifiers deliberately lack defaults, making forgotten ownership fail visibly.

**Detailed Explanation:** [Arranging Scenarios That Stay True](/writing/arranging-scenarios-that-stay-true/).

<a id="question-15"></a>

### How do we reproduce a random-data failure?

Meridian exposes no replay seed. Preserve the meaningful actual inputs, selected catalog records, expectations, and observations in failure evidence where possible. Existing reports are not a complete replay log. Preserve a discovered input-sensitive condition as a maintained regression scenario.

**Detailed Explanation:** [Arranging Scenarios That Stay True](/writing/arranging-scenarios-that-stay-true/).

<a id="question-16"></a>

### How deep should assertions go?

Compare every field, effect, count, and absence required by the scenario. A database row's existence does not establish its quantity or price. An email capture does not establish the correct recipient or body. Review assertion depth against the requirement, not the helper's name.

**Detailed Explanation:** [Assertions That Verify the Whole Outcome](/writing/assertions-that-verify-the-whole-outcome/).

<a id="question-17"></a>

### Why gather data separately from pure asserters?

Visible gathering establishes where actuals originate and lets the scenario own timeouts and correlation. Pure asserters compare supplied data without hidden I/O. That makes them reusable and lets a reviewer distinguish observation failures from value mismatches.

**Detailed Explanation:** [Assertions That Verify the Whole Outcome](/writing/assertions-that-verify-the-whole-outcome/).

<a id="question-18"></a>

### Why accumulate all discrepancies?

One defect can affect several independent outputs. Accumulated reports show the available mismatches together, reducing repeated investigation. Missing inputs need guards before dependent comparisons. A gathering failure can still prevent the aggregate from running; accumulation cannot create unavailable evidence.

**Detailed Explanation:** [Assertions That Verify the Whole Outcome](/writing/assertions-that-verify-the-whole-outcome/).

<a id="question-19"></a>

### How do we compare collections, money, and time?

Use scalar record equality for line fields and explicit collection comparisons preserving count and required ordering or multiplicity. Compare decimal amounts and required wire formatting. Verify recording time within its window, propagated time against stored time, and completion evidence for presence.

**Detailed Explanation:** [Assertions That Verify the Whole Outcome](/writing/assertions-that-verify-the-whole-outcome/).

<a id="question-20"></a>

### Can production code build expected values?

An independently verified production composer can build expected representations. Its own tests must establish its required output, or an incorrect composer can agree with itself. Calculate approved business arithmetic independently and distinguish a propagation expectation from verification of a value's origin.

**Detailed Explanation:** [Assertions That Verify the Whole Outcome](/writing/assertions-that-verify-the-whole-outcome/).

<a id="question-21"></a>

### Who verifies the asserters?

Comparison infrastructure gets equal, unequal, and missing-data probes. Meridian's report tests fabricate wrong observations and check that all obligation reports survive. These tests verify the mechanism relied on by acceptance scenarios; they do not pretend to execute production ordering.

**Detailed Explanation:** [Assertions That Verify the Whole Outcome](/writing/assertions-that-verify-the-whole-outcome/).

<a id="question-22"></a>

### What do the mediator and spy each do?

The Test Mediator carries arranged instructions and exposes observations. The spy follows those instructions at a selected boundary and records what arrived. The pattern can use a separate carrier with spies or combine one service's Test Mediator and private spy, as Meridian does.

**Detailed Explanation:** [The Test Mediator and the Transport Spy](/writing/the-test-mediator-and-the-transport-spy/).

<a id="question-23"></a>

### What production behavior runs during interception?

The facade, managers, composers, real gateway, request construction, response classification, retries, and translation remain in the operation. The selected handler controls the outbound transport. Captured requests establish submitted content; real-provider acceptance and inbox arrival require their own observations.

**Detailed Explanation:** [The Test Mediator and the Transport Spy](/writing/the-test-mediator-and-the-transport-spy/).

<a id="question-24"></a>

### How do scripts establish recovery and retry behavior?

A response sequence drives refusal, recovery, or exhaustion while production performs its retry handling. Captures record endpoint arrivals, content, and timing. Unreachability throws before capture, so captured count is not a count of every gateway attempt. Verify resulting state and diagnostics too.

**Detailed Explanation:** [The Test Mediator and the Transport Spy](/writing/the-test-mediator-and-the-transport-spy/).

<a id="question-25"></a>

### How do we verify bounded response reads and safe diagnostics?

Use a lazy body that records bytes actually consumed, then compare those counts per response. Also compare bounded diagnostic excerpts, whole-character handling, and absence of credential fragments. A short final string alone would not prove the gateway avoided reading the whole response.

**Detailed Explanation:** [The Test Mediator and the Transport Spy](/writing/the-test-mediator-and-the-transport-spy/).

<a id="question-26"></a>

### What must be absent after refusal or rollback?

Refusal must leave no accepted order or outbound work. Meridian's no-trace helper checks order count, broker observation, and email count. Complete rollback separately reads all affected table counts. Broker absence is bounded by its observation window; the helper name does not strengthen its actual checks.

**Detailed Explanation:** [Refusals, Failures, and Work Still Owed](/writing/refusals-failures-and-work-still-owed/).

<a id="question-27"></a>

### How do we force a real failure after a write starts?

Hydrate a private real database, install the selected delay or failure trigger, and route the facade there. Allow the transaction to begin before timeout or fault. Inspect the preserved cause, all affected records, and forbidden outbound effects, then remove the owned fault database.

**Detailed Explanation:** [Refusals, Failures, and Work Still Owed](/writing/refusals-failures-and-work-still-owed/).

<a id="question-28"></a>

### When is catching an exception required business behavior?

When the business requires an accepted order to stand despite a downstream action failure. The catch implements that policy while preserving pending work and diagnostic evidence. Test its complete outcome. Arbitrary swallowing that hides defects is a different behavior and cannot satisfy the required failure contract.

**Detailed Explanation:** [Refusals, Failures, and Work Still Owed](/writing/refusals-failures-and-work-still-owed/).

<a id="question-29"></a>

### What if an external action succeeds but recording completion fails?

Verify both facts independently: the external action was accepted, and durable completion recording failed. Meridian leaves Pending state without completion evidence, returns the accepted order, allows independent actions, and logs warnings with the original SQL cause. Recovery must account for possible prior delivery.

**Detailed Explanation:** [Refusals, Failures, and Work Still Owed](/writing/refusals-failures-and-work-still-owed/).

<a id="question-30"></a>

### How do we prove repeated requests do not repeat work?

Place the original request, consume its notification, resubmit equivalent content, and compare preserved output and stored facts. Check one order and no additional outgoing work. A conflict must also preserve the original. Request idempotency and a separate recovery operation have different obligations.

**Detailed Explanation:** [Idempotency and Concurrent Requests](/writing/idempotency-and-concurrent-requests/).

<a id="question-31"></a>

### How do concurrent scenarios work?

Start both asynchronous operations before collecting either outcome. Compare allowed outcome counts without assuming which caller wins, then inspect the store and effects. Meridian permits overlap but does not force every possible interleaving or pause both requests at a specific SQL statement.

**Detailed Explanation:** [Idempotency and Concurrent Requests](/writing/idempotency-and-concurrent-requests/).

<a id="question-32"></a>

### What do these tests establish about races and exactly-once delivery?

They establish the observed concurrent outcomes and bounded effect counts for the scenario. They do not prove every scheduling possibility or exactly-once delivery through crashes and later recovery. Load, failure recovery, and ambiguous completion need their own specified arrangements and evidence.

**Detailed Explanation:** [Idempotency and Concurrent Requests](/writing/idempotency-and-concurrent-requests/).

<a id="question-33"></a>

### Where do HTTP parsing, routing, and exception translation get tested?

Controller Hook tests own raw-body conversion and parsing refusal; translator and middleware tests own classification and safe translation. Hosted tests verify routes, wire shape, and middleware registration with the real domain beneath. Facade scenarios retain ownership of full business effects.

**Detailed Explanation:** [Testing the Service Interface](/writing/testing-the-service-interface/).

<a id="question-34"></a>

### Why keep interface tests within their owning category?

Each category checks the behavior its boundary owns. Repeating every domain scenario over HTTP would obscure ownership and duplicate assertions. The hosted smoke connects the categories; it does not replace detailed domain outcomes or exhaustive translator comparisons.

**Detailed Explanation:** [Testing the Service Interface](/writing/testing-the-service-interface/).

<a id="question-35"></a>

### How should a growing suite be named and organized?

Name the operation, condition, and expected outcome. Group by feature and path family. Use theory rows for the same rule and retain requirement references. Names help navigation; the body still must establish the condition and compare every required outcome.

**Detailed Explanation:** [A Suite the Team Can Keep Trusting](/writing/a-suite-the-team-can-keep-trusting/).

<a id="question-36"></a>

### How do we keep arrangement and cleanup explicit?

Reserve identities before record creation, retain them for scoped teardown, own subscribers and captures per scenario, and distinguish per-test records from the runner's database. Handle failed arrangement and cancellation deliberately. Process-local ownership does not automatically isolate independent processes.

**Detailed Explanation:** [A Suite the Team Can Keep Trusting](/writing/a-suite-the-team-can-keep-trusting/).

<a id="question-37"></a>

### How do failures become useful in CI without a debugger?

Report obligation names and expected and actual values. Preserve precise domain classification, relevant context, and original causes while bounding and sanitizing diagnostic data. The named scenario and explicit Act give a teammate a reproducible starting point; a report cannot always identify the faulty line automatically.

**Detailed Explanation:** [A Suite the Team Can Keep Trusting](/writing/a-suite-the-team-can-keep-trusting/).

<a id="question-38"></a>

### Why execute the actual database and broker?

Their actual transactions, constraints, queries, publication, and acknowledgments participate in the required behavior. A substitute returning the expected object cannot establish those effects in the selected engine. Test observations must independently read what was stored or received.

**Detailed Explanation:** [Testing Against Real Infrastructure](/writing/testing-against-real-infrastructure/).

<a id="question-39"></a>

### What makes a downstream service trusted for testing?

Trust means predictable availability and contract change, including useful advance notice, so the dependency is reliable enough for testing. Stable sandboxes can be suitable. An unreliable service needs a practical arrangement decision without changing the purpose of assembled behavioral verification.

**Detailed Explanation:** [Testing Against Real Infrastructure](/writing/testing-against-real-infrastructure/).

<a id="question-40"></a>

### What if four developers share a broker?

Give each observation its own queue, disjoint subscription, or explicit ownership mechanism, then correlate messages by run identity. A unique order reference does not prevent another consumer removing the message first. Process-local subscription leasing needs additional isolation across unrelated processes.

**Detailed Explanation:** [Testing Against Real Infrastructure](/writing/testing-against-real-infrastructure/).

<a id="question-41"></a>

### How do local and CI resource choices work?

Select the intended provider through configuration and provision its topology. Meridian's inspected CI snapshot uses SQL Server and RabbitMQ. Another provider needs its own execution receipt. The final gate should use real required infrastructure subject to downstream stability and isolation constraints.

**Detailed Explanation:** [Testing Against Real Infrastructure](/writing/testing-against-real-infrastructure/).

<a id="question-42"></a>

### What about unreliable, costly, destructive, or changing dependencies?

Choose stable environments, controlled recipients and operations, owned data, and bounded observations. Account for cost and irreversible effects. A selected transport seam can arrange precise failure handling while retaining production code, with real-delivery or provider observations added where their obligations require them.

**Detailed Explanation:** [Testing Against Real Infrastructure](/writing/testing-against-real-infrastructure/).

<a id="question-43"></a>

### What can finite observation windows establish?

They establish what arrived or did not arrive within the specified interval for the correlated operation. They do not establish indefinite absence. Use separate scenarios for recovery or later replay rather than silently extending a short quiet-window claim.

**Detailed Explanation:** [Testing Against Real Infrastructure](/writing/testing-against-real-infrastructure/).

<a id="question-44"></a>

### How does a new teammate learn requirements and implementation together?

Find a feature requirement and named scenario, inspect Arrange, put a breakpoint on Act, and follow production through validation, persistence, and outbound work. Return to gathering and assertions. Repeat with refusal and failure to learn changed obligations as well as the happy path.

**Detailed Explanation:** [Learning a System Through Its Tests](/writing/learning-a-system-through-its-tests/).

<a id="question-45"></a>

### Why is the executable suite maintained documentation?

Its scenarios invoke the current production path and verify required outcomes when run. Debugging reveals implementation detail tied to those requirements. Accuracy still depends on maintained references and deep assertions; executable code alone does not make misleading documentation correct.

**Detailed Explanation:** [Learning a System Through Its Tests](/writing/learning-a-system-through-its-tests/).

<a id="question-46"></a>

### What is the business purchasing through additional testing time?

Continuing protection of previous functionality as new sprints change the system. The extra arrangements and assertions become a maintained regression suite, with onboarding and diagnostic benefits too. This is an interpretation from my experience, not an invented universal savings figure.

**Detailed Explanation:** [The Regression Suite the Business Is Paying For](/writing/the-regression-suite-the-business-is-paying-for/).

<a id="question-47"></a>

### When do we run a feature subset and the full suite?

Use a focused subset during implementation for feedback. Run the required full suite before claiming release readiness and at the final CI gate. A subset cannot expose an unrelated earlier behavior the change affected. Preserve real-infrastructure and stable-service arrangements in the required run.

**Detailed Explanation:** [The Regression Suite the Business Is Paying For](/writing/the-regression-suite-the-business-is-paying-for/).

<a id="question-48"></a>

### How do discovered defects stay fixed?

Turn discovered obligations into permanent scenarios, theory rows, or previously missing comparisons. Correct expectations against approved intent. Preserve the condition that caused the defect while keeping unrelated identity data isolated. Future runs then check that lesson alongside the existing behavior.

**Detailed Explanation:** [The Regression Suite the Business Is Paying For](/writing/the-regression-suite-the-business-is-paying-for/).

<a id="question-49"></a>

### How does a behavior-based suite survive internal refactoring?

With unchanged requirements and a stable public contract, the acceptance tests can remain exactly as written while you refactor one component or the entire implementation behind the Domain Facade. They know its public input and output models and the required outcomes. Test Mediators and spies keep implementation details in test support. That support may need adapting while preserving the same instructions and observations; the scenarios and assertions stay unchanged.

**Detailed Explanation:** [Refactoring and Adopting Boundary Testing](/writing/refactoring-and-adopting-boundary-testing/).

<a id="question-50"></a>

### How does a legacy team begin?

Bring one feature under reviewed requirements and complete boundary scenarios, make failure contracts meaningful, isolate data, retain real infrastructure, and add necessary transport seams. Protect the required suite in CI. Track which features remain outside the discipline while adoption proceeds.

**Detailed Explanation:** [Refactoring and Adopting Boundary Testing](/writing/refactoring-and-adopting-boundary-testing/).

<a id="question-51"></a>

### When are smaller-boundary or class tests justified?

For explicitly owned duties: independently verified oracles, comparison infrastructure, interface translation, or a dense inherited rule cluster with a stable production abstraction. The system-level scenarios still verify assembled participation. Temporary construction checks are not the maintained release authority.

**Detailed Explanation:** [Refactoring and Adopting Boundary Testing](/writing/refactoring-and-adopting-boundary-testing/).

<a id="question-52"></a>

### How do architecture and review support the suite?

Architecture supplies meaningful boundaries and understandable dependency flow; coding and failure discipline supply reliable contracts; review verifies requirements, scenarios, and comparisons. Tests execute the resulting behavior. None of those responsibilities can be delegated to a green result that never reviewed its own scope.

**Detailed Explanation:** [Refactoring and Adopting Boundary Testing](/writing/refactoring-and-adopting-boundary-testing/).

<a id="question-53"></a>

### What happens after the suite turns green?

Advance the verified build through its release process while preserving configuration and execution evidence. Check deployed readiness, required security, capacity, resilience, and user experience at their owning stages. Those responsibilities do not invalidate the behavioral confidence the correctly covered suite supplies.

**Detailed Explanation:** [From a Green Suite to a Release](/writing/from-a-green-suite-to-a-release/).

<a id="question-54"></a>

### What do onboard diagnostics add?

Encoded knowledge of required dependency capabilities after deployment, available to infrastructure, QA, and operations. A missing-artifact incident from my work illustrates that environment readiness can fail after pre-release verification. Meridian's listings do not claim that separate diagnostics implementation.

**Detailed Explanation:** [From a Green Suite to a Release](/writing/from-a-green-suite-to-a-release/).

<a id="question-55"></a>

### Why do telemetry, canaries, and rollback complement the suite?

They reveal production-only conditions and aid recovery after exposure. They cannot provide the missing before-exposure behavioral evidence. Rolling back application code cannot unsend an email or fulfillment instruction. Feed discovered behavioral lessons into the suite and environment lessons into operational checks.

**Detailed Explanation:** [From a Green Suite to a Release](/writing/from-a-green-suite-to-a-release/).

<a id="question-56"></a>

### How do other testing philosophies relate to this one?

Evaluate each contribution against the release question. Development methods and discovery tools can improve scenarios or code, while component checks establish narrower obligations. The assembled required outcomes still need verification before exposure. That is the primary authority adopted in this series.

<a id="question-57"></a>

### What do properties, models, static verification, and mutation contribute?

Generators explore inputs and states, models express expected transitions, static checks establish selected structural properties, and mutation probes assertion sensitivity. Run behavioral generated checks through the real boundary when appropriate. Their findings strengthen the maintained suite; none automatically establishes complete runtime correspondence.

<a id="question-58"></a>

### How should we understand sufficiency and practitioner experience?

This is a conditional engineering confidence claim grounded in established obligations, correct scenarios and expectations, and executed assembled outcomes. Finite runs do not prove every possible trace. My experience explains the discipline's value; it is not a controlled comparison proving numerical superiority over every alternative.

## Comparing approaches against the release question

<a id="tdd-and-pyramids"></a>

### How do TDD and testing pyramids fit this position?

A developer can build a feature incrementally by writing its expected scenario,
seeing it fail, implementing behavior, and making it pass. The public boundary
can be the starting point. Temporary small checks can help construction; the
maintained behavioral authority remains the reviewed assembled suite.

A pyramid emphasizes a distribution of checks. This series uses a different
criterion: whether the required service outcomes are verified through the
assembled operation before exposure. A large number of component checks cannot
substitute for missing database, broker, or customer-communication evidence.
Claims about agreement with a named author's philosophy do not decide whether
those observations exist. This article makes no unverified quotations or
numerical comparison of testing strategies.

<a id="mocks-fakes-contracts"></a>

### Why do mocks, stateful fakes, and contracts need assembled evidence?

A substitute establishes behavior against the substitute's model. Its fidelity
to SQL constraints, provider responses, transaction behavior, and deployed wiring
needs separate evidence. Meridian retains the real gateway and captures at the
transport boundary, explicitly identifying what that arrangement establishes.

A contract declares required messages or responses. Contract checks can reveal
compatibility problems, but executed state and effects still need observations.
For services evolving together, verify compatible versions and required flows
through their intended stable environments. Track consumer contracts and change
policy; a successful order scenario alone does not enumerate every consumer's
API dependency. See [interface testing](/writing/testing-the-service-interface/).

<a id="properties-and-models"></a>

### Can properties, state machines, and metamorphic checks be boundary tests?

Yes. A generator can construct requests, sequences, and states while a property
or model supplies expected relations. When those checks invoke the assembled
operation and independently compare its required effects, they are behavioral
verification at the boundary. Named scenarios and generated variation can share
that execution and observation discipline.

For example, changing SKU casing should preserve product identity. A relation
between two outputs verifies that relation; it does not automatically establish
that either output has the correct catalog price or customer recipient. Include
absolute expectations and complete effects where the requirement needs them.
A finite generated run is still finite; its strength depends on the property,
state model, generator constraints, and observations.

<a id="formal-and-static"></a>

### What do strict types, pure functions, and formal models establish?

They can eliminate classes of representable mistakes and establish properties
within their assumptions. The release still includes runtime configuration,
database artifacts, external messages, and effects. Verify that the assembled
implementation participates and fulfills those obligations.

A pure rule function can be correct while the service calls it with the wrong
catalog record or omits its result from a message. A model can describe the desired
transaction without establishing that the deployed procedure implements it.
Keep each proof or check's assumptions and correspondence responsibilities explicit.

<a id="internal-obligations"></a>

### What if correct output hides a required internal or resource obligation?

State that obligation and choose evidence appropriate to it. Bounded response
consumption needs byte counts, not merely a short log string. A transaction
requirement needs a real interrupted write and rollback observations. A structural
requirement can need source review; a query budget can need measured execution
under its specified arrangement. Do not claim that one output comparison proves
an unobserved structural or resource property. See [assertions](/writing/assertions-that-verify-the-whole-outcome/).

<a id="mutation-and-measurement"></a>

### Should mutation scores or seeded faults become the release authority?

They can expose weak comparisons and help evaluate particular failures. Review
what a mutation represents, whether the scenario is supposed to detect it, and
which actual outcome changed. A score cannot identify a requirement nobody
specified or an expectation incorrectly approved by the team.

Measured findings can improve this discipline. Record them, strengthen the
scenarios, and preserve useful regression cases. The release authority remains
correct required outcomes passing through the assembled service; the recorded
experience is not a substitute for verifiable evidence on the current build.

<a id="speed-and-cost"></a>

### Does repeated infrastructure execution make the practice wasteful?

Each scenario asks whether the feature fulfills different obligations or conditions.
The database and broker participate because those obligations involve their real
behavior. Improve setup reuse where isolation permits, focused development runs,
subscription ownership, and diagnostics without removing required evidence.

Detailed tests can take substantial implementation time. Explain that investment
as continuing regression protection and release confidence. Measure the actual
suite before making speed claims. The [maintenance](/writing/a-suite-the-team-can-keep-trusting/)
and [regression](/writing/the-regression-suite-the-business-is-paying-for/) articles describe that workflow.

<a id="scope-and-falsifiability"></a>

### How can the claimed confidence be challenged constructively?

Find an established obligation without a correct scenario, an arrangement that
fails to create its condition, an incorrect expectation, a missing comparison,
or an executed outcome that violates the requirement. Each gives the team a
specific condition to investigate and correct.
A bug discovered under a previously unknown condition adds a requirement or scenario
rather than making it acceptable to leave that behavior unverified afterward.

The position depends on the supporting discipline and does not claim mathematical
exhaustiveness. Different architectures can also expose stable public boundaries;
the important evidence is what actually executes and is observed. Testing capability
does not automatically establish team competence. Review and ownership remain
necessary throughout adoption and release.

---

[Previous article](/writing/from-a-green-suite-to-a-release/) | [Series contents](/acceptance-testing/)