Architecture & integration

Below is a representation of the whole system.

User (dev / QA)Swittest serviceSystem under testCLI (test) - option #1Frontend (test) - option #2S3 bucket (Test data)coreCLI (probe)POIengineRest APIsocket
User (dev / QA)Swittest serviceSystem under testCLI (test) - option #1Frontend (test) - option #2S3 bucket (Test data)coreCLI (probe)POIengineRest APIsocket

Architecture

Swittest is a robust testing service exposed via a RESTful API. At its core, the Swittest Engine manages the entire lifecycle of a test, including vector orchestration, transaction triggering, and automated results analysis.

Data & connectivity

  • Storage: Test vectors are persisted in a dedicated S3 bucket.
  • System Under Test (SUT): The target environment consists of a Point of Interaction (POI) terminal and an optional Card Emulation Probe (utilized when hardware virtualization is not feasible).
  • Communication: Both the POI and the probe establish persistent connections to the Swittest Socket Server via TCP/IP, utilizing the proprietary Swittest protocol.

User Interfaces

Switstack offers two distinct interfaces to interact with the service, both providing feature parity:

  • CLI Tool: A Python-based interface optimized for developers and power users seeking automation and speed.
  • Web Frontend: A graphical interface designed for users who prefer visual interaction and dashboarding.

Note

The CLI tool and the web frontend offer the same features.

Integration

Swittest is designed for seamless integration into existing workflows:

Moka Ecosystem

If your environment uses Moka, Switstack provides a turnkey solution with all necessary packages and applications pre-configured for immediate deployment.

Custom Integration

For non-Moka environments, integration is straightforward:

  • Develop a lightweight test application in your language of choice.
  • Establish a connection to the Swittest Socket Server.
  • Implement the methods defined in the Swittest protocol methods.

Flow

A typical testing flow would look as follows:

User (CLI / Frontend)SwittestPOI Connect (socket) Get POI ID POI ID Run test(s) Set Switcloud credentials OK Run test(s) Test(s) results Test(s) resultsLogin (optional)Repeat
User (CLI / Frontend)SwittestPOI Connect (socket) Get POI ID POI ID Run test(s) Set Switcloud credentials OK Run test(s) Test(s) results Test(s) resultsLogin (optional)Repeat

Data management

This is probably the hardest part. After the test application received the test data (which includes the EMV configuration and the transaction data) it needs to convert Swittest data model into the targetted EMV L2's data model and call the right EMV L2 SDK's APIs to configure it and run the transaction.

Feel free to contact us should you need assistance with it.