摘要:
In one embodiment, a method includes automated extraction of the Page Transition Graph (PTG) model for model-based analysis of web applications. Specifically, the method includes accessing one or more JAVASERVER PAGES (JSP) files, one or more Extensible Markup Language (XML) configuration files, and one or more class files of a web application; parsing the JSP files and extracting data in the JSP files that encode user or server events supported by the event-driven application; parsing the XML configuration files and extracting data in the XML configuration files that encode definitions used by the event-driven application when deployed; parsing the class files and extracting data in the class files that encode one or more actions or one or more forms used by the event-driven application when deployed; storing the extracted data as an abstract syntax tree (AST); populating a page transition graph (PTG) of the event-driven application based on the AST; and checking the extracted PTG for navigation errors such as unreachable pages, ghost pages and undefined transitions.
摘要:
In particular embodiments, an environment for modular software analysis is generated for a software module under analysis. Irrelevancy analysis is performed on the software module to determine that, for each input datum to the software module, whether the input datum is relevant or irrelevant with respect to branch coverage of the module code. A default concrete value is assigned to each irrelevant input datum. A set of concrete values is calculated for each relevant input datum using symbolic execution. The environment is enhanced such that default concrete values are passed to the software module for the irrelevant input data and sets of concrete values generated using symbolic execution are passed to the software module for the relevant input data. The enhanced environment enables module analysis with as much as 100% branch coverage of the module code.
摘要:
In one embodiment, a method includes accessing an event-driven application input by a user, the event-driven application comprising source code, one or more use cases input by the user for the event-driven application, and one or more functional requirements input by the user for the event-driven application; parsing the use cases and the functional requirements according to the predefined syntax to construct one or more validation modules for validating the event-driven application without any modification to the source code of the event-driven application for validation purposes; formally validating the event-driven application using the validation modules without relying on assertions inserted into the source code of the event-driven application for validation purposes; and if the formal validation finds one or more defects in the event-driven application, generating output for communication to the user identifying the defects.
摘要:
In one embodiment, a method includes specifying an application-specific navigation model of an event-driven application; analyzing the navigation model with respect to one or more navigation requirements of the event-driven application to determine whether the event-driven application satisfies the navigation requirements; generating one or more drivers for the event-driven application based on the navigation model; and traversing the navigation model with the application-independent event drivers to analyze the event-driven application with respect to one or more business-logic requirements of the event-driven application to determine whether the event-driven application satisfies the business-logic requirements.
摘要:
In one embodiment, a method includes specifying an application-specific navigation model of an event-driven application; analyzing the navigation model with respect to one or more navigation requirements of the event-driven application to determine whether the event-driven application satisfies the navigation requirements; generating one or more drivers for the event-driven application based on the navigation model; and traversing the navigation model with the application-independent event drivers to analyze the event-driven application with respect to one or more business-logic requirements of the event-driven application to determine whether the event-driven application satisfies the business-logic requirements.
摘要:
In particular embodiments, an environment for modular software analysis is generated for a software module under analysis. Irrelevancy analysis is performed on the software module to determine that, for each input datum to the software module, whether the input datum is relevant or irrelevant with respect to branch coverage of the module code. A default concrete value is assigned to each irrelevant input datum. A set of concrete values is calculated for each relevant input datum using symbolic execution. The environment is enhanced such that default concrete values are passed to the software module for the irrelevant input data and sets of concrete values generated using symbolic execution are passed to the software module for the relevant input data. The enhanced environment enables module analysis with as much as 100% branch coverage of the module code.
摘要:
A method for detecting software defects includes selecting from a target program comprising a plurality of modules a first module for evaluation and isolating the first module. The method also includes iteratively performing the following steps until the first module has been reduced such that a validation program is able to determine whether the first module contains a defect: generating an environment surrounding the first module, the generated environment preserving at least one external constraint on the first module; reducing the size of the first module; and reducing the number of program states associated with the first module.
摘要:
In one embodiment, a method includes automated extraction of the Page Transition Graph (PTG) model for model-based analysis of web applications. Specifically, the method includes accessing one or more JAVASERVER PAGES (JSP) files, one or more Extensible Markup Language (XML) configuration files, and one or more class files of a web application; parsing the JSP files and extracting data in the JSP files that encode user or server events supported by the event-driven application; parsing the XML configuration files and extracting data in the XML configuration files that encode definitions used by the event-driven application when deployed; parsing the class files and extracting data in the class files that encode one or more actions or one or more forms used by the event-driven application when deployed; storing the extracted data as an abstract syntax tree (AST); populating a page transition graph (PTG) of the event-driven application based on the AST; and checking the extracted PTG for navigation errors such as unreachable pages, ghost pages and undefined transitions.
摘要:
In one embodiment, a method includes accessing an event-driven application input by a user, the event-driven application comprising source code, one or more use cases input by the user for the event-driven application, and one or more functional requirements input by the user for the event-driven application; parsing the use cases and the functional requirements according to the predefined syntax to construct one or more validation modules for validating the event-driven application without any modification to the source code of the event-driven application for validation purposes; formally validating the event-driven application using the validation modules without relying on assertions inserted into the source code of the event-driven application for validation purposes; and if the formal validation finds one or more defects in the event-driven application, generating output for communication to the user identifying the defects.
摘要:
A method for detecting software defects includes selecting from a target program comprising a plurality of modules a first module for evaluation and isolating the first module. The method also includes iteratively performing the following steps until the first module has been reduced such that a validation program is able to determine whether the first module contains a defect: generating an environment surrounding the first module, the generated environment preserving at least one external constraint on the first module; reducing the size of the first module; and reducing the number of program states associated with the first module.