IP Library › Granted Patent US 10,489,258
Granted Patent B2
US 10,489,258 · App. 15/652,363 · Granted Nov 26, 2019

Negative path testing in a bootloader environment

Inventors: Daniel Muller (Palo Alto, CA); Andrei Warkentin (Cambridge, MA)
Assignee: Vmware, Inc.
G06F11/26G06F9/4401G06F11/0793G06F11/2205G06F11/2215G06F11/3065
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 10,489,258
App. No.
15/652,363
Granted
Nov 26, 2019
Kind
B2
Abstract

Negative path testing in a bootloader environment can include backing up a global state of a component under test, injecting a fault to trigger an error in the component under test in a bootloader environment, executing error handling instructions until a checkpoint of the component under test in the bootloader environment is reached, restoring the global state to the component under test from the backup, and restarting the component under test.

Claims (59)

1. A method for negative path testing in a bootloader environment, comprising:

backing up a global state of a component under test in an executable and linkable format (ELF) file, the ELF file comprising a first portion of an enhanced data segment containing a mutable version of the global state and a second portion of the enhanced data segment containing an immutable version of the initialized data;

injecting a fault to trigger an error in the component under test in a bootloader environment;

executing error handling instructions until a checkpoint of the component under test in the bootloader environment is reached;

restoring the global state to the component under test from the backup by copying the immutable version of the initialized data to the first portion of the enhanced data segment; and

restarting the component under test.

2. The method of claim 1 , wherein restarting the component under test comprises restarting the component under test while in the bootloader environment.

3. The method of claim 1 , wherein the method further includes injecting a second fault to trigger a second error in the component under test after restarting the component under test.

4. The method of claim 1 , wherein the method comprises iteratively:

backing up the global state of the component under test;

injecting a different fault to trigger a different error in the component under test for each iteration;

executing error handling instructions until a checkpoint of the component under test;

restoring the global state to the component under test from a previous backup; and

restarting the component under test.

5. The method of claim 4 , wherein the method further includes:

maintaining a count of a quantity of iterations that is stored separately from the global state such that the count is not backed up or restored; and

iterating until the count equals a predefined quantity of modelled errors.

6. The method of claim 1 , wherein the method comprises iteratively:

injecting a different fault to trigger a different error in the component under test for each iteration without iteratively backing up the global state;

executing error handling instructions until a checkpoint of the component under test is reached;

restoring the global state to the component under test from the backup; and

restarting the component under test.

7. The method of claim 1 , wherein the method includes, prior to injecting the fault:

modelling the error in the component under test; and

developing the error handling instructions based on the modelling.

8. The method of claim 1 , wherein backing up the global state comprises backing up the global state of the component under test prior to any changes to the global state during execution of the component under test.

9. A non-transitory machine-readable medium storing instructions for negative path testing in a bootloader environment executable by a processing resource to:

make a data segment twice as large as a sum of data sections;

label a start and an end of a first portion of the data segment containing initialized data;

label a start and an end of a second portion of the data segment comprising extra space;

clear uninitialized data as an entry point to a component under test;

save the initialized data between the start and the end of the first portion to the second portion;

inject a fault to trigger an error in the component under test;

perform error handling for the component under test;

restore the initialized data by copying data between the start and the end of the second portion to the first portion; and

branch to the entry point to the component under test.

10. The medium of claim 9 , further including instructions to perform processing resource architecture-specific operations to ensure that the processing resource is in an expected state for the entry point to the component under test prior to branching to the entry point.

11. The medium of claim 9 , wherein the instructions are executed in a bootloader environment.

12. The medium of claim 9 , further including instructions to maintain a state of a plurality of variables across reentrances to the entry point in a particular section separate from the data sections;

wherein that the particular section is not subject to the instructions to save and to restore the initialized data.

13. The medium of claim 12 , wherein a first variable of the plurality of variables comprises a counter for a quantity of reentries to the entry point.

14. The medium of claim 13 , wherein a second variable of the plurality of variables comprises a value of a user-selectable option that defines whether the initialized data is to be saved each time the entry point is reentered after an initial reentry.

15. The medium of claim 12 , wherein the instructions to inject the fault comprises instructions to inject a different fault to trigger a different error for each reentrance to the entry point.

16. The medium of claim 9 , wherein the instructions to clear the uninitialized data comprise instructions to clear the uninitialized data as part of a low level language portion of the component under test; and

wherein the instructions to save the initialized data comprise instructions to save the initialized data as a first call of a high level language portion of the component under test.

17. The medium of claim 9 , wherein the instructions to save the initialized data to the second portion comprise instructions to save the initialized data beginning at the start of the second portion; and

wherein the instructions to restore the initialized data to the first portion comprise instructions to restore the initialized data beginning at the start of the first portion.

18. A system for negative path testing in a bootloader environment, comprising:

a processing resource; and

a memory resource coupled to the processing resource and storing instructions executable by the processing resource to:

back up mutable portions of a component under test in an executable and linkable format (ELF) file, the ELF file comprising a first portion of an enhanced data segment containing a mutable version of the global state and a second portion of the enhanced data segment containing an immutable version of the initialized data;

inject a first fault to trigger a first error in the component under test in a bootloader environment;

execute error handling instructions until a first checkpoint of the component under test in the bootloader environment;

restore the mutable portions to the component under test from the backup by copying the immutable version of the initialized data to the first portion of the enhanced data segment;

restart the component under test;

inject a second fault to trigger a second error in the component under test in the bootloader environment; and

execute error handling instructions until a second checkpoint of the component under test in the bootloader environment.

19. The system of claim 18 , wherein the first checkpoint comprises a success or a failure of the error handling code to address the first error.

20. The system of claim 19 , wherein the memory resource stores instructions executable by the processing resource to report whether the error handling instructions successfully addressed the first error and the second error.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 18, 2017
From: MULLER, DANIEL; WARKENTIN, ANDREI
To: VMWARE, INC.
Reel/Frame 043029/0100 →
Continuity (1)
Related Publication 20190026203A1 · Jan 24, 2019