Input |
Any Linux executable file compiled from C/C++ or Java source code that meets the requirements and preconditions. |
Output |
- Pass: The test does not uncover unexpected program behavior and confirms the probability for unexpected behavior not to occur.
- Fail: The test does uncover unexpected program behavior and logs the test probes that caused this behavior.
|
Preconditions |
- The Peregrine header file is included.
- Two Peregrine code delimiters are added around the code segment to be tested.
- (Selected) variables have been replaced with matching Peregrine probe types in the marked out code segment.
- 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.
|