1. A method for optimized testing of vulnerabilities in an application, the method comprising: generating a first probe directed to determine whether an application is vulnerable to a first type of attack; analyzing one or more responses from the application based on the application responding to the first probe; in response to determining that the one or more responses from the application validate a first hypothesis about one or more vulnerabilities associated with the application, generating at least a second probe to further verify the first hypothesis, wherein the second probe focuses on discovering additional details about the application's vulnerabilities to the first type of attack or a second type of attack.