Print Email Facebook Twitter Automatic invariant detection in dynamic web applications Title Automatic invariant detection in dynamic web applications Author Groeneveld, F. Mesbah, A. Van Deursen, A. Faculty Electrical Engineering, Mathematics and Computer Science Department Software Technology Date 2010-12-31 Abstract The complexity of modern web applications increases as client-side JavaScript and dynamic DOM programming are used to offer a more interactive web experience. In this paper, we focus on improving the dependability of such applications by automatically inferring invariants from the client-side and using those invariants for testing. By combining JavaScript code instrumentation and tracing we infer runtime program invariants. Furthermore, we dynamically analyze DOM-trees and use learning algorithms to detect template-based invariants per user interface state, across various states, as well as across multiple execution runs. Our open source implementation of the technique is agnostic to server-side technology and capable of automatically using the detected invariants for testing web applications. We demonstrate through a series of case studies that (1) codelevel and structural invariants exist in web applications with a large client-side state, (2) they can be automatically detected, (3) they can serve as regression test oracles Subject web applicationsinvariant detectiontest automation To reference this document use: http://resolver.tudelft.nl/uuid:df700052-3b1b-4e5c-98f1-5538138e44af Publisher Delft University of Technology, Software Engineering Research Group ISSN 1872-5392 Source Technical Report Series TUD-SERG-2010-037 Part of collection Institutional Repository Document type report Rights © 2010 The Author(s) . Software Engineering Research Group, Department of Software Technology, Faculty of Electrical Engineering, Mathematics and Computer Science, Delft University of Technology Files PDF TUD-SERG-2010-037.pdf 450.28 KB Close viewer /islandora/object/uuid:df700052-3b1b-4e5c-98f1-5538138e44af/datastream/OBJ/view