IP Library › Granted Patent US 11,086,759
Granted Patent B2
US 11,086,759 · App. 16/583,540 · Granted Aug 10, 2021

System and method for probe injection for code coverage

Inventors: Eran Sher (Kfar Saba, IL); Alon Eizenman (Kfar Saba, IL); Nadav Yeheskel (Kfar Saba, IL); Alon Weiss (Kfar Saba, IL)
Assignee: SeaLights Technologies LTD
G06F11/3644
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,086,759
App. No.
16/583,540
Granted
Aug 10, 2021
Kind
B2
Abstract

A system and methods for efficiently injecting probes to executable code, which is then executed. Such probes may be used for example to examine the behavior of the code during execution. Optionally analyzing the behavior of the code during execution is used as part of a testing strategy for the code.

Claims (16)

1. A system for injecting probes to executable code, comprising a first computational device, said first computational device comprising a probe engine for determining one or more probes for injection; a second computational device comprising a probe analyzer for determining a cost of injecting said probe, wherein said probes for injection are selected according to said cost and according to an amount of code coverage, and an execution processor for executing the executable code, in which the probes are injected from the probe engine to the executable code, which is then executed to determine code coverage according to probe execution performance; wherein said probe engine determines said one or more probes for an amount of coverage with a predefined performance impact wherein said probe engine determines said amount of coverage according to statistical analysis; wherein said statistical analysis is performed to determine one or more time sensitive and/or performance sensitive measures for probe injection; and wherein said execution processor comprises a plurality of execution processors and said probe engine dynamically injects said probes to a subset of said execution processors.

2. The system of claim 1 , wherein said measures determine coverage information from production systems with predefined impact on the CPU and RAM resources of the execution processor.

3. The system of claim 1 , wherein said probe engine dynamically injects said probes for a predefined duration over a periodic plurality of times.

4. The system of claim 1 , further comprising a plurality of listener agents, each agent being operated by said first or second computational device, each agent receiving results from injecting said probes and sending said results to said probe engine for analysis to determine said coverage.

5. The system of claim 4 , wherein each listener agent selects a subset of probes from said probe engine for injection to said executable code of each execution processor.

6. The system of claim 4 , wherein at least one listener agent randomly selects executable code for injection and selects a probe for injection according to said randomly selected executable code.

7. The system of claim 1 , wherein said probe engine dynamically injects said probes until said probes have been executed a maximum number of times.

8. The system of claim 1 , wherein said probe engine dynamically injects said probes to a portion of said execution code.

9. The system of claim 8 , wherein said portion is selected from the group consisting of a class and a method.

10. The system of claim 8 , further comprising a listener agent, wherein said listener agent dynamically selects probe placement for a plurality of different portions of code.

11. The system of claim 1 , wherein said probe engine dynamically injects said probes and assigns a lower priority to probes in code having a higher frequency of use according to statistical analysis of historical data.

12. The system of claim 1 , wherein each computational device comprises a processor and a memory, wherein said memory stores a defined native instruction set of codes; wherein said processor is configured to perform a defined set of basic operations in response to receiving a corresponding basic instruction selected from said defined native instruction set of codes; wherein said first computational device comprises a first set of machine codes selected from the native instruction set for receiving information about said executable code, a second set of machine codes selected from the native instruction set for analyzing said executable code to determine a plurality of potential probes and a third set of machine codes selected from the native instruction set for selecting said probes for injection from said potential probes according to said cost.

13. The system of claim 1 , wherein said first and second computational devices are the same computational device.

14. The system of claim 1 , wherein said statistical analysis is performed to optimize selection of probes according to impact on runtime as calculated according to a number of times each probe is executed, an amount of memory required for execution and processing time required for execution.

15. A system for injecting probes to executable code, comprising a first computational device, said first computational device comprising a probe engine for determining one or more probes for injection; a second computational device comprising a probe analyzer for determining a cost of injecting said probe, wherein said probes for injection are selected according to said cost and according to an amount of code coverage, wherein in said selection of probes for injection according to said cost, a lowest static cost of the probes is determined according to a static analysis of the executable code and probes which have the lowest static cost are selected, and an execution processor for executing the executable code, in which the selected probes are injected from the probe engine to the executable code, which is then executed to determine code coverage according to probe execution performance; wherein said probe engine determines said one or more probes for an amount of coverage with a predefined performance impact wherein said probe engine determines said amount of coverage according to statistical analysis; wherein said statistical analysis is performed to determine one or more time sensitive and/or performance sensitive measures for probe injection; and wherein said execution processor comprises a plurality of execution processors and said probe engine dynamically injects said probes to a subset of said execution processors.

16. The system of claim 15 , wherein said selection of probes for injection according to said cost is further determined to optimize selection of probes according to impact on runtime as calculated according to a number of times each probe is executed, an amount of memory required for execution and processing time required for execution.

Assignments (5)
MERGER AND CHANGE OF NAME Recorded Mar 5, 2025
From: SEALIGHTS TECHNOLOGIES LTD; TRICENTIS ISRAEL LTD
To: TRICENTIS ISRAEL LTD
Reel/Frame 070407/0200 →
RELEASE OF SECURITY INTEREST Recorded Jul 10, 2024
From: SILICON VALLEY BANK, A DIVISION OF FIRST-CITIZENS BANK & TRUST COMPANY
To: SEALIGHTS TECHNOLOGIES LTD.
Reel/Frame 067944/0642 →
SECURITY INTEREST Recorded Jan 19, 2022
From: SEALIGHTS TECHNOLOGIES LTD.
To: SILICON VALLEY BANK
Reel/Frame 058698/0052 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2021
From: SHER, ERAN; EIZENMAN, ALON; YEHESKEL, NADAV; WEISS, ALON
To: SEALIGHTS TECHNOLOGIES LTD.
Reel/Frame 056498/0752 →
SECURITY INTEREST Recorded Sep 8, 2020
From: SEALIGHTS TECHNOLOGIES LTD.
To: SILICON VALLEY BANK
Reel/Frame 053713/0100 →
Continuity (2)
Provisional Application 62737162 · Sep 27, 2018
Related Publication 20200104239A1 · Apr 2, 2020
Cited By (1)
US 12,547,516