IP Library Granted Patent US 9,009,677
Granted Patent B2
US 9,009,677 · App. 13/845,449 · Granted Apr 14, 2015

Application testing and analysis

Inventors: Feng Zhao (Bellevue, WA); Niels Brouwers (Delft, NL); Nicholas Donald Atkins Lane (Beijing, CN); Chieh-Jan Mike Liang (Beijing, CN); Ranveer Chandra (Bellevue, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F11/3688G06F11/3414G06F11/3466G06F11/3409G06F2201/865
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 9,009,677
App. No.
13/845,449
Granted
Apr 14, 2015
Kind
B2
Abstract

Application testing and analysis may include performing perturbations to affect an environment associated with the application executing on a user device without affecting other applications executing on the user device. The execution of the application may be traced while the perturbations are being performed to determine an amount of resources of the user device consumed by the application and to determine whether a performance of the application was degraded.

Claims (61)

1. A method comprising:

under control of one or more processors configured with executable instructions,

executing test code that includes commands;

performing, based on the commands, one or more perturbations of an environment associated with an application executing on a user device;

monitoring a performance of the application while the one or more perturbations are being performed;

creating a gathered data file based on the monitoring, the gathered data file identifying resources of the user device that were consumed by the application during execution of the test code;

correlating the gathered data file with the one or more perturbations; and

identifying, based on the correlating, at least one condition that caused the performance of the application to change.

2. The method as recited in claim 1 , wherein monitoring the performance of the application while the one or more perturbations are being performed comprises:

monitoring the performance of one or more processes spawned by the application.

3. The method as recited in claim 1 , wherein the one or more perturbations comprise emulating a reduced clock speed of the one or more processors of the environment associated the application.

4. The method as recited in claim 1 , wherein the one or more perturbations comprise reducing an amount of memory available to the application.

5. The method as recited in claim 1 , wherein:

the one or more perturbations comprise emulating input from at least one sensor of the user device,

the at least one sensor includes at least one of an accelerometer to provide data associated with movement of the user device or a global positioning system (GPS) to provide a location of the user device.

6. The method as recited in claim 1 , wherein the one or more perturbations comprise emulating a network problem by at least one of:

reducing a bandwidth available to the application,

simulating user interaction with the application,

increasing a latency of data being received by the application, or

dropping one or more packets of the data being sent to the application.

7. The method as recited in claim 1 , wherein monitoring the performance of the application while the one or more perturbations are being performed comprises:

identifying at least one process associated with the application; and

monitoring resources being consumed by the at least one process.

8. The method as recited in claim 7 , where the resources include:

an amount of a memory that is being consumed by the at least one process, and

an amount of cycles of the one or more processors that is being consumed by the at least one process.

9. One or more computer-readable storage media storing instructions executable by one or more processors to perform operations comprising:

executing commands in a script;

perturbing, based on the commands in the script, an environment of an application being executed by the one or more processors;

monitoring, during execution of the script, consumption of a plurality of resources by the application;

correlating the commands in the script with the consumption of the plurality of resources by the application; and

determining, based on the correlating, that consumption by the application of at least one resource of the plurality of resources exceeds a threshold.

10. The one or more computer-readable storage media as recited in claim 9 , the operations further comprising:

identifying one or more conditions emulated by the test code that caused the consumption of the at least one resource to exceed the threshold; and

determining a modification to the application to reduce the consumption of the at least one resource by the application during the one or more conditions.

11. The one or more computer-readable storage media as recited in claim 9 , the plurality of resources including at least one of a memory associated with a user device, a number of execution cycles of at least one of the one or more processors, a transmission bandwidth, or a receiving bandwidth.

12. The one or more computer-readable storage media as recited in claim 9 , wherein perturbing the environment of the application comprises reducing an execution speed of the application.

13. The one or more computer-readable storage media as recited in claim 9 , wherein perturbing the environment of the application comprises reducing an amount of memory available to the application.

14. The one or more computer-readable storage media as recited in claim 9 , wherein perturbing the environment of the application comprises increasing a latency of data being received by the application.

15. The one or more computer-readable storage media as recited in claim 9 , wherein perturbing the environment of the application comprises dropping one or more data packets that are addressed to the application.

16. A user device comprising:

one or more processors; and

one or more computer-readable media storing instructions, the instructions executable by the one or more processors to perform acts comprising:

performing one or more perturbations to an environment of an application executing on the user device without affecting other applications executing on the user device;

tracing execution of the application while the perturbations are being performed;

determining resources of the user device consumed by the application based on the tracing;

correlating the resources consumed by the application with the one or more perturbations;

determining, based on the correlating, that a performance of the application was degraded by at least one perturbation of the one or more perturbations.

17. The computing device as recited in claim 16 , the acts further comprising:

in response to determining that the performance of the application was degraded, determining at least one perturbation of the one or more perturbations that caused the performance of the application to be degraded.

18. The computing device as recited in claim 16 , wherein the resources of the user device consumed by the application include one or more of:

a size of the one or more computer-readable storage media,

an amount of execution cycles of at least one processor of the one or more processors,

a number of packets sent by the user device, or

a number of packets received by the user device.

19. The computing device as recited in claim 16 , further comprising:

performing additional perturbations to affect an environment of a second application executing on the user device;

tracing execution of the second application while the additional perturbations are being performed;

determining the resources of the user device consumed by the second application; and

determining that the performance of the second application was degraded by at least one of the additional perturbations.

20. The computing device as recited in claim 19 , wherein the perturbations to affect the environment of the application are performed substantially contemporaneously with the additional perturbations to affect the environment of the second application.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →
CORRECTIVE ASSIGNMENT TO CORRECT THE THE ASSIGNOR NAME FROM "NICHOLAS D. LANE" TO "NICHOLAS DONALD ATKINS LANE" PREVIOUSLY RECORDED ON REEL 030036 FRAME 0280. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT OF THE ASSIGNOR'S INTEREST. Recorded Mar 3, 2014
From: ZHAO, FENG; BROUWERS, NIELS; LANE, NICHOLAS DONALD ATKINS; LIANG, CHIEH-JAN MIKE; CHANDRA, RANVEER
To: MICROSOFT CORPORATION
Reel/Frame 032381/0139 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 18, 2013
From: ZHAO, FENG; BROUWERS, NIELS; LANE, NICHOLAS D.; LIANG, CHIEH-JAN MIKE; CHANDRA, RANVEER
To: MICROSOFT CORPORATION
Reel/Frame 030036/0280 →
Continuity (1)
Related Publication 20140282425A1 · Sep 18, 2014