IP Library Granted Patent US 11,055,568
Granted Patent B2
US 11,055,568 · App. 16/522,710 · Granted Jul 6, 2021

Method and system that measure application response time

Inventors: Lan Vu (Palo Alto, CA); Uday Kurkure (Palo Alto, CA); Hari Sivaraman (Palo Alto, CA); Aravind Kumar Rao Bappanadu (Palo Alto, CA); Mohit Mangal (Bengaluru, IN)
Assignee: VMware, Inc.
G06K9/6234G06F11/3065G06F11/3419G06K9/6256G06K9/6269G06K9/6276G06N3/08
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,055,568
App. No.
16/522,710
Granted
Jul 6, 2021
Kind
B2
Abstract

The current document is directed to methods and systems that employ image-recognition and machine learning to directly measure application-program response time from changes in a user interface displayed by the application program in much the same way that application-program users perceive response times when manually issuing commands through the user interface. The currently disclosed methods and systems involve building recognition models, training the recognition models to recognize application-program states from changes in the user interface displayed by the application program, and using the recognition models to monitor the user interface displayed by an application program to detect and assign timestamps to application-program state changes, from which the elapsed time for various different operations is computed. This approach mirrors the methods by which users perceive application-program response time when users initiate operations through the application-program-provided user interface and visually monitor progress of the operations as reflected in changes to the displayed application-program user interface.

Claims (70)

1. An application-program performance-measuring system comprising:

one or more computer systems, each having one or more processors, one or more memories, and one or more data-storage devices;

a recognition-model-generation subsystem that executes on one or more of the one or more computer systems and that

processes images of an application-program user interface displayed during execution of the application program to generate training data sets, and

uses the training data sets to train the one or more recognizers to identify application-program states corresponding to images of the application-program user interface; and

a performance-monitoring subsystem that executes on one or more of the one or more computer systems and that

captures images of the application-program user interface displayed during execution of the application program, each captured image associated with a timestamp and additional metadata,

applies the one or more recognizers to determine application-program states corresponding to the captured images of the application-program user interface,

identifies executions of application-program operations as time-ordered sequences of application-program states associated with captured images of the application-program user interface,

determines a response time for each identified operation from timestamps associated with the captured images of the application-program user interface associated with the time-ordered sequence of application-program states corresponding to the operation, and

uses the determined response times to generate a performance report and/or store performance data in a datastore.

2. The application-program performance-measuring system of claim 1 wherein the recognizers are machine-learning subsystems that recognize sets of one or more features in captured images of the application-program user interface indicative of particular application-program states, receiving a captured image as input and outputting an application-program state as output.

3. The application-program performance-measuring system of claim 2 wherein each type of recognizer is associated with a set of weights that encode the results of training and a set of configuration parameters.

4. The application-program performance-measuring system of claim 3 wherein recognizer types include:

convolutional neural networks

deep convolutional neural networks;

neural networks,

deep neural networks,

support-vector machines,

linear-discriminant-analysis-based recognizers,

principle-component-analysis-based recognizers, and

k-nearest-neighbor-based recognizers.

5. The application-program performance-measuring system of claim 1 wherein, in addition to capturing images of the application-program user interface displayed during execution of the application program, the performance-monitoring subsystem records user-interface events detected during execution of the application program, each detected user-interface event associated with a timestamp and additional metadata.

6. The application-program performance-measuring system of claim 5 wherein the user-interface events include mouse-click events, keyboard-input events, and other events associated with the application-program user interface.

7. The application-program performance-measuring system of claim 5 wherein each application-program operation monitored by the application-program performance-measuring system is represented by a transition of the application program from an initial application-program state to a final application-program state.

8. The application-program performance-measuring system of claim 7 wherein the initial application-program state and final application-program state are each associated with one or more events, the one or more events selected from:

captured images of the application-program user interface that are each associated with metadata, including a timestamp; and

user-interface events that are each associated with metadata, including a timestamp.

9. The application-program performance-measuring system of claim 8 wherein the response time for each executed application-program operation is determined by:

adjusting the timestamp values associated with a first event of the one or more events that represent the initial application-program state and with a second event of the one or more events that represent the final application-program state using latency values associated with the first and second events; and

computing a difference in the adjusted timestamp values.

10. A method for measuring the performance of an application program, the method comprising:

capturing images of an application-program user interface displayed during execution of the application program, each captured image associated with a timestamp and additional metadata;

recording user-interface events detected during execution of the application program, each user-interface event associated with a timestamp and additional metadata;

applying one or more recognizers to determine application-program states corresponding to the captured images of the application-program user interface;

identifying executions of application-program operations as time-ordered sequences of application-program states associated with captured images of the application-program user interface;

determining a response time for each identified operation from timestamps associated with the captured images of the application-program user interface associated with the time-ordered sequence of application-program states corresponding to the operation; and

using the determined response times to generate a performance report and/or store performance data in a datastore.

11. The method of claim 10 further comprising:

processing images of the application-program user interface displayed during execution of the application program to generate training data sets; and

using the training data sets to train the one or more recognizers to identify application-program states corresponding to images of the application-program user interface.

12. The method of claim 11 wherein the recognizers are machine-learning subsystems that recognize sets of one or more features in captured images of the application-program user interface indicative of particular application-program states, receiving a captured image as input and outputting an application-program state as output.

13. The method of claim 11 wherein each type of recognizer is associated with a set of weights that encode the results of training and a set of configuration parameters.

14. The method of claim 13 wherein recognizer types include:

convolutional neural networks

deep convolutional neural networks;

neural networks,

deep neural networks,

support-vector machines,

linear-discriminant-analysis-based recognizers,

principle-component-analysis-based recognizers, and

k-nearest-neighbor-based recognizers.

15. The method of claim 13 wherein the user-interface events include mouse-click events, keyboard-input events, and other events associated with the application-program user interface.

16. The method of claim 15 wherein each application-program operation is represented by a transition of the application program from an initial application-program state to a final application-program state.

17. The method of claim 16 wherein the initial application-program state and final application-program state are each associated with one or more events, the one or more events selected from:

captured images of the application-program user interface that are each associated with metadata, including a timestamp; and

user-interface events that are each associated with metadata, including a timestamp.

18. The method of claim 17 wherein the response time for each executed application-program operation is determined by:

adjusting the timestamp values associated with a first event of the one or more events that represent the initial application-program state and with a second event of the one or more events that represent the final application-program state using latency values associated with the first and second events; and

computing a difference in the adjusted timestamp values.

19. Computer instructions, stored in a physical data-storage device, that, when executed by one or more processors within an application-program performance-measuring system, control the application-program performance-measuring system to:

capture images of an application-program user interface displayed during execution of the application program, each captured image associated with a timestamp and additional metadata;

record user-interface events detected during execution of the application program, each user-interface event associated with a timestamp and additional metadata;

apply one or more recognizers to determine application-program states corresponding to the captured images of the application-program user interface;

identify executions of application-program operations as time-ordered sequences of application-program states associated with captured images of the application-program user interface;

determine a response time for each identified operation from timestamps associated with the captured images of the application-program user interface associated with the time-ordered sequence of application-program states corresponding to the operation; and

use the determined response times to generate a performance report and/or store performance data in a datastore.

20. The computer instructions of claim 19 wherein the computer instruction further control the application-program performance-measuring system to:

process images of the application-program user interface displayed during execution of the application program to generate training data sets; and

use the training data sets to train the one or more recognizers to identify application-program states corresponding to images of the application-program user interface.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2019
From: VU, LAN; KURKURE, UDAY; SIVARAMAN, HARI; BAPPANADU, ARAVIND KUMAR RAO; MANGAL, MOHIT
To: VMWARE, INC.
Reel/Frame 050976/0508 →