Ensuring adherence to protocol standards is essential for the creation of interoperable systems. To aid in this task, Ubilogix has developed a Test Harness solution capable of validating a wide variety of protocol implementations.

In short, the Ubilogix Test Harness consists of a test execution platform developed in Node.js and a browser-based User Interface. The solution is highly modular and extensible, and includes features that allow for versioning test scripts as well as results. Furthermore, its API allows for integration with a variety of Continuous Integration products.

Test Harness Components

Graphical User Interface

The Graphical User Interface is browser-based and developed with modern web technologies, leveraging HTML5, CSS3, and Javascript. It communicates with the Test Engine through its API endpoints, and may either be served alongside the Engine or be mounted as a standalone application, including on a remote host.

Engine

The Test Harness engine is implemented in Node.js, allowing for deployment across a wide array of host platforms, including Windows, Mac OS, and Linux (including embedded).

The engine exposes a set of “test primitives” which are used to implement test items. These scripts are then configured and grouped into builds by the end-user, who may execute said builds either via the UI or the API.

Application Programming Interface

The Test Harness REST API allows for programatically starting and managing test suite executions. Events and final results are reported to a configurable destination via webhooks, enabling the automation of complex test scenarios—even those requiring out-of-band actions.

Target DUT Management

A Device Under Test (DUT) is equipped with a structured representation of supported features, which in turn makes a set of applicable tests available to the user.

Test Builds

The end-user may compile DUTs and applicable test items into builds, enabling both targeted validations and widespread coverage control.

On executing a test build, the event log and results are stored in chronological order, and may either be reviewed via the UI or exported in JSON, allowing for custom post-processing.

Test Run UI

As a test build is run, the UI is updated in real-time as events transpire.

The same detail-rich interface is used for reviewing prior runs, whether local or exported.

Test Scripts

TTests are implemented in Javascript, and operate through parameterized bindings to the Test Engine primitives.

Within a test script, interactions and validations are grouped into logical units called test items. As a build is run, the enabled items are executevaluated in order, generating detailed logs and obtaining pass / fail verdicts.

In addition to interacting directly with the DUT, test items may define custom out-of-band actions, enabling flows which might otherwise not be automatable.

Custom Test Script Development

The end-user may utilize the available test primitives to write custom test scripts, which may then be managed and run in the same manner as all built-in test scripts. Custom script development is performed in Javascript, placing no restrictions on usage scenarios.

Custom Test Script Development

The end-user may utilize the available test primitives to write custom test scripts, which may then be managed and run in the same manner as all built-in test scripts. Custom script development is performed in Javascript, placing no restrictions on usage scenarios.