Project Requirements

The current set of known requirements for the GenTest software is outlined in the table below. It provides a brief requirement description to the best of our knowledge. All of the requirements represent a good-faith attempt to compile system requirements as described in the Project Overview document and gained from discussions with Dr. Groce regarding DeepState. Any or all of the requirements above are subject to change and are not in any way final. As we continue forward in discussing design solutions, these requirements will serve as the foundation for design considerations and other important details to come.

Requirement ID

Requirement Name

Description

REQ#1

Command Line Interface

The GenTest software shall provide a command line interface tool that:

  1. takes in the test harness file (test.cpp),
  2. an input binary file (foo.test),
  3. an output directory,
  4. a unit testing framework,  and
  5. outputs the appropriate standalone unit test in the framework of the developer’s choice in the current or specified directory.

REQ#2

Test Harness Conversion

The GenTest software shall be able to convert test harness C++ (test.cpp) files into a standalone unit test.

REQ#3

Binary Insertion

The GenTest software shall be able to insert binaries from Fuzzing and Symbolic Execution written in generated binary files (foo.test) into standalone unit tests.

REQ#4

Low-Level Primitives

The GenTest software shall be able to convert all low-level primitives supported by DeepState into the output unit testing framework. This include the following C primitives:

  • Char
  • String
  • Short
  • Int
  • Unsigned
  • Long
  • Int8_t
  • Uint8_t
  • Int16_t
  • Uint16_t
  • Int32_t
  • Uint32_t
  • Int64_t
  • uint64_t

REQ#5

Nested Structure Support

The GenTest software shall be able to convert all nested-structures in C to the appropriate format in the Unit Testing framework. (nested-structures to be defined at a later date).

REQ#6

Capture and Response

The GenTest software shall be able to capture and respond to called functions and/or chosen values from a finite set.

REQ#7

Creation of Pointer Structures based on DeepState harness

The GenTest software must be able to create pointers to store information on decisions made in DeepState harnesses.

REQ #8

C Compatibility

The GenTest software will provide compatibility with C.

REQ#9

Documentation

All GenTest software will be thoroughly documented and provide real-world integration tutorials.