Dynamic test input generation for web applications

  • Authors:
  • Gary Wassermann;Dachuan Yu;Ajay Chander;Dinakar Dhurjati;Hiroshi Inamura;Zhendong Su

  • Affiliations:
  • University of California, Davis, Davis, CA, USA;DoCoMo USA Labs, Palo Alto, CA, USA;DoCoMo USA Labs, Palo Alta, CA, USA;DoCoMo USA Labs, Palo Alto, CA, USA;DoCoMo USA Labs, Palo Alto, CA, USA;University of California, Davis, Davis, CA, USA

  • Venue:
  • ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
  • Year:
  • 2008

Quantified Score

Hi-index 0.00

Visualization

Abstract

Web applications routinely handle sensitive data, and many people rely on them to support various daily activities, so errors can have severe and broad-reaching consequences. Unlike most desktop applications, many web applications are written in scripting languages, such as PHP. The dynamic features commonly supported by these languages significantly inhibit static analysis and existing static analysis of these languages can fail to produce meaningful results on realworld web applications. Automated test input generation using the concolic testing framework has proven useful for finding bugs and improving test coverage on C and Java programs, which generally emphasize numeric values and pointer-based data structures. However, scripting languages, such as PHP, promote a style of programming for developing web applications that emphasizes string values, objects, and arrays. In this paper, we propose an automated input test generation algorithm that uses runtime values to analyze dynamic code, models the semantics of string operations, and handles operations whose argument and return values may not share a common type. As in the standard concolic testing framework, our algorithm gathers constraints during symbolic execution. Our algorithm resolves constraints over multiple types by considering each variable instance individually, so that it only needs to invert each operation. By recording constraints selectively, our implementation successfully finds bugs in real-world web applications which state-of-the-art static analysis tools fail to analyze.