Browse Learn Clojure Foundations as a Java Developer

Run User Acceptance Testing After Clojure Migration

Use user acceptance testing to prove that a Java-to-Clojure migration still supports real workflows, business decisions, reports, approvals, and operational handoffs before cutover.

User acceptance testing (UAT) validates that the migrated system still works for the people and workflows that matter. Automated equivalence tests can prove outputs match. Performance tests can prove budgets are met. UAT proves that the migration still supports real business work.

For Java-to-Clojure migration, UAT should focus on stable workflows, not on explaining Clojure to stakeholders. Users care whether orders are approved, reports reconcile, errors make sense, and handoffs still work.

What UAT Should Validate

UAT area What to prove
Core workflows Users can complete the same tasks after migration.
Business decisions Rules, statuses, warnings, approvals, and denials still make sense.
Reports and exports Totals, filters, sorting, and formatting remain acceptable.
Error paths Users see useful messages for expected failures.
Operational handoffs Support, audit, reconciliation, and rollback procedures still work.

Do not use UAT to discover basic equivalence defects that automated tests should catch earlier. UAT is expensive human attention; spend it on workflow confidence.

Build Scenario-Based Tests

Strong UAT scenarios are written as user workflows, not implementation tasks.

Scenario Acceptance signal
Approve a normal account update Status, audit entry, and user notification match expectations.
Reject an invalid import row User sees the correct error and can fix the row.
Generate an end-of-day report Totals reconcile with known examples.
Process a high-risk case Manual review workflow is triggered and tracked.
Roll back a migrated path Operations can return traffic to the Java path safely.

Each scenario should include test data, user role, expected result, and evidence to capture.

Make Clojure Differences Invisible To Users

Users should not need to know whether Java or Clojure produced the result. But the migration team needs enough evidence to debug differences.

1(defn acceptance-result [workflow-id status evidence]
2  {:workflow/id workflow-id
3   :workflow/status status
4   :workflow/evidence evidence
5   :migration/path :clojure})

The :migration/path marker is for the team, not for the user interface unless it is part of a controlled pilot. It helps support staff connect UAT feedback to the migrated path.

Coordinate Stakeholders

Stakeholder Useful UAT role
End user Executes realistic workflows and reports confusing results.
Business owner Approves rule behavior and acceptable differences.
Support or operations Confirms errors, logs, alerts, and rollback steps.
QA engineer Structures scenarios, evidence, and retest cycles.
Migration engineer Triage differences and map feedback to code or data changes.

Keep the group small enough to move quickly. Add stakeholders when their workflow or approval authority is needed.

Capture Actionable Feedback

UAT feedback needs enough detail to reproduce the issue.

Feedback field Why it matters
Scenario ID Connects feedback to a known workflow.
User role Explains permissions and expectations.
Input record Lets engineers replay the case safely.
Expected outcome Separates defect reports from preference changes.
Actual outcome Shows the visible effect.
Severity Helps decide whether cutover is blocked.

Avoid vague tickets such as “Clojure report looks wrong.” Capture the report, filters, input data, expected total, actual total, and whether the Java path differs.

Cutover Decision Checklist

Use UAT results to make a release decision.

  1. Critical workflows passed with production-like data.
  2. Business owners approved intentional differences.
  3. Blocker defects are fixed and retested.
  4. Support can identify whether a request used the Java or Clojure path.
  5. Rollback has been practiced or documented.
  6. Open non-blocking issues have owners and dates.

If stakeholders find a real behavior mismatch, route it back to equivalence tests. UAT should improve the automated safety net, not remain a one-time manual memory.

Practice

  1. Write one UAT scenario for a migrated workflow using a real user role.
  2. Define the expected result and the evidence to capture.
  3. Decide which stakeholder has authority to approve an intentional difference.
  4. Convert one UAT defect into an automated equivalence or regression test.

Key Takeaways

  • UAT validates real workflows, not Clojure implementation details.
  • Automated equivalence and performance tests should run before stakeholder testing.
  • Scenarios need roles, data, expected results, and captured evidence.
  • Stakeholder feedback must be reproducible enough for engineers to act on.
  • UAT findings should feed back into automated regression tests.

Quiz: User Acceptance Testing

### What should UAT focus on during a Java-to-Clojure migration? - [x] Real user workflows and business outcomes. - [ ] Whether users understand Clojure syntax. - [ ] Replacing automated tests. - [ ] Measuring only CPU usage. > **Explanation:** Users need workflow confidence; implementation language should usually be invisible to them. ### Why should basic equivalence defects be caught before UAT? - [x] UAT is expensive human attention and should focus on workflow acceptance. - [ ] Automated tests cannot compare Java and Clojure outputs. - [ ] Stakeholders should debug adapter code. - [ ] UAT replaces all regression testing. > **Explanation:** Automated tests should catch repeatable behavior mismatches before stakeholders spend time on scenarios. ### What makes UAT feedback actionable? - [x] Scenario, role, input record, expected outcome, actual outcome, and severity. - [ ] A short note saying "looks wrong." - [ ] Only a screenshot with no data. - [ ] A request to rewrite the whole system. > **Explanation:** Engineers need enough context to reproduce and classify the issue. ### What should happen when UAT finds a real behavior mismatch? - [x] Turn it into an automated equivalence or regression test after fixing it. - [ ] Leave it only in meeting notes. - [ ] Ignore it if performance is good. - [ ] Ask users to learn Clojure. > **Explanation:** UAT discoveries should strengthen the automated safety net for future changes.
Revised on Saturday, May 23, 2026