This software runs a suite of arbitrary software tests spanning various software languages and types of tests (unit level, system level, or file comparison tests). The dtest utility can be set to automate periodic testing of large suites of software, as well as running individual tests. It supports distributing multiple tests over multiple CPU cores, if available.
The dtest tool is a utility program (written in Python) that scans through a directory (and its subdirectories) and finds all directories that match a certain pattern (directory name starts with “test_” or “test-”) and then executes any tests in that directory as described in simple configuration files. The tests are completely arbitrary and are not tied to any specific programming language. A variety of tests is available to support comparing test output files with pre-validated versions. Dtest can be used in an automated testing environment or by an individual software developer to manually create or maintain individual tests. Dtest accumulates test results in data files that can be used for reporting test results by email or on a Web site.
At the time of creation, only unit-level testing utilities such as Junit, CppUnit, etc. existed that focused on tests for a specific language. The dtest utility generalizes these capabilities to arbitrary types of tests.
This work was done by Abhinandan Jain, Jonathan M. Cameron, and Steven Myint of Caltech for NASA’s Jet Propulsion Laboratory.
This software is available for commercial licensing. Please contact Daniel Broderick of the California Institute of Technology at
This Brief includes a Technical Support Package (TSP).

Dtest Testing Software
(reference NPO-48199) is currently available for download from the TSP library.
Don't have an account?
Overview
The document outlines the Dtest Testing Software developed by the Dartslab team at NASA's Jet Propulsion Laboratory (JPL) to enhance the quality of spacecraft and robotic simulations. Recognizing the need for extensive and automated regression testing, the team aimed to create a unified testing utility that could handle a diverse range of programming languages, including C++ and Python.
Dtest was designed to meet several high-level requirements: it automatically discovers and executes tests in specified directories, supports various test types, allows customization of tests, ensures output files match validated versions, and generates comprehensive reports on test results. The software scans directories for test cases, specifically those named with prefixes like 'test_' or 'test-', and executes the tests found within.
The core functionality of Dtest is governed by configuration files known as DTESTDEFS, which can be created in any test directory. These files dictate the specifics of test execution, including which tests to run, file comparison tests, and any files to be deleted post-execution. Importantly, settings in child directories can override those in parent directories, providing flexibility in test management.
The document also highlights the distinction between unit or functional tests, which focus on individual software functions, and system tests, which assess the overall behavior of the software. Dtest supports both categories, facilitating a comprehensive testing approach that ensures software reliability.
The development of Dtest was a response to the challenges faced in managing a wide array of tests within the Dartslab environment, where a cohesive and efficient testing strategy was essential for maintaining high-quality simulation software. The tool's capabilities are unique in the testing landscape, combining various functionalities that are typically found in separate testing utilities.
In summary, the Dtest Testing Software represents a significant advancement in automated testing for aerospace applications, enabling the Dartslab team to efficiently manage and execute a wide range of tests while ensuring the integrity and performance of their simulation software. The document serves as a technical support package, providing insights into the software's development, functionality, and the broader context of its application within NASA's innovative technology initiatives.

