Hard- and Software Requirements

Hardware Architecture x86-64, AMD64
Operating System Linux-64, Debian (Ubuntu) or Red Hat (Fedora) based
Software C/C++ compiler (gcc or g++) or Java compiler (JDK with javac and java)

Testing Specifications

Input Any Linux executable file compiled from C/C++ or Java source code that meets the requirements and preconditions.
  1. Pass: The test does not uncover unexpected program behavior and confirms the probability for unexpected behavior not to occur.
  2. Fail: The test does uncover unexpected program behavior and logs the test probes that caused this behavior.
  1. The Peregrine header file is included.
  2. Two Peregrine code delimiters are added around the code segment to be tested.
  3. (Selected) variables have been replaced with matching Peregrine probe types in the marked out code segment.
  4. The program source code is compiled as usual to create an executable file and is additionally linked against the Peregrine library (C/C++) or preprocessed to include the Peregrine package (Java).
Time Complexity The Peregrine testing algorithm has constant time complexity of O(1).
Space Complexity The Peregrine testing algorithm has constant space complexity of O(1).
Program Control The Peregrine tester program and the program under test run in parallel and communicate through a shared memory area. The tester program controls the execution of the marked out code segment in vivo. It injects a continuous, high-speed stream of (pseudo-)random Peregrine Test Probes exactly there where it is most effective. The software developer runs the tester program through a command line interface, which is particularly useful for batch testing, or through a GUI.

Real-time Performance Testing is done at the execution level in real-time at the pace of the program under test. Performance of a typical test setup is determined by the time and space complexity of the marked out code segment.

Performance Example
Probe Width (bits) Probes per second Bits per second

64 8.3E6 533.3E6
32 10.1E6 323.2E6
16 11.0E6 175.8E6
8 11.9E6 95.2E6
4 11.9E6 47.6E6
2 11.9E6 23.8E6
1 11.9E6 11.9E6

The performance example shown in the table above has been measured on an x86-64 platform with an Intel E31230 CPU clocked at 3.2 GHz and with 4GB of internal memory running Ubuntu 20.04.05 LTS with Linux kernel version 5.15.0-67-generic.

© 2020-2022 Fluxica Computer Engineering. All rights reserved.