Automated pattern detection in software for optimal instrumentation
US-9021448-B1 · Apr 28, 2015 · US
US10241901B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-10241901-B2 |
| Application number | US-201514730692-A |
| Country | US |
| Kind code | B2 |
| Filing date | Jun 4, 2015 |
| Priority date | Oct 6, 2014 |
| Publication date | Mar 26, 2019 |
| Grant date | Mar 26, 2019 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
A system for performance testing a web application initializes to be instrumented a subset of methods of the web application to be tested in response to a request, and then tests the application based on the subset of methods. The system generates an instrumented call tree and corresponding stack traces for each request in response to the testing, and determines one or more methods that take longer than a predetermined time period to execute using the instrumented call trees and the stack traces. The system then determines additional methods to be tested and adds the determined additional methods to the subset of methods and repeats the testing.
Opening claim text (preview).
What is claimed is: 1. A non-transitory computer readable medium having instructions stored thereon that, when executed by a processor, cause the processor to performance test a web application, the performance testing comprising: initializing to be instrumented a subset of Java methods of the web application to be tested in response to a web page request; testing the application based on the subset of Java methods, wherein the testing comprises instrumentation; generating an instrumented call tree and corresponding stack traces for each web page request that has a duration that exceeds a predefined time in response to the testing, wherein the stack traces are stored in a Java heap; automatically determining boundaries between the generated stack traces to determine one or more of the subset of Java methods that take longer than a predetermined time period to execute using the instrumented call trees and the stack traces; determining, based on the one or more of the subset of Java methods that take longer than the predetermined time period to execute, additional Java methods to be tested, the additional Java methods to be tested determined from the boundaries between the stack traces; adding the additional Java methods that take longer than the predetermined time period to execute to the subset of Java methods and repeating the testing, including testing the additional Java methods; and wherein the automatically determining boundaries between stack traces generated for each web page request that has the duration that exceeds the predefined time comprises forming trees of stack traces, each stack trace comprising a tree having a root node and a plurality of leaf nodes, and for each boundary of a stack trace tree determining a last method of a leaving node and a first method of an entering node. 2. The computer readable medium of claim 1 , the automatically determining boundaries between two stack traces comprises: initializing a root of a first tree to one node containing all stack trace elements of a first stack trace of the request; looping on the remaining stack traces of the request comprising: comparing the stack trace elements of the stack trace with the stack trace elements of the rightmost branch of the tree; identifying a point where there is a difference; breaking the last node into two branches; and forming a new node of the rightmost branch of the tree from the remaining stack trace elements of the stack trace. 3. The computer readable medium of claim 1 , further comprising determining duplicate stack traces and only keeping one copy of the duplicate stack traces in the Java heap. 4. The computer readable medium of claim 1 , further comprising using stop methods to store only one copy of a plurality of repeated stack traces, wherein the web page request is a Hypertext Transfer Protocol (HTTP) request. 5. The computer readable medium of claim 2 , wherein the testing comprises deploying a Java agent on an instrumented server. 6. The computer readable medium of claim 1 , wherein the adding the additional Java methods comprises using a .war web application without restarting a corresponding Java virtual machine. 7. The computer readable medium of claim 5 , wherein the instrumented server is a WebLogic server and wherein the initializing the subset of Java methods comprises using a servlet and Enterprise JavaBeans entry points of the WebLogic server as the subset of Java methods. 8. A method for performance testing a web application, the method comprising: initializing to be instrumented a subset of Java methods of the web application to be tested in response to a web page request; testing the application based on the subset of Java methods, wherein the testing comprises instrumentation; generating an instrumented call tree and corresponding stack traces for each web page request that has a duration that exceeds a predefined time in response to the testing, wherein the stack traces are stored in a Java heap; automatically determining boundaries between the generated stack traces to determine one or more of the subset of Java methods that take longer than a predetermined time period to execute using the instrumented call trees and the stack traces; determining, based on the one or more of the subset of Java methods that take longer than the predetermined time period to execute, additional Java methods to be tested, the additional Java methods to be tested determined from the boundaries between the stack traces; adding the additional Java methods that take longer than the predetermined time period to execute to the subset of Java methods and repeating the testing, including testing the additional Java methods; and wherein the automatically determining boundaries between stack traces generated for each web page request that has the duration that exceeds the predefined time comprises forming trees of stack traces, each stack trace comprising a tree having a root node and a plurality of leaf nodes, and for each boundary of a stack trace tree determining a last method of a leaving node and a first method of an entering node. 9. The method of claim 8 , the automatically determining boundaries between two stack traces comprises: initializing a root of a first tree to one node containing all stack trace elements of a first stack trace of the request; looping on the remaining stack traces of the request comprising: comparing the stack trace elements of the stack trace with the stack trace elements of the rightmost branch of the tree; identifying a point where there is a difference; breaking the last node into two branches; and forming a new node of the rightmost branch of the tree from the remaining stack trace elements of the stack trace. 10. The method of claim 8 , further comprising determining duplicate stack traces and only keeping one copy of the duplicate stack traces in the Java heap. 11. The method of claim 8 , further comprising using stop methods to store only one copy of a plurality of repeated stack traces, wherein the web page request is a Hypertext Transfer Protocol (HTTP) request. 12. The method of claim 9 , wherein the testing comprises deploying a Java agent on an instrumented server. 13. The method of claim 8 , wherein the adding the additional Java methods comprises using a .war web application without restarting a corresponding Java virtual machine. 14. The method of claim 12 , wherein the instrumented server is a WebLogic server and wherein the initializing the subset of Java methods comprises using a servlet and Enterprise JavaBeans entry points of the WebLogic server as the subset of Java methods. 15. A system for performance testing a web application, the system comprising: an analyzing module configured to initialize to be instrumented a subset of Java methods of the web application to be tested in response to a web page request; a Java agent configured to test the application based on the subset of Java methods, wherein the test comprises instrumentation; the analyzing module further configured to: generate an instrumented call tree and corresponding stack traces for each web page request that has a duration that exceeds a predefined time in response to the testing, wherein the stack traces are stored in a Java heap; automatically determine boundaries between the generated stack traces to determine one or more of the subset of Java methods that take longer than a predetermined time period to execute using the instrumented call trees and the stack traces; determine, based on the one or more of the subset of Java methods that take longer than the predetermined
Monitoring of systems including the internet · CPC title
Visualisation of programs or trace data · CPC title
Functional testing · CPC title
by tracing the execution of the program · CPC title
Test management · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.