Documentation for a newer release is available. View Latest
Esta página no está disponible actualmente en Español. Si lo necesita, póngase en contacto con el servicio de asistencia de Icon (correo electrónico)

Icon Test Framework

The Icon Test Framework is a standalone, black-box focused, BDD orientated, testing application. It was developed alongside IPF with the goal of bootstrapping the feature-testing of a given target application through re-use of common assertions whilst also providing complete extensibility for project specific requirements. The core-framework is now fully independent and can be leverages for any level of system testing.

Motivation

IPF’s high-throughput, asynchronous and flexible nature meant that testing using existing test frameworks was a challenge. This reaffirmed the necessity of investing in a home-made test harness that can support such an application. There are several core principles that the test-fw is built against:

  • Black box - We need to ensure that we are testing to the application as a remote target system to ensure integration layer test coverage and increase confidence in what we ship.

  • BDD driven - We need to be able to derive our expected application behaviour directly from business requirements to ensure accurate feature coverage.

  • Extensible - We need to be able to facilitate effective testing of the different possible potential banks, schemes, configurations and technologies.

  • Parallelisable - We need to be able to run multiple tests concurrently to reduce build times and emulate real-world behaviour more closely.

What Does the Icon Test Framework Offer?

  • A core library of pre-built Gherkin BDD steps for sending, receiving and verifying messages.

  • Implementations of common transport protocols: RESTful HTTP, JMS (IBMMQ, ActiveMQ), SOAP.

  • Implementations of common message correlation strategies via domain concerns such as TransactionID vs OriginalTransactionID, or technical associations such as JMSCorrelationID

  • Domain agnostic property handling

  • Recipes for generating documents, including Freemarker integration

  • A growing library of powerful BDD evaluations, including inbuilt referencing of a previous messages, strict or loose checks and custom method invocation

  • Pluggable type conversions

  • Utility components for preparing the target environment prior to testing

  • A fully modular, outward facing library with Developer documentation, JavaDocs and a generated steps library

Core Dependencies

We have the following major technology dependencies

  • JBehave - A BDD test engine, chosen over Cucumber for its extensibility and built-in parallelisation.

  • DockerComposeRule - An (optional) environment utility for starting the target application though a set of configured docker-compose files.

  • Spring FrameworkThe classic application framework, used for dependency injection, template components and scheduling

  • JBehave Intellij Syntax Support provides syntax highlighting and autocompletion within .story files

Windows users, please set the equivalent environment variables for DockerComposeRule

DOCKER_COMPOSE_LOCATION=C:\Program Files\Docker\Docker\resources\bin
DOCKER_LOCATION=C:\Program Files\Docker\Docker\resources\bin