Test execution engine
A test execution engine is a type of software used to test software, hardware or complete systems.

Synonyms of test execution engine:
 Test executive
 Test manager
 Test sequencer

A test execution engine may appear in two forms:
 Module of a test software suite (test bench) or an integrated development environment
 Stand-alone application software

Concept 
The test execution engine does not carry any information about the tested product. Only the test specification and the test data carries information about the tested product.

The test specification is software. Test specification is sometimes referred to as test sequence, which consists of test steps.

The test specification should be stored in the test repository in a text format (such as source code).
Test data is sometimes generated by some test data generator tool.
Test data can be stored in binary or text files.
Test data should also be stored in the test repository together with the test specification.

Test specification is selected, loaded and executed by the test execution engine similarly, as application software is selected, loaded and executed by operation systems. The test execution engine should not operate on the tested object directly, but through plug-in modules similarly as an application software accesses devices through drivers which are installed on the operation system.

The difference between the concept of test execution engine and operation system is that the test execution engine monitors, presents and stores the status, results, time stamp, length and other information for every Test Step of a Test Sequence, but typically an operation system does not perform such profiling of a software execution.

Reasons for using a test execution engine:
 Test results are stored and can be viewed in a uniform way, independent of the type of the test
 Easier to keep track of the changes
 Easier to reuse components developed for testing

Functions 
Main functions of a test execution engine:
 Select a test type to execute. Selection can be automatic or manual.
 Load the specification of the selected test type by opening a file from the local file system or downloading it from a Server, depending on where the test repository is stored.
 Execute the test through the use of testing tools (SW test) or instruments (HW test), while showing the progress and accepting control from the operator (for example to Abort)
 Present the outcome (such as Passed, Failed or Aborted) of test Steps and the complete Sequence to the operator
 Store the Test Results in report files

An advanced test execution engine may have additional functions, such as:
 Store the test results in a Database
 Load test result back from the Database
 Present the test results as raw data.
 Present the test results in a processed format. (Statistics)
 Authenticate the operators.

Advanced functions of the test execution engine maybe less important for software testing, but these advanced features could be essential when executing hardware/system tests.

Operations types 
A test execution engine by executing a test specification, it may perform different types of operations on the product, such as:
 Verification
 Calibration
 Programming
 Downloading firmware to the product's nonvolatile memory (Flash)
 Personalization: programming with unique parameters, like a serial number or a MAC address

If the subject is a software, verification is the only possible operation.

Execution engine