enterprise-integration-testing

Enterprise Integration Testing

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "enterprise-integration-testing" with this command: npx skills add proffesor-for-testing/agentic-qe/proffesor-for-testing-agentic-qe-enterprise-integration-testing

Enterprise Integration Testing

<default_to_action> When testing enterprise integrations or SAP-connected systems:

  • MAP the end-to-end flow (web -> API -> middleware -> backend -> response)

  • IDENTIFY integration points and protocols (REST, SOAP, RFC, IDoc, OData, EDI)

  • SELECT the right agent for each integration type

  • TEST each integration boundary with contract and data validation

  • VALIDATE cross-system data consistency (SAP <-> WMS <-> middleware)

  • EXERCISE enterprise error handling (compensation, retry, alerting)

  • GATE releases with enterprise-specific quality criteria

Agent Selection Guide:

  • SAP RFC/BAPI calls -> qe-sap-rfc-tester

  • SAP IDoc flows -> qe-sap-idoc-tester

  • OData/Fiori services -> qe-odata-contract-tester

  • SOAP/ESB endpoints -> qe-soap-tester

  • Message broker flows -> qe-message-broker-tester

  • Middleware routing/transformation -> qe-middleware-validator

  • Authorization / SoD conflicts -> qe-sod-analyzer

Critical Success Factors:

  • Enterprise testing is cross-system: no system is tested in isolation

  • Data consistency across systems is the primary quality signal

  • Environment access and test data are the biggest bottlenecks </default_to_action>

Quick Reference Card

When to Use

  • Testing SAP-connected enterprise systems (S/4HANA, ECC, BW)

  • Validating end-to-end business processes (Order-to-Cash, Procure-to-Pay)

  • Testing middleware/ESB integrations (IIB, MuleSoft, SAP PI/PO)

  • Cross-system data reconciliation (SAP <-> WMS <-> CRM)

  • Enterprise release readiness assessment

Enterprise Integration Types

Integration Protocol Agent Typical Use

SAP RFC/BAPI RFC qe-sap-rfc-tester Real-time SAP function calls

SAP IDoc ALE/EDI qe-sap-idoc-tester Asynchronous document exchange

SAP OData REST/OData qe-odata-contract-tester Fiori apps, external APIs

SOAP/ESB SOAP/HTTP qe-soap-tester Legacy service integration

Message Broker AMQP/JMS qe-message-broker-tester Async messaging (MQ, Kafka)

Middleware Various qe-middleware-validator Routing, transformation

Authorization SAP Auth qe-sod-analyzer SoD conflicts, role testing

Critical Test Scenarios

Scenario Must Test Example

E2E Order Flow Full order lifecycle Web order -> SAP Sales Order -> WMS Pick -> Ship -> Invoice

Data Consistency Cross-system match SAP inventory = WMS inventory

IDoc Processing Inbound/outbound Purchase order IDoc -> SAP PO creation

Authorization SoD compliance User cannot create AND approve PO

Error Recovery Compensation Failed payment -> reverse inventory reservation

Master Data Sync Replication accuracy Material master in SAP = Product in WMS

Tools

  • SAP: SAP GUI, Transaction codes (SE37, WE19, SEGW), Eclipse ADT

  • Middleware: IBM IIB/ACE, MuleSoft, SAP PI/PO/CPI

  • Testing: SoapUI, Postman, Playwright, custom harnesses

  • Monitoring: SAP Solution Manager, Splunk, Dynatrace

  • Data: SAP LSMW, SECATT, eCATT

Agent Coordination

  • qe-sap-rfc-tester : SAP RFC/BAPI function module testing

  • qe-sap-idoc-tester : IDoc inbound/outbound processing validation

  • qe-odata-contract-tester : OData service contract and Fiori app testing

  • qe-soap-tester : SOAP/WSDL contract validation and WS-Security

  • qe-message-broker-tester : Message broker flows, DLQ, ordering

  • qe-middleware-validator : ESB routing, transformation, EIP patterns

  • qe-sod-analyzer : Segregation of Duties and authorization testing

E2E Enterprise Flow Testing

Order-to-Cash Flow

describe('Order-to-Cash E2E Flow', () => { it('processes web order through SAP to warehouse fulfillment', async () => { // Step 1: Create order via web API const webOrder = await api.post('/orders', { customerId: 'CUST-1000', items: [{ materialNumber: 'MAT-500', quantity: 10 }], shippingAddress: { city: 'Portland', state: 'OR' } }); expect(webOrder.status).toBe(201); const webOrderId = webOrder.body.orderId;

// Step 2: Verify SAP Sales Order created via middleware
const sapOrder = await sapClient.call('BAPI_SALESORDER_GETLIST', {
  CUSTOMER_NUMBER: 'CUST-1000',
  SALES_ORGANIZATION: '1000'
});
const matchingSapOrder = sapOrder.find(o => o.PURCHASE_ORDER_NO === webOrderId);
expect(matchingSapOrder).toBeDefined();
const sapOrderId = matchingSapOrder.SD_DOC;

// Step 3: Verify WMS received pick instruction
const wmsPickTask = await wmsApi.get(`/pick-tasks?externalRef=${sapOrderId}`);
expect(wmsPickTask.status).toBe(200);
expect(wmsPickTask.body.status).toBe('PENDING');

// Step 4: Complete pick in WMS
await wmsApi.post(`/pick-tasks/${wmsPickTask.body.taskId}/complete`, {
  pickedItems: [{ sku: 'MAT-500', quantity: 10, location: 'A-01-03' }]
});

// Step 5: Verify SAP delivery created (via IDoc confirmation)
await waitFor(async () => {
  const delivery = await sapClient.call('BAPI_DELIVERYPROCESSING_GETLIST', {
    SALES_ORDER: sapOrderId
  });
  return delivery.length > 0 &#x26;&#x26; delivery[0].DELVRY_STATUS === 'C';
}, { timeout: 30000, interval: 3000 });

// Step 6: Verify invoice posted in SAP
await waitFor(async () => {
  const invoice = await sapClient.call('BAPI_BILLINGDOC_GETLIST', {
    REFDOCNUMBER: sapOrderId
  });
  return invoice.length > 0;
}, { timeout: 30000, interval: 3000 });

}); });

Procure-to-Pay Flow

describe('Procure-to-Pay E2E Flow', () => { it('creates purchase requisition through to vendor payment', async () => { // Step 1: Create Purchase Requisition const prResult = await sapClient.call('BAPI_PR_CREATE', { PRHEADER: { PR_TYPE: 'NB', CTRL_IND: '' }, PRHEADERX: { PR_TYPE: 'X' }, PRITEMS: [{ MATERIAL: 'MAT-RAW-100', QUANTITY: 500, UNIT: 'EA', PLANT: '1000' }] }); expect(prResult.NUMBER).toBeDefined(); const prNumber = prResult.NUMBER;

// Step 2: Verify PR triggers sourcing (ME57 equivalent)
const sourcingResult = await sapClient.call('BAPI_PR_GETDETAIL', {
  NUMBER: prNumber
});
expect(sourcingResult.PRITEM[0].PREQ_NO).toBe(prNumber);

// Step 3: Create Purchase Order from PR
const poResult = await sapClient.call('BAPI_PO_CREATE1', {
  POHEADER: { COMP_CODE: '1000', DOC_TYPE: 'NB', VENDOR: 'VEND-500' },
  POITEMS: [{ PO_ITEM: '00010', MATERIAL: 'MAT-RAW-100', QUANTITY: 500, PLANT: '1000' }]
});
expect(poResult.PO_NUMBER).toBeDefined();

// Step 4: Verify PO IDoc sent to vendor
const idocStatus = await sapClient.call('IDOC_STATUS_READ', {
  DOCNUM: poResult.IDOC_NUMBER
});
expect(idocStatus.STATUS).toBe('03'); // Successfully sent

}); });

SAP-Specific Testing Patterns

RFC/BAPI Testing

describe('SAP RFC/BAPI Testing', () => { it('validates BAPI return structure and error handling', async () => { // Test with valid input const result = await sapClient.call('BAPI_MATERIAL_GETDETAIL', { MATERIAL: 'MAT-EXIST' }); expect(result.RETURN.TYPE).not.toBe('E'); expect(result.MATERIAL_GENERAL_DATA.MATL_DESC).toBeDefined();

// Test with invalid material
const errorResult = await sapClient.call('BAPI_MATERIAL_GETDETAIL', {
  MATERIAL: 'MAT-NONEXIST'
});
expect(errorResult.RETURN.TYPE).toBe('E');
expect(errorResult.RETURN.MESSAGE).toContain('does not exist');

});

it('handles BAPI commit correctly', async () => { const createResult = await sapClient.call('BAPI_SALESORDER_CREATEFROMDAT2', { ORDER_HEADER_IN: { DOC_TYPE: 'OR', SALES_ORG: '1000', DISTR_CHAN: '10', DIVISION: '00' }, ORDER_PARTNERS: [{ PARTN_ROLE: 'AG', PARTN_NUMB: 'CUST-1000' }], ORDER_ITEMS_IN: [{ MATERIAL: 'MAT-500', TARGET_QTY: 10 }] });

// Must call BAPI_TRANSACTION_COMMIT to persist
await sapClient.call('BAPI_TRANSACTION_COMMIT', { WAIT: 'X' });

// Verify order exists after commit
const getResult = await sapClient.call('BAPI_SALESORDER_GETDETAIL', {
  SALESDOCUMENT: createResult.SALESDOCUMENT
});
expect(getResult.ORDER_HEADER_OUT.SD_DOC_CAT).toBe('C');

}); });

IDoc Testing

describe('SAP IDoc Processing', () => { it('validates inbound IDoc creates correct SAP document', async () => { // Send IDoc via middleware const idocPayload = { IDOCTYP: 'ORDERS05', MESTYP: 'ORDERS', SNDPOR: 'SAPEXT', SNDPRT: 'LS', SNDPRN: 'EXTERN', RCVPOR: 'SAPSI1', RCVPRT: 'LS', RCVPRN: 'SAPCLNT100', segments: { E1EDK01: { BELNR: 'EXT-PO-001' }, E1EDK14: [{ QUESSION: '001', ORGID: '1000' }], E1EDP01: [{ POSEX: '000010', MENGE: '100', MENEE: 'EA', MATNR: 'MAT-500' }] } };

const idocNumber = await middlewareClient.sendIDoc(idocPayload);

// Wait for IDoc processing in SAP
await waitFor(async () => {
  const status = await sapClient.call('IDOC_STATUS_READ', { DOCNUM: idocNumber });
  return status.STATUS === '53'; // Application document posted successfully
}, { timeout: 60000, interval: 5000 });

// Verify SAP document was created
const sapDoc = await sapClient.call('BAPI_SALESORDER_GETLIST', {
  PURCHASE_ORDER_NO: 'EXT-PO-001'
});
expect(sapDoc).toHaveLength(1);

});

it('handles IDoc error status correctly', async () => { // Send IDoc with invalid material const idocPayload = buildIdocPayload({ materialNumber: 'INVALID-MAT' }); const idocNumber = await middlewareClient.sendIDoc(idocPayload);

await waitFor(async () => {
  const status = await sapClient.call('IDOC_STATUS_READ', { DOCNUM: idocNumber });
  return ['51', '56'].includes(status.STATUS); // Error statuses
}, { timeout: 60000 });

const status = await sapClient.call('IDOC_STATUS_READ', { DOCNUM: idocNumber });
expect(status.STATUS_TEXT).toContain('Material');

}); });

OData Service Testing

describe('SAP OData Service Testing', () => { it('validates OData entity CRUD operations', async () => { // CREATE const createResponse = await odataClient.post('/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder', { SalesOrderType: 'OR', SalesOrganization: '1000', DistributionChannel: '10', OrganizationDivision: '00', SoldToParty: 'CUST-1000' }); expect(createResponse.status).toBe(201); const salesOrder = createResponse.body.d.SalesOrder;

// READ with $expand
const readResponse = await odataClient.get(
  `/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder('${salesOrder}')?$expand=to_Item`
);
expect(readResponse.status).toBe(200);
expect(readResponse.body.d.SalesOrder).toBe(salesOrder);

// READ collection with $filter
const listResponse = await odataClient.get(
  `/sap/opu/odata/sap/API_SALES_ORDER_SRV/A_SalesOrder?$filter=SoldToParty eq 'CUST-1000'&#x26;$top=10`
);
expect(listResponse.status).toBe(200);
expect(listResponse.body.d.results.length).toBeGreaterThan(0);

});

it('validates OData $metadata contract', async () => { const metadata = await odataClient.get( '/sap/opu/odata/sap/API_SALES_ORDER_SRV/$metadata' ); expect(metadata.status).toBe(200);

const parsedMetadata = parseEdmx(metadata.body);
expect(parsedMetadata.entityTypes).toContain('A_SalesOrder');
expect(parsedMetadata.entityTypes).toContain('A_SalesOrderItem');

// Validate required properties exist
const salesOrderType = parsedMetadata.getEntityType('A_SalesOrder');
expect(salesOrderType.properties).toContain('SalesOrder');
expect(salesOrderType.properties).toContain('SalesOrderType');
expect(salesOrderType.navigationProperties).toContain('to_Item');

}); });

Fiori Launchpad Testing

describe('Fiori Launchpad App Testing', () => { it('validates Fiori tile loads and displays correct data', async () => { await page.goto(${fioriLaunchpadUrl}#SalesOrder-manage);

// Wait for OData call to complete
await page.waitForResponse(resp =>
  resp.url().includes('API_SALES_ORDER_SRV') &#x26;&#x26; resp.status() === 200
);

// Verify smart table loaded with data
const tableRows = await page.locator('table tbody tr');
expect(await tableRows.count()).toBeGreaterThan(0);

// Verify filter bar is functional
await page.fill('[data-sap-ui="filterField-SalesOrder"]', '1000000');
await page.click('[data-sap-ui="btnGo"]');

await page.waitForResponse(resp =>
  resp.url().includes("$filter=SalesOrder eq '1000000'")
);

}); });

Cross-System Data Validation

describe('Cross-System Data Consistency', () => { it('SAP inventory matches WMS inventory', async () => { const materials = ['MAT-100', 'MAT-200', 'MAT-300'];

for (const material of materials) {
  // Get SAP stock
  const sapStock = await sapClient.call('BAPI_MATERIAL_STOCK_REQ_LIST', {
    MATERIAL: material,
    PLANT: '1000'
  });
  const sapQuantity = parseFloat(sapStock.TOTAL_STOCK);

  // Get WMS inventory
  const wmsInventory = await wmsApi.get(`/inventory/${material}`);
  const wmsQuantity = wmsInventory.body.availableQuantity;

  expect(wmsQuantity).toBe(sapQuantity);
}

});

it('customer master data is consistent across systems', async () => { const customerId = 'CUST-1000';

const sapCustomer = await sapClient.call('BAPI_CUSTOMER_GETDETAIL', {
  CUSTOMERNO: customerId
});

const crmCustomer = await crmApi.get(`/customers/${customerId}`);
const wmsCustomer = await wmsApi.get(`/customers/${customerId}`);

// Core fields must match
expect(crmCustomer.body.name).toBe(sapCustomer.CUSTOMER_GENERAL_DATA.NAME);
expect(wmsCustomer.body.name).toBe(sapCustomer.CUSTOMER_GENERAL_DATA.NAME);
expect(crmCustomer.body.taxId).toBe(sapCustomer.CUSTOMER_GENERAL_DATA.TAX_NUMBER);

});

it('order status is synchronized across all systems', async () => { const orderId = 'ORD-SYNC-TEST';

// Create order and wait for propagation
await api.post('/orders', { orderId, customerId: 'CUST-1000', items: [{ sku: 'MAT-100', qty: 5 }] });
await sleep(10000); // Allow for async propagation

const webStatus = (await api.get(`/orders/${orderId}`)).body.status;
const sapStatus = (await sapClient.call('BAPI_SALESORDER_GETDETAIL', {
  SALESDOCUMENT: orderId
})).ORDER_HEADER_OUT.DOC_STATUS;
const wmsStatus = (await wmsApi.get(`/orders/${orderId}`)).body.status;

// All systems should reflect same logical status
expect(mapSapStatus(sapStatus)).toBe(webStatus);
expect(mapWmsStatus(wmsStatus)).toBe(webStatus);

}); });

Enterprise Test Data Management

describe('Enterprise Test Data Strategy', () => { // Master data setup - reusable across test suites const masterDataFixture = { async setup() { // Create customer in SAP (source of truth) const customer = await sapClient.call('BAPI_CUSTOMER_CREATE', { PI_COPYREFERENCE: { SALESORG: '1000', DISTR_CHAN: '10' }, PI_PERSONALDATA: { FIRSTNAME: 'Test', LASTNAME: Customer-${Date.now()} } }); await sapClient.call('BAPI_TRANSACTION_COMMIT', { WAIT: 'X' });

  // Wait for replication to downstream systems
  await waitFor(async () => {
    const wms = await wmsApi.get(`/customers/${customer.CUSTOMERNO}`);
    return wms.status === 200;
  }, { timeout: 60000 });

  return { customerId: customer.CUSTOMERNO };
},

async teardown(customerId) {
  // Mark customer for deletion (SAP does not hard delete)
  await sapClient.call('BAPI_CUSTOMER_CHANGEFROMDATA', {
    CUSTOMERNO: customerId,
    PI_PERSONALDATA: { DELETION_FLAG: 'X' }
  });
  await sapClient.call('BAPI_TRANSACTION_COMMIT', { WAIT: 'X' });
}

};

let testCustomer;

beforeAll(async () => { testCustomer = await masterDataFixture.setup(); });

afterAll(async () => { await masterDataFixture.teardown(testCustomer.customerId); });

it('uses properly replicated test customer', async () => { const order = await api.post('/orders', { customerId: testCustomer.customerId, items: [{ sku: 'MAT-100', qty: 1 }] }); expect(order.status).toBe(201); }); });

Environment Strategy

Enterprise Environment Matrix

Environment Purpose Data SAP Client Access

Sandbox (SBX) Developer exploration Sample data 100 Open

Development (DEV) Feature development Synthetic 200 Dev team

Integration (INT) Cross-system testing Controlled sets 300 QE + Dev

Quality (QAS) Release validation Production-like 400 QE only

Pre-Production (PRE) Final verification Masked production copy 500 Release team

Production (PRD) Live system Real data 600 Operations

// Environment-aware test configuration const envConfig = { INT: { sapClient: '300', sapHost: 'sap-int.company.com', wmsHost: 'wms-int.company.com', middlewareHost: 'esb-int.company.com', testDataStrategy: 'synthetic', // Create and teardown maxParallelTests: 5 }, QAS: { sapClient: '400', sapHost: 'sap-qas.company.com', wmsHost: 'wms-qas.company.com', middlewareHost: 'esb-qas.company.com', testDataStrategy: 'reserved-sets', // Pre-allocated test data maxParallelTests: 3 } };

function getTestConfig() { const env = process.env.TEST_ENVIRONMENT || 'INT'; return envConfig[env]; }

Enterprise Quality Gates

QCSD Flags for Enterprise Systems

const enterpriseFlags = { HAS_MIDDLEWARE: true, // ESB/middleware in the flow HAS_SAP_INTEGRATION: true, // SAP RFC/BAPI/IDoc/OData calls HAS_AUTHORIZATION: true, // SoD and role-based access HAS_CROSS_SYSTEM_DATA: true, // Data replicated across systems HAS_ASYNC_PROCESSING: true, // IDoc, message queue, batch jobs HAS_LEGACY_PROTOCOL: true // SOAP, RFC, flat-file, EDI };

Release Readiness Criteria

describe('Enterprise Release Readiness', () => { it('passes all enterprise quality gates', async () => { const gates = [ { name: 'Cross-System Data Consistency', check: async () => { const results = await runDataReconciliation(['MAT-100', 'MAT-200']); return results.every(r => r.consistent); } }, { name: 'IDoc Processing Success Rate', check: async () => { const stats = await sapClient.call('IDOC_STATUS_SUMMARY', { PERIOD: 'LAST_24H' }); const successRate = stats.SUCCESS / stats.TOTAL; return successRate >= 0.99; // 99% threshold } }, { name: 'Middleware Error Rate', check: async () => { const errors = await middlewareMonitor.getErrorCount({ period: '24h' }); return errors < 10; // Less than 10 errors in 24h } }, { name: 'SoD Violations', check: async () => { const violations = await sodAnalyzer.scan({ scope: 'changed-roles' }); return violations.critical === 0; } }, { name: 'E2E Order Flow', check: async () => { const result = await runE2EOrderFlow(); return result.allStepsCompleted && result.duration < 120000; // Under 2 minutes } } ];

for (const gate of gates) {
  const passed = await gate.check();
  expect(passed).toBe(true);
}

}); });

Best Practices

Do This

  • Map the full E2E flow before writing any tests

  • Test each integration boundary separately AND end-to-end

  • Use SAP-aware test data management (create, use, teardown with BAPIs)

  • Validate data consistency across all systems after each integration event

  • Include IDoc status monitoring in your test assertions

  • Test authorization (SoD) as part of every enterprise release gate

  • Use service virtualization for systems that are hard to provision

Avoid This

  • Testing SAP only through the UI (Fiori/SAP GUI) without API-level tests

  • Ignoring IDoc error statuses (51, 56) and only checking happy path

  • Sharing test data between teams without reservation mechanisms

  • Testing enterprise flows only in sandbox environments

  • Skipping BAPI_TRANSACTION_COMMIT after create/update BAPIs

  • Assuming cross-system data is immediately consistent (allow for async propagation)

  • Deploying without verifying SoD compliance for changed authorization roles

Agent-Assisted Enterprise Testing

// SAP RFC/BAPI function testing await Task("SAP BAPI Validation", { bapis: ['BAPI_SALESORDER_CREATEFROMDAT2', 'BAPI_SALESORDER_GETDETAIL'], testScenarios: ['valid-input', 'missing-required', 'invalid-customer', 'commit-rollback'], validateReturnStructure: true }, "qe-sap-rfc-tester");

// IDoc processing validation await Task("IDoc Flow Validation", { idocType: 'ORDERS05', direction: 'inbound', testStatuses: ['53-success', '51-application-error', '56-syntax-error'], validateSapDocument: true }, "qe-sap-idoc-tester");

// OData contract testing await Task("OData Service Contract Test", { serviceUrl: '/sap/opu/odata/sap/API_SALES_ORDER_SRV', validateMetadata: true, testCrud: true, testFilters: ['$filter', '$expand', '$orderby', '$top', '$skip'], checkBackwardCompatibility: true }, "qe-odata-contract-tester");

// SOAP service validation await Task("SOAP Service Validation", { wsdl: 'services/OrderService.wsdl', operations: ['CreateOrder', 'GetOrderStatus'], testWsSecurity: true, testFaultCodes: true }, "qe-soap-tester");

// Middleware flow validation await Task("Middleware Integration Test", { flow: 'order-to-cash', stages: ['web-api', 'esb-routing', 'sap-rfc', 'wms-api'], testDLQ: true, testCompensation: true, validateCorrelationIds: true }, "qe-middleware-validator");

// Message broker testing await Task("Message Broker Validation", { broker: 'ibm-mq', queues: ['orders.inbound', 'orders.sap', 'orders.wms', 'orders.dlq'], testOrdering: true, testRetry: true }, "qe-message-broker-tester");

// Segregation of Duties analysis await Task("SoD Conflict Analysis", { scope: 'changed-roles', ruleSet: 'sap-standard', criticalTransactions: ['ME21N', 'ME29N', 'MIRO', 'FB60'], reportFormat: 'matrix' }, "qe-sod-analyzer");

Agent Coordination Hints

Memory Namespace

aqe/enterprise-integration/ flows/ - E2E flow definitions and test results sap/ rfc-results/ - RFC/BAPI test outcomes idoc-results/ - IDoc processing validation odata-contracts/ - OData $metadata snapshots and diffs middleware/ routing/ - ESB routing test results transforms/ - Transformation validation cross-system/ reconciliation/ - Data consistency reports master-data/ - Master data sync validation authorization/ sod-reports/ - SoD conflict analysis results role-testing/ - Role and permission test results quality-gates/ - Enterprise release gate results

Fleet Coordination

const enterpriseFleet = await FleetManager.coordinate({ strategy: 'enterprise-integration', agents: [ 'qe-sap-rfc-tester', // SAP function module testing 'qe-sap-idoc-tester', // IDoc processing validation 'qe-odata-contract-tester', // OData/Fiori service testing 'qe-soap-tester', // SOAP/ESB endpoint testing 'qe-message-broker-tester', // Message broker flows 'qe-middleware-validator', // Middleware routing/transformation 'qe-sod-analyzer' // Authorization and SoD ], topology: 'hierarchical' });

await enterpriseFleet.execute({ flow: 'order-to-cash', phases: [ { name: 'contract-validation', agents: ['qe-odata-contract-tester', 'qe-soap-tester'] }, { name: 'integration-testing', agents: ['qe-sap-rfc-tester', 'qe-sap-idoc-tester', 'qe-middleware-validator'] }, { name: 'e2e-validation', agents: ['qe-message-broker-tester'] }, { name: 'authorization-check', agents: ['qe-sod-analyzer'] } ] });

Related Skills

  • api-testing-patterns - REST/GraphQL API testing fundamentals

  • contract-testing - Consumer-driven contract testing with Pact

  • middleware-testing-patterns - ESB, routing, transformation, DLQ

  • wms-testing-patterns - Warehouse management system testing

  • chaos-engineering-resilience - Fault injection for enterprise systems

  • database-testing - Database integrity and migration testing

  • security-testing - Security and authorization testing

Remember

Enterprise integration testing is about verifying that independently correct systems work correctly together. No system is an island. Test each integration boundary with protocol-appropriate tools, validate cross-system data consistency, and always include authorization and SoD checks. The biggest risks are in the seams between systems, not within them.

With Agents: Use specialized agents for each integration type (RFC, IDoc, OData, SOAP, messaging). Orchestrate them hierarchically: contract validation first, then integration testing, then E2E flows, then authorization. The enterprise fleet catches cross-system inconsistencies that single-system testing misses entirely.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

api-testing-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

compatibility-testing

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

regression-testing

No summary provided by upstream source.

Repository SourceNeeds Review