IP Library Granted Patent US 7,334,162
Granted Patent B1
US 7,334,162 · App. 10/767,845 · Granted Feb 19, 2008

Dynamic distribution of test execution

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 7,334,162
App. No.
10/767,845
Granted
Feb 19, 2008
Kind
B1
Abstract

Computing devices are tested by providing a suite of test programs on a server for execution by a plurality of identical computing devices that are coupled to the server. A respective unique identifier is assigned to each of the plurality of the computing devices, for use in communicating with the server. The test programs are downloaded from the server for execution by the computing devices coupled thereto, so that at different computing devices execute different test programs substantially simultaneously. The server receives messages from the computing devices with respect to execution of the test programs, each of the messages containing the respective unique identifier, and controls the execution of the test programs in the suite based on the messages. The server dynamically distributes the test programs to a changing population of the computing devices, optimizing the distribution so as to minimize the time to complete the suite.

Claims (63)

1. A method for testing computing devices, the method comprising:

providing a suite of test programs on a server for execution by a plurality of said computing devices that are coupled to said server;

distributing different ones of said test programs from said server to said computing devices for concurrent execution thereof by said computing devices;

receiving messages from said computing devices upon completion of said execution of said distributed test programs; in response to receiving said messages, iterating said step of distributing test programs until all of said test programs in said suite have been executed;

in response to one of said computing devices being detached from said server, marking unexecuted ones of said test programs that were distributed to said one of said computing devices to indicate that these test programs were not executed by said one of said computing devices.

2. The method according to claim 1 , wherein said test programs are distributed as JAR files and JAD files.

3. The method according to claim 2 , wherein said JAD files are constructed responsively to said messages.

4. The method according to claim 1 , further comprising:

dynamically coupling a new computing device to said server; and

reallocating said test programs to said computing devices and said new computing device.

5. The method according to claim 1 , further comprising

prior to distributing said test programs for execution, receiving requests at said server from said computing devices requesting said server to provide test programs to said computing devices; and

receiving additional requests at said server from said computing devices with respect to said execution of said test programs to determine a next test to execute at each of the corresponding computing devices.

6. The method according to claim 1 , wherein said distributing test programs comprises removing said different ones of said test programs from a stack.

7. The method according to claim 1 , wherein said distributing test programs comprises assigning said different ones of said test programs in groups comprising a plurality of said test programs so as to minimize a completion time of said suite.

8. A computer software product, comprising a computer-readable storage medium in which computer program instructions are stored, which instructions, when read by a computer, cause the computer to perform a method for testing computing devices, the method comprising:

accessing a suite of test programs on a server for execution by a plurality of said computing devices that are coupled to said server;

distributing different ones of said test programs from said server to said computing devices for concurrent execution thereof by said computing devices;

receiving messages from said computing devices upon completion of said execution of said distributed test programs;

in response to receiving said messages, iterating said step of distributing test programs until all of said test programs in said suite have been executed;

in response to one of said computing devices being detached from said server, marking unexecuted ones of said test programs that were distributed to said one of said computing devices to indicate that these test programs were not executed by said one of said computing devices.

9. The computer software product according to claim 8 , wherein said test programs are distributed as JAR files and JAD files.

10. The computer software product according to claim 9 , wherein said computer is further instructed to construct said JAD files responsively to said messages.

11. The computer software product according to claim 8 , wherein said computer is further instructed to perform the steps of:

dynamically coupling a new computing device to said server; and

reallocating said test programs to said computing devices and said new computing device.

12. The computer software product according to claim 8 , wherein said computer is further instructed to perform the step of:

dynamically detaching said one of said computing devices from said server.

13. The computer software product according to claim 8 , wherein said distributing test programs comprises removing said different ones of said test programs from a stack.

14. The computer software product according to claim 8 , wherein said distributing test programs comprises assigning said different ones of said test programs in groups comprising a plurality of said test programs so as to minimize a completion time of said suite.

15. A method for testing computing devices, the method comprising: providing a suite of test programs on a server for execution by a plurality of said computing devices that are coupled to said server; receiving requests at said server from said computing devices requesting said server to provide test programs to said computing devices; assigning a respective unique identifier to each of said computing devices, for use in communicating with said server; making respective allocations comprising different ones of said test programs for said computing devices; distributing said different ones of said test programs from said server to said computing devices for concurrent execution thereof by said computing devices; receiving messages at said server from said computing devices upon completion said execution of said distributed test programs, wherein each of said messages includes a request to determine a next test to execute at the corresponding computing device and also includes said respective unique identifier; in response to receiving said messages, iterating said step of distributing test programs until all of said test programs in said suite have been executed; detaching an attached one of said computing devices from said server; and marking unexecuted ones of said test programs that were distributed to said one of said computing devices to indicate that these test programs were not executed by said one of said computing devices.

16. The method according to claim 15 , wherein said step of making respective allocations is performed so as to minimize a completion time of said suite of test programs.

17. The method according to claim 15 , further comprising:

coupling a new computing device to said server; and

reallocating said test programs to said computing devices and said new computing device.

18. The method according to claim 15 , wherein said computing devices comprise MIDP-compliant devices, and

wherein said test programs comprise MIDlets, which are packaged in respective JAD files and JAR files, and

wherein allocating said test programs comprises downloading said JAD files and said JAR files to said MIDP-compliant devices.

19. A computer software product, comprising a computer-readable storage medium in which computer program instructions are stored, which instructions, when read by a computer, cause the computer to perform a method for testing computing devices, the method comprising: accessing a suite of test programs that are stored on a server for execution by a plurality of said computing devices that are coupled to said server; receiving requests at said server from said computing devices requesting said server to provide test programs to said computing devices; assigning a respective unique identifier to each of said plurality of said computing devices, for use in communicating with said server; making respective allocations comprising different ones of said test programs for said computing devices; distributing said different ones of said test programs from said server to said computing devices for concurrent execution thereof by said computing devices; receiving messages at said server from said computing devices upon completion said execution of said distributed test programs, wherein each of said messages includes a request to determine a next test to execute at the corresponding computing device and also includes said respective unique identifier; in response to receiving said messages, iterating said step of distributing test programs until all of said test programs in said suite have been executed detaching one of said computing devices from said server; and marking unexecuted ones of said test programs that were distributed to said one of said computing devices to indicate that these test programs were not executed by said one of said computing devices.

20. The computer software product according to claim 19 , wherein said step of making respective allocations is performed so as to minimize a completion time of said suite of test programs.

21. The computer software product according to claim 19 , wherein said computer is further instructed to perform the steps of:

coupling a new computing device to said server; and

reallocating said test programs to said computing devices and said new computing device.

22. The computer software product according to claim 19 , wherein said computing devices comprise MIDP-compliant devices, and

wherein said test programs comprise MIDlets, which are packaged in respective JAD files and JAR files, and

wherein allocating said test programs comprises downloading said JAD files and said JAR files to said MIDP-compliant devices.

23. A server for testing computing devices, comprising:

a communication interface for coupling a plurality of said computing devices thereto; and

a processor configured to access a suite of test programs for execution by said computing devices that are coupled to said server;

wherein said processor is configured to distribute different ones of said test programs via said communication interface to said computing devices for concurrent execution thereof by said computing devices;

wherein said processor is configured to receive messages via said communication interface from said computing devices indicating completion of said execution of said distributed test programs;

wherein, in response to receiving said messages, said processor is configured to distribute remaining ones of said test programs iteratively to said computing devices for execution thereof until all of said test programs in said suite have been executed;

wherein, in response to one of said computing devices being detached from said server, said processor is configured to mark unexecuted ones of said test programs that were distributed to said one of said computing devices to indicate that these test programs were not executed by said one of said computing devices.

24. The server according to claim 23 , wherein said test programs are distributed as JAR files and JAD files.

25. The server according to claim 24 , wherein said JAD files are constructed responsively to said messages.

26. The server according to claim 23 , wherein, in response to a new computing device being coupled to said server, said processor is configured to reallocate said test programs to said computing devices and said new computing device.

27. The server according to claim 23 , wherein said processor is configured to:

prior to distributing said test programs for execution, receive requests at said server from said computing devices requesting said server to provide test programs to said computing devices; and

receive additional requests at said server from said computing devices with respect to said execution of said test programs to determine a next test to execute at each of the corresponding computing devices.

28. The server according to claim 23 , wherein said processor is further configured to assign said different ones of said test programs in groups comprising a plurality of said test programs so as to minimize a completion time of said suite.

29. A server for testing computing devices, comprising: a communication interface for coupling a plurality of said computing devices thereto; and a processor configured to access a suite of test programs for execution by said computing devices that are coupled to said server; wherein said processor is configured to receive requests from said computing devices requesting said server to provide test programs to said computing devices; wherein said processor is configured to assign a respective unique identifier to each of said computing devices for use in communicating with said server; wherein said processor is configured to make respective allocations comprising different ones of said test programs for said computing devices; wherein said processor is configured to distribute said different ones of said test programs from said server to said computing devices for concurrent execution thereof by said computing devices; wherein said processor is configured to receive messages from said computing devices indicating completion of said execution of said distributed test programs, wherein each of said messages includes a request to determine a next test to execute at the corresponding computing device and also includes said respective unique identifier; wherein, in response to receiving said messages, said processor is configured to distribute remaining ones of said test programs iteratively to said computing devices for execution thereof until all of said test programs in said suite have been executed; wherein, in response to one of said computing devices being detached from said server, said processor is configured to mark unexecuted ones of said test programs that were distributed to said one of said computing devices to indicate that these test programs were not executed by said one of said computing devices.

30. The server according to claim 29 , wherein, in response to a new computing device being coupled to said server, said processor is configured to reallocate said test programs to said computing devices and said new computing device.

31. The server according to claim 29 , wherein said computing devices comprise MIDP-compliant devices, and said test programs comprise MIDlets, which are packaged in respective JAD files and JAR files, and wherein said processor has further instructions to allocating said test programs by downloading said JAD files and said JAR files to said MIDP-compliant devices.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037302/0899 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 5, 2004
From: VAKRAT, YANIV; ROSENMAN, VICTOR
To: SUN MICROSYSTEMS, INC.
Reel/Frame 015966/0434 →