SAP Testing Strategy
This skill enforces a complete, evidence-based testing strategy — preventing premature sign-off, skipped test levels, and UAT conducted without proper test case coverage.
Iron Laws
- NEVER SIGN OFF WITHOUT UAT COMPLETION. No UAT = no go-live approval. A "mostly done" UAT is a failed UAT. Partial UAT does not count.
- NEVER SKIP NEGATIVE TESTS. Every test case has a negative counterpart. Testing only happy paths is testing only half the system.
- NEVER TEST WITH PRODUCTION DATA WITHOUT ANONYMIZATION. Raw production data in test systems is a GDPR/data protection violation. Anonymize first, always.
- NEVER DECLARE A DEFECT CLOSED WITHOUT RETEST EVIDENCE. A developer saying "it's fixed" is not evidence. A tester confirming the fix with a retest pass is evidence.
- TEST COVERAGE IS MEASURED, NOT ESTIMATED. "We tested everything important" is not a coverage metric. Count test cases executed vs. planned. Report the percentage.
Rationalization Table
| Agent Will Try To... |
Why It Seems Reasonable |
Why It Fails |
Counter |
| Skip unit testing and jump to E2E |
"SAP standard code doesn't need unit tests" |
Custom ABAP, BAdIs, and enhancements absolutely need unit tests. Bugs caught at unit level cost 10x less than E2E bugs. |
Checklist Step 1: Unit test coverage is mandatory for all custom code. |
| Run UAT without a formal test case library |
"The business users know the process" |
Business users test what they remember, not what the system must do. Coverage gaps guarantee post-go-live defects. |
Hard Gate: UAT cannot begin without signed-off test case library. |
| Use production data directly in testing |
"It's the most realistic data" |
GDPR violation. Also — prod data corrupted by test activity is a catastrophic incident. |
Iron Law 3: Anonymized data or synthetic data only. No exceptions. |
| Mark defects closed based on developer word |
"The developer has fixed it in the system" |
Configuration drift, transport errors, and regression mean developer confidence ≠ working system. |
Iron Law 4: All defects require documented retest before closure. |
| Skip performance testing because "SAP handles it" |
"SAP is enterprise-grade, it scales" |
SAP scales. Your custom code, Z-tables, and integration points may not. Volume testing is mandatory. |
Checklist Step 5: Performance test mandatory for all high-volume processes. |
| Report test completion without defect resolution |
"We've run all the test cases" |
Running tests and passing tests are different things. Open critical defects block sign-off. |
Verification: Zero open P1/P2 defects required for sign-off. |
Red Flags
Watch for these phrases in your own reasoning — each signals an Iron Law violation:
- "The business can test informally..." → No formal test cases = no coverage measurement. Stop.
- "We can fix that after go-live..." → Deferring defects is acceptable only when formally risk-accepted. Stop and document.
- "UAT is mostly done..." → Partial UAT is not UAT. State the actual percentage. Stop.
- "This is standard SAP, it doesn't need testing..." → Standard SAP + your config + your data = unique system. Test it. Stop.
- "We tested it in dev, it'll work in prod..." → Environments differ. Transport issues are real. Stop.
- "Performance testing can wait..." → You won't have time after go-live. Stop.
- "The users signed off verbally..." → Verbal sign-off is not sign-off. Written evidence only. Stop.
Checklist
Define the test pyramid — Identify scope at each level: unit, integration, E2E, UAT, performance, regression.
- Evidence: Test pyramid diagram with scope statement per layer
- Gate: All six levels documented with in-scope/out-of-scope rationale
Build the test case library — Create test cases for every business process in scope, including positive and negative scenarios.
- Evidence: Test case matrix with Process, Test Case ID, Description, Expected Result, Priority
- Gate: Business process owner has reviewed and approved test case coverage
Define test data strategy — Identify data requirements per test case. Determine anonymization approach for any production data used.
- Evidence: Test data matrix; anonymization script or tool documented
- Gate: Test data available in test system before execution begins
Execute unit and integration testing — All custom development (ABAP, BAdIs, enhancements, APIs) unit-tested. Integration scenarios (iDocs, APIs, BTP) integration-tested.
- Evidence: Unit test results; integration test logs; defect log with resolutions
- Gate: No open P1/P2 defects before progressing to E2E
Execute E2E and performance testing — Run end-to-end scenarios across modules. Execute volume and performance tests for high-volume processes.
- Evidence: E2E test execution report; performance test results with benchmark vs. actual
- Gate: E2E scenarios passing; performance within defined SLA
Facilitate UAT — Business users execute the approved test case library. Tester logs defects in tracking tool.
- Evidence: UAT test execution records; defect log; daily UAT status report
- Gate: 100% test case execution; all P1/P2 defects resolved or formally risk-accepted
Conduct regression testing — On each major defect fix, re-run affected regression scenarios to confirm no regressions introduced.
- Evidence: Regression test run results; delta comparison from previous run
- Gate: No new defects introduced by fixes
Obtain formal UAT sign-off — Present UAT completion evidence to business. Obtain written sign-off.
- Evidence: Signed UAT sign-off document with name, date, scope, and outstanding items
- Gate: Signed document in hand before go/no-go recommendation
Deliverable Templates
Test Strategy Summary
PROJECT: [Name]
DATE: [Date]
VERSION: [Version]
TEST PYRAMID SCOPE
------------------
Unit Testing: [In scope / Out of scope] — [Rationale]
Integration Testing: [In scope / Out of scope] — [Rationale]
E2E Testing: [In scope / Out of scope] — [Rationale]
UAT: [In scope] — [Business users, dates, location]
Performance Testing: [In scope / Out of scope] — [Rationale]
Regression Testing: [In scope] — [Trigger conditions]
TEST DATA STRATEGY
------------------
Source: [Origin of test data]
Anonymization: [Tool / approach]
Volume: [Record counts per entity]
AUTOMATION SCOPE
----------------
Tool: [Tosca / Selenium / SAP TAO / None]
Automated scenarios: [List]
Manual scenarios: [List]
DEFECT MANAGEMENT
-----------------
Tool: [JIRA / Azure DevOps / SAP Solution Manager]
Priority definitions: P1=[definition] P2=[definition] P3=[definition] P4=[definition]
SLA: P1=[hours] P2=[hours] P3=[hours] P4=[hours]
SIGN-OFF AUTHORITY
------------------
UAT sign-off: [Name, role]
Go-live approval: [Name, role]
Test Case Matrix
| ID | Module | Process | Test Case | Type | Priority | Status | Tester | Pass/Fail | Defect Ref |
|-------|--------|-----------------|------------------------------|----------|----------|---------|--------|-----------|------------|
| TC001 | FI | Invoice Posting | Post vendor invoice — valid | Positive | P1 | Pending | [Name] | | |
| TC002 | FI | Invoice Posting | Post invoice — missing field | Negative | P1 | Pending | [Name] | | |
| TC003 | MM | Purchase Order | Create PO — standard | Positive | P1 | Pending | [Name] | | |
| TC004 | MM | Purchase Order | Create PO — blocked vendor | Negative | P2 | Pending | [Name] | | |
Verification
This skill is complete ONLY when ALL of the following are true:
Evidence required: Test strategy document, test case matrix with pass/fail status, defect log, performance test report, signed UAT sign-off form.
If any item above is unchecked, this skill is NOT complete. Do not claim sign-off readiness.
Next Skill
After completing this skill, invoke: data-migration
Conditions for handoff: Testing strategy signed off and UAT complete. Data migration execution requires its own testing (reconciliation, trial run) — invoke the data-migration skill next.
Cross-References
go-live-readiness — Testing sign-off is one input to the go/no-go matrix; invoke after this skill
cutover-planning — Test completion gates cutover execution
development-workflow — Unit test standards for custom development
sap-test-designer agent — Use for automated test case generation from process specs
1---2name: testing-strategy3description: Use when designing, planning, or executing a testing strategy for an SAP implementation, upgrade, or change project. Triggers on any request involving test planning, UAT, test cases, test automation, defect management, or sign-off readiness.4---56# SAP Testing Strategy78This skill enforces a complete, evidence-based testing strategy — preventing premature sign-off, skipped test levels, and UAT conducted without proper test case coverage.910---1112## Iron Laws13141. **NEVER SIGN OFF WITHOUT UAT COMPLETION.** No UAT = no go-live approval. A "mostly done" UAT is a failed UAT. Partial UAT does not count.152. **NEVER SKIP NEGATIVE TESTS.** Every test case has a negative counterpart. Testing only happy paths is testing only half the system.163. **NEVER TEST WITH PRODUCTION DATA WITHOUT ANONYMIZATION.** Raw production data in test systems is a GDPR/data protection violation. Anonymize first, always.174. **NEVER DECLARE A DEFECT CLOSED WITHOUT RETEST EVIDENCE.** A developer saying "it's fixed" is not evidence. A tester confirming the fix with a retest pass is evidence.185. **TEST COVERAGE IS MEASURED, NOT ESTIMATED.** "We tested everything important" is not a coverage metric. Count test cases executed vs. planned. Report the percentage.1920---2122## Rationalization Table2324| Agent Will Try To... | Why It Seems Reasonable | Why It Fails | Counter |25|---|---|---|---|26| Skip unit testing and jump to E2E | "SAP standard code doesn't need unit tests" | Custom ABAP, BAdIs, and enhancements absolutely need unit tests. Bugs caught at unit level cost 10x less than E2E bugs. | Checklist Step 1: Unit test coverage is mandatory for all custom code. |27| Run UAT without a formal test case library | "The business users know the process" | Business users test what they remember, not what the system must do. Coverage gaps guarantee post-go-live defects. | Hard Gate: UAT cannot begin without signed-off test case library. |28| Use production data directly in testing | "It's the most realistic data" | GDPR violation. Also — prod data corrupted by test activity is a catastrophic incident. | Iron Law 3: Anonymized data or synthetic data only. No exceptions. |29| Mark defects closed based on developer word | "The developer has fixed it in the system" | Configuration drift, transport errors, and regression mean developer confidence ≠ working system. | Iron Law 4: All defects require documented retest before closure. |30| Skip performance testing because "SAP handles it" | "SAP is enterprise-grade, it scales" | SAP scales. Your custom code, Z-tables, and integration points may not. Volume testing is mandatory. | Checklist Step 5: Performance test mandatory for all high-volume processes. |31| Report test completion without defect resolution | "We've run all the test cases" | Running tests and passing tests are different things. Open critical defects block sign-off. | Verification: Zero open P1/P2 defects required for sign-off. |3233---3435## Red Flags3637Watch for these phrases in your own reasoning — each signals an Iron Law violation:3839- "The business can test informally..." → No formal test cases = no coverage measurement. Stop.40- "We can fix that after go-live..." → Deferring defects is acceptable only when formally risk-accepted. Stop and document.41- "UAT is mostly done..." → Partial UAT is not UAT. State the actual percentage. Stop.42- "This is standard SAP, it doesn't need testing..." → Standard SAP + your config + your data = unique system. Test it. Stop.43- "We tested it in dev, it'll work in prod..." → Environments differ. Transport issues are real. Stop.44- "Performance testing can wait..." → You won't have time after go-live. Stop.45- "The users signed off verbally..." → Verbal sign-off is not sign-off. Written evidence only. Stop.4647---4849<HARD-GATE>50UAT sign-off CANNOT be granted until:511. A formal test case library exists with pass/fail status for every test case522. UAT execution is 100% complete (every test case run, not estimated)533. Zero open P1 (critical) defects remain544. All P2 (high) defects are resolved OR formally risk-accepted in writing by the business owner555. Formal UAT sign-off document is signed by the business representative56If any of these conditions is unmet, the status is NOT signed off. Do not represent it as ready.57</HARD-GATE>5859---6061## Checklist62631. **Define the test pyramid** — Identify scope at each level: unit, integration, E2E, UAT, performance, regression.64 - Evidence: Test pyramid diagram with scope statement per layer65 - Gate: All six levels documented with in-scope/out-of-scope rationale66672. **Build the test case library** — Create test cases for every business process in scope, including positive and negative scenarios.68 - Evidence: Test case matrix with Process, Test Case ID, Description, Expected Result, Priority69 - Gate: Business process owner has reviewed and approved test case coverage70713. **Define test data strategy** — Identify data requirements per test case. Determine anonymization approach for any production data used.72 - Evidence: Test data matrix; anonymization script or tool documented73 - Gate: Test data available in test system before execution begins74754. **Execute unit and integration testing** — All custom development (ABAP, BAdIs, enhancements, APIs) unit-tested. Integration scenarios (iDocs, APIs, BTP) integration-tested.76 - Evidence: Unit test results; integration test logs; defect log with resolutions77 - Gate: No open P1/P2 defects before progressing to E2E78795. **Execute E2E and performance testing** — Run end-to-end scenarios across modules. Execute volume and performance tests for high-volume processes.80 - Evidence: E2E test execution report; performance test results with benchmark vs. actual81 - Gate: E2E scenarios passing; performance within defined SLA82836. **Facilitate UAT** — Business users execute the approved test case library. Tester logs defects in tracking tool.84 - Evidence: UAT test execution records; defect log; daily UAT status report85 - Gate: 100% test case execution; all P1/P2 defects resolved or formally risk-accepted86877. **Conduct regression testing** — On each major defect fix, re-run affected regression scenarios to confirm no regressions introduced.88 - Evidence: Regression test run results; delta comparison from previous run89 - Gate: No new defects introduced by fixes90918. **Obtain formal UAT sign-off** — Present UAT completion evidence to business. Obtain written sign-off.92 - Evidence: Signed UAT sign-off document with name, date, scope, and outstanding items93 - Gate: Signed document in hand before go/no-go recommendation9495---9697## Deliverable Templates9899### Test Strategy Summary100101```102PROJECT: [Name]103DATE: [Date]104VERSION: [Version]105106TEST PYRAMID SCOPE107------------------108Unit Testing: [In scope / Out of scope] — [Rationale]109Integration Testing: [In scope / Out of scope] — [Rationale]110E2E Testing: [In scope / Out of scope] — [Rationale]111UAT: [In scope] — [Business users, dates, location]112Performance Testing: [In scope / Out of scope] — [Rationale]113Regression Testing: [In scope] — [Trigger conditions]114115TEST DATA STRATEGY116------------------117Source: [Origin of test data]118Anonymization: [Tool / approach]119Volume: [Record counts per entity]120121AUTOMATION SCOPE122----------------123Tool: [Tosca / Selenium / SAP TAO / None]124Automated scenarios: [List]125Manual scenarios: [List]126127DEFECT MANAGEMENT128-----------------129Tool: [JIRA / Azure DevOps / SAP Solution Manager]130Priority definitions: P1=[definition] P2=[definition] P3=[definition] P4=[definition]131SLA: P1=[hours] P2=[hours] P3=[hours] P4=[hours]132133SIGN-OFF AUTHORITY134------------------135UAT sign-off: [Name, role]136Go-live approval: [Name, role]137```138139### Test Case Matrix140141```142| ID | Module | Process | Test Case | Type | Priority | Status | Tester | Pass/Fail | Defect Ref |143|-------|--------|-----------------|------------------------------|----------|----------|---------|--------|-----------|------------|144| TC001 | FI | Invoice Posting | Post vendor invoice — valid | Positive | P1 | Pending | [Name] | | |145| TC002 | FI | Invoice Posting | Post invoice — missing field | Negative | P1 | Pending | [Name] | | |146| TC003 | MM | Purchase Order | Create PO — standard | Positive | P1 | Pending | [Name] | | |147| TC004 | MM | Purchase Order | Create PO — blocked vendor | Negative | P2 | Pending | [Name] | | |148```149150---151152## Verification153154This skill is complete ONLY when ALL of the following are true:155156- [ ] Test pyramid documented with all six levels addressed157- [ ] Test case library reviewed and approved by business process owners158- [ ] Test data strategy documented with anonymization approach confirmed159- [ ] Unit and integration testing completed with defect log160- [ ] E2E testing completed with performance benchmarks met161- [ ] UAT execution is 100% complete (not estimated, counted)162- [ ] Zero open P1 defects; P2 defects resolved or formally risk-accepted in writing163- [ ] Formal UAT sign-off document signed and dated164165**Evidence required:** Test strategy document, test case matrix with pass/fail status, defect log, performance test report, signed UAT sign-off form.166167If any item above is unchecked, this skill is NOT complete. Do not claim sign-off readiness.168169---170171## Next Skill172173After completing this skill, invoke: `data-migration`174Conditions for handoff: Testing strategy signed off and UAT complete. Data migration execution requires its own testing (reconciliation, trial run) — invoke the data-migration skill next.175176---177178## Cross-References179180- `go-live-readiness` — Testing sign-off is one input to the go/no-go matrix; invoke after this skill181- `cutover-planning` — Test completion gates cutover execution182- `development-workflow` — Unit test standards for custom development183- `sap-test-designer` agent — Use for automated test case generation from process specs