Constraint Programming for Dynamic Symbolic Execution of JavaScript. Amadini, R., Andrlon, M., Gange, G., Schachte, P., Søndergaard, H., & Stuckey, P. J. In Rousseau, L. & Stergiou, K., editors, Integration of Constraint Programming, Artificial Intelligence, and Operations Research: Proceedings of the 16th International Conference (CPAIOR 2019), volume 11494, of Lecture Notes in Computer Science, pages 1–19, 2019.
Constraint Programming for Dynamic Symbolic Execution of JavaScript [link]Paper  doi  abstract   bibtex   
Dynamic Symbolic Execution (DSE) combines concrete and symbolic execution, usually for the purpose of generating good test suites automatically. It relies on constraint solvers to solve path conditions and to generate new inputs to explore. DSE tools usually make use of SMT solvers for constraint solving. In this paper, we show that constraint programming (CP) is a powerful alternative or complementary technique for DSE. Specifically, we apply CP techniques for DSE of JavaScript, the de facto standard for web programming. We capture the JavaScript semantics with MiniZinc and integrate this approach into a tool we call \textscAratha. We use \textscG-Strings, a CP solver equipped with string variables, for solving path conditions, and we compare the performance of this approach against state-of-the-art SMT solvers. Experimental results, in terms of both speed and coverage, show the benefits of our approach, thus opening new research vistas for using CP techniques in the service of program analysis.
@inproceedings{Ama-And-Gan-Sch-Son-Stu_CPAIOR19,
  author    = {Roberto Amadini and 
		Mak Andrlon and 
		Graeme Gange and 
		Peter Schachte and 
		Harald S{\o}ndergaard and 
		Peter J. Stuckey},
  title     = {Constraint Programming for Dynamic Symbolic Execution of
                {JavaScript}},
  editor    = {L.-M. Rousseau and K. Stergiou},
  booktitle = {Integration of Constraint Programming, Artificial Intelligence,
		and Operations Research: Proceedings of the 16th International
		Conference (CPAIOR 2019)},
  series    = {Lecture Notes in Computer Science},
  volume    = {11494}, 
  pages     = {1--19},
  year      = {2019},
  doi       = {10.1007/978-3-030-19212-9_1},
  url_Paper = {https://minerva-access.unimelb.edu.au/rest/bitstreams/b999c802-90f6-5ce4-8b79-c298bfc62afa/retrieve},
  abstract  = {Dynamic Symbolic Execution (DSE) combines concrete and symbolic 
		execution, usually for the purpose of generating good test 
		suites automatically.  It relies on constraint solvers to solve
		path conditions and to generate new inputs to explore. DSE 
		tools usually make use of SMT solvers for constraint solving.
		In this paper, we show that constraint programming (CP) is a
		powerful alternative or complementary technique for DSE.
		Specifically, we apply CP techniques for DSE of JavaScript, the
		de facto standard for web programming. We capture the JavaScript
		semantics with MiniZinc and integrate this approach into a tool
		we call \textsc{Aratha}. We use \textsc{G-Strings}, a CP solver
		equipped with string variables, for solving path conditions, 
		and we compare the performance of this approach against 
		state-of-the-art SMT solvers. Experimental results, in terms of
		both speed and coverage, show the benefits of our approach,
		thus opening new research vistas for using CP techniques in 
		the service of program analysis.},
  keywords  = {Symbolic execution, Constraint programming, String solvers, JavaScript},
}

Downloads: 0