Containerization
Package and run real software with repeatable dependencies.
ExampleA PostgreSQL instance created for one test run.
Our Banking Client / Illustrative banking scenario / Technical
Follow one payment test from an approved contract to isolated execution and inspectable evidence.
Technical design review · Authored reference architecture; validate interfaces and tooling with the client.
Our Banking Client / Illustrative banking scenario / Technical
Payment APIs offer the first controlled test surface. Other applications follow their own readiness.
Java / Spring Boot
PostgreSQL journal
Versioned payment API
React journey; existing Selenium and Appium suites
Today: limited vendor test environments; no service virtualization
Legacy Java + SQL; shared nightly environment and file reconciliation
Current baseline: few shared environments and no backend virtualization. WireMock and per-run isolation are proposed pilot capabilities.
Our Banking Client / Illustrative banking scenario / Technical
Overview: proposed work handoffs.
Gold indicates the current handoff. All other arrows remain visible.
Adapters and joined evidence are integration work to build. Model output cannot change the original assertion result.
Our Banking Client / Illustrative banking scenario / Technical
POST /transfers
Idempotency-Key: pay-142
{
"from": "payer", "to": "recipient",
"currency": "CAD",
"amountMinor": 10000
}same key + same payload → transfer t-142
same key + changed payload → conflict
journalCount(t-142) == 1
entryCount(t-142) == 2
payer.balance == 90000
recipient.balance == 10000Concurrent retries and repeated callbacks must converge on the same identity. Define key scope, retention and recovery with the service owner.
Authored contract; minor units are CAD cents. Start at 100000 / 0; no fees, FX or other account activity.
Our Banking Client / Illustrative banking scenario / Technical
QE testing scenario. A timeout leaves the outcome unknown; a stable key must resolve to the original transfer.
Our Banking Client / Illustrative banking scenario / Technical
Input contract · authored YAML
requirement: PAY-142@r3
contract: payments-api@v1.4
fixture: cad-transfer@v2
amount_minor: 10000
key: pay-142
open_question: key-retention-window
Review artifact · test matrix
same key + same payload -> original ID
same key + changed amount -> conflict
parallel retries -> one transfer
duplicate callback -> one posting
client timeout -> outcome still unknown
expired key -> rule needs domain approval
Proposed artifacts for the client scenario; identifiers and conflict behavior require agreement with the API owner.
Our Banking Client / Illustrative banking scenario / Technical
Fixture contract · authored JSON
{
"run": "run-042",
"currency": "CAD",
"payer_minor": 100000,
"recipient_minor": 0,
"transfer_minor": 10000,
"idempotency_key": "pay-142"
}
Run manifest · authored YAML
service_image: sha256:<digest>
test_commit: <commit-sha>
fixture_version: cad-transfer@v2
schema_version: payments@v8
provider_stub: accept-once@v3
account_scope: isolated-per-run
preflight: health + schema + balances
fault: drop API response after commit
Proposed manifest schema. Digest and commit placeholders must resolve to real immutable versions before execution.
Our Banking Client / Illustrative banking scenario / Technical
Review anti-pattern · pseudocode
retry = post_transfer("pay-142", 10000)
assert retry.status == 200
# This can pass after a duplicate debit.
# It cannot establish ledger correctness.
Required invariants · pseudocode
assert retry.id == original_transfer_id
assert journals(retry.id).count == 1
assert entries(retry.id).count == 2
assert sum_signed_entries(retry.id) == 0
assert balance(payer) == 90000
assert balance(recipient) == 10000
Non-runnable pseudocode for this CAD 100 test scenario; a REST Assured/JUnit implementation needs approved API and ledger helpers.
Our Banking Client / Illustrative banking scenario / Technical
| Layer | Example implementation |
|---|---|
| Developer unit | Copilot drafts JUnit tests for idempotency logic; developers review. A fake repository cannot prove real payment integration. |
| Service and API | REST Assured + JUnit. Cover retry, concurrent requests, idempotency conflicts and journal outcomes. |
| Web journey | Playwright for the new React flow. Check pending state, retry action and the final customer message. |
| Existing browser and mobile | Keep owned Selenium and Appium coverage. Change frameworks only when maintenance evidence supports it. |
| Batch and integration | Retain settlement-file reconciliation and provider sandbox checks with explicit scheduling. |
Test distribution follows behavior and observability. A new browser framework does not solve a shared settlement environment.
Our Banking Client / Illustrative banking scenario / Technical
Azure Pipelines · task fragment
- task: PublishTestResults@2
condition: always()
inputs:
testResultsFormat: JUnit
testResultsFiles: 'results/TEST-*.xml'
failTaskOnFailedTests: true
failTaskOnMissingResultsFile: true
failTaskOnFailureToPublishResults: true
Proposed AI adapter · authored YAML
inputs: [junit, run_manifest, logs]
access: read-only
output: diagnosis.json
evidence_links: required
change_test_status: prohibited
missing_artifact: unknown
merge_or_release: human-owned
Microsoft task syntax is documented; the AI adapter is proposed integration work. Job cancellation can still prevent artifact collection.
Our Banking Client / Illustrative banking scenario / Technical
Diagnostic output · authored JSON
{
"test": "PAY-142.retry",
"observed": "journals=2; expected=1",
"evidence": "run-042/ledger.json",
"hypothesis": "replay posted twice",
"classification": "needs-review",
"owner": "payments-engineering"
}
Triage policy · pseudocode
preflight failed -> environment owner
assertion + ledger agree -> product review
unstable reproduction -> flake investigation
missing logs -> unresolved
approved fix -> new build + full rerun
original failing run -> retained
Proposed diagnostic schema and routing policy. Human review assigns the disposition; the original evidence remains available.
Our Banking Client / Illustrative banking scenario / Technical
Evidence record · authored YAML
requirement: PAY-142@r3
test_commit: <commit-sha>
build_digest: sha256:<digest>
fixture: cad-transfer@v2
run: run-042
raw_results: results/TEST-payments.xml
disposition: defects/PAY-281
release_decision: pending-human-review
Case gate · pseudocode
missing artifact -> UNKNOWN / block
required test skipped -> INCOMPLETE / block
ledger invariant failed -> FAILED / block
unresolved critical defect -> block
all required checks pass -> review eligible
release owner records final decision
Proposed evidence contract and pilot gate. This example does not supply a complete banking release policy.
Our Banking Client / Illustrative banking scenario / Technical
| Controlled condition | Required observation |
|---|---|
| Duplicate journal defect | Second posting changes payer to 80000; journal / balance checks fail. |
| Same key, changed amount | Conflict returned; no additional provider submission or journal. |
| Concurrent same-key retries | One transfer identity and one journal after all attempts settle. |
| Repeated callback event | Same event ID produces no additional posting. |
Author the expected behavior independently. The browser demo covers a subset; these cases require service-level implementation.
Our Banking Client / Illustrative banking scenario / Technical
| Capability | Evidence before automated execution |
|---|---|
| Deploy + reset | Pinned application digest starts; a fresh run restores the same synthetic balances. |
| Provider control | Replay timeout and duplicate callback; identify the model revision and its owner. |
| Observable outcome | Read transfer identity and committed journal facts without depending on the AI summary. |
| Reproduction | A second engineer reruns the same manifest and obtains an explainable outcome. |
Assess per application. Unknown or failed checks block the dependent execution scope; reviewed drafting has a narrower prerequisite set.
Our Banking Client / Illustrative banking scenario / Technical
Each handoff carries a reproducible artifact and a named next owner.
Pilot team: one QA lead, four domain testers, two automation engineers and one data/environment engineer. Product, development and platform support contribute separately.
Our Banking Client / Illustrative banking scenario / Technical
Correlation record · authored JSON
{
"run": "run-042",
"test": "PAY-142.retry",
"trace_id": "trace-042",
"transfer_id": "t-142",
"idempotency_key": "pay-142",
"raw_result": "failed"
}
Evidence path · authored example
JUnit: journals expected 1, observed 2
-> trace-042: two post attempts
-> t-142: two committed journals
-> run-042: build + fixture + stub refs
AI hypothesis: replay posted twice
QA disposition: pending owner review
Proposed observability contract. Example identifiers are illustrative; the AI hypothesis does not override the failed assertion.
Our Banking Client / Illustrative banking scenario / Technical
| Gate | Engineering acceptance |
|---|---|
| Code + intent review | Approved behavior and independent assertions; no weakened checks or unexplained skips. |
| Paired challenge | Correct build passes; injected duplicate posting fails using identical fixtures. |
| Reproducibility | Run manifest, raw evidence and cleanup results are present; repeat failures are classified. |
| Suite promotion | QA owner approves the PR; required tests and separate integration checks remain enforced. |
Do not promote a generated test merely because it compiles or passes once. Benchmark pilot effort separately.
Our Banking Client / Illustrative banking scenario / Technical
Resolve the contract, repeatability, ownership and evidence questions with system owners before expanding execution authority.
Our Banking Client / Illustrative banking scenario / Technical
| Required foundation | Capability unlocked / consequence if missing |
|---|---|
| Approved rules + repository context | Reviewed test drafting; without a trustworthy oracle, keep cases as unapproved proposals. |
| Isolated runner + resettable fixtures | Automated service execution; shared mutable data prevents repeatable comparisons. |
| Provider models + contract owner | Deterministic negative-path tests; unknown model fidelity needs real integration evidence. |
| Run IDs + raw results + named owner | Evidence-linked diagnosis and team reuse; missing evidence routes to investigation. |
Foundation work starts with the pilot. Existing DevOps and QE maturity determine which capability can progress.
Our Banking Client / Illustrative banking scenario / Technical
Control the payment provider for repeatable tests; keep a separate real-integration gate.
WireMock is an HTTP example. Contract fidelity, callback behavior and batch access need explicit owners; passing a stub does not prove end-to-end correctness.
Our Banking Client / Illustrative banking scenario / Technical
Overview: a proposed test environment and its separate integration evidence.
Gold follows the selected step. Other relationships remain visible.
The CI runner checks the real payment service and database against reviewed provider models. Retain separate provider and settlement evidence.
Our Banking Client / Illustrative banking scenario / Technical
Package and run real software with repeatable dependencies.
ExampleA PostgreSQL instance created for one test run.
Replace selected dependency behavior with a controlled model.
ExampleA WireMock provider with an intentional timeout.
Check whether consumer and provider interactions agree.
ExampleA provider change fails a reviewed Pact contract.
Choose Testcontainers, Compose or an existing supported environment for the test scope. Mobile devices and legacy settlement retain their own integration requirements.
Our Banking Client / Illustrative banking scenario / Technical
Overview: a proposed candidate-test review and execution boundary.
The tour follows a rejected candidate; acceptance is a separate path.
PAY-142 must catch an incorrect transfer, journal or balance. The guided example rejects the candidate and leaves the maintained suite unchanged.
Our Banking Client / Illustrative banking scenario / Technical
Run event · authored JSON
{
"run": "run-042",
"mode": "assisted",
"scope": "PAY-142-api",
"raw_result": "failed",
"review_minutes": "not-recorded",
"model_cost": "not-recorded",
"rerun_count": "not-recorded"
}
Pilot measures · definitions
defect challenge: detected / injected
case completion: executed / required
flake rate: unstable / repeated tests
review load: human minutes per case
time to disposition: failure to owner decision
net effort: draft + review + rerun + operation
Authored measurement schema; no pilot timing, cost or effectiveness observations have been recorded.
Our Banking Client / Illustrative banking scenario / Technical
Proposed execution lifecycle. Numbered steps show order, not elapsed time.
Evidence survives cleanup. A missing or failed required check holds the release.
Repeatable execution is a platform capability. Retain failure evidence and attempt cleanup on every path; real integration remains separate.
Our Banking Client / Illustrative banking scenario / Technical
Reuse CI execution and artifact storage. Add owned context, model and evidence adapters around those systems.
| Adapter / owner | Input → output / failure handling |
|---|---|
| Context / QE platform | Story + API + test revisions → bundle; unresolved rules block approval of affected cases. |
| Model / AI platform | Bundle + configuration → patch; timeout or quota → no candidate, bounded retry. |
| Runner / application QA | Approved test commit + manifest → raw results; preserve exit status, retain evidence, clean up. |
| Evidence / QE platform | Run artifacts → indexed links; incomplete joins stay unknown; AI report is read-only. |
Proposed adapter contracts. Use request IDs for safe retries and record attempts; platform owners define timeouts and retention.
Our Banking Client / Illustrative banking scenario / Technical
Manual QE team → manual API/UI runs → few shared environments and test accounts. Backend services are not virtualized. Vendor test environments limit parallel runs; logs and screenshots are collected manually.
AI draft + human review → pinned CI runner → isolated payment service and PostgreSQL. Versioned WireMock models reproduce faults; raw assertions and run IDs are retained.
75 offshore QA staff share constrained environments. Proposed isolation and virtualized dependencies support parallel service tests; real integration stays scheduled.
Our Banking Client / Illustrative banking scenario / Technical
Proposed integration paths. The CI assistant is read-only; bounded agents need isolated tools, independent checks and human approval.
Our Banking Client / Illustrative banking scenario / Technical
| Measure / proposed acceptance | Calculation / explicit denominator |
|---|---|
| Catch payment faultsTarget: Catch every critical seeded fault | Correctly detected viable critical payment faults / all approved viable critical faults in the seeded catalogue. Unexecuted faults remain in the denominator; report separately. |
| Cover critical journeysTarget: Exercise every critical scenario | Approved critical scenarios with reviewed assertions and a valid execution result / all approved critical scenarios in the frozen pilot matrix. Skipped or blocked scenarios are incomplete. |
| Explain each release decisionTarget: Complete every decision record | Pilot release-candidate decision packs containing every required, resolvable evidence field / all pilot release candidates submitted for a decision. Missing packs remain in the denominator. |
Baseline and observed after: Not recorded. Freeze scope and definitions before comparing.
A clean control must pass; the intended injected-fault assertion must fail. Coverage and complete evidence do not imply a release pass.
Our Banking Client / Illustrative banking scenario / Technical
| Measure / proposed acceptance | Calculation / explicit denominator |
|---|---|
| Trust repeat runsTarget: No unexplained critical flakes | Test cases with mixed pass/fail results / all cases completing the agreed unchanged-configuration repeat protocol. Publish incomplete cases / all selected cases separately. |
| Validate real integrationsTarget: Verify agreed provider behaviors | Approved provider behaviors verified against the real provider sandbox / all provider behaviors assigned to the agreed integration check. Report stub outcomes separately. |
| Enable the next squadTarget: Second squad runs independently | Journeys independently configured, run and evidenced by the second squad / all journeys assigned to its agreed reuse trial. Record pilot-author interventions separately. |
Baseline and observed after: Not recorded. Freeze scope and definitions before comparing.
A passing retry never erases failure. Stubs do not prove real integration. Agree the independence of the reuse trial before measuring.
Our Banking Client / Illustrative banking scenario / Technical
Overview · follow the numbered steps.
Gold = current focus. Arrows show a proposed handoff, not live activity.
AI drafts; reviewers approve; CI executes. Context, artifacts and evidence remain versioned.
Our Banking Client / Illustrative banking scenario / Technical
Overview · follow the numbered steps.
Gold = current focus. Arrows show a proposed handoff, not live activity.
Authored trace IDs. Fixed assertions: original transfer ID, one journal, payer 90000 and recipient 10000 minor units.
Our Banking Client / Illustrative banking scenario / Technical
Overview · follow the numbered steps.
Gold = current focus. Arrows show a proposed handoff, not live activity.
Compare equivalent payment packs. Retain real-provider checks and measure review, rework and platform overhead.
Prepared by Tom Wu · Contact / feedback. AI-generated illustrations and synthetic English narration. Diagrams and scenario models are authored explanations; sources retain their own attribution. Narration provenance.