Symbolic execution is a technique which allows for the systematic enumeration of feasible paths of a program. Symbolic execution uses a custom testing framework that runs a program on “symbolic” input and forks the program state whenever a conditional operation occurs on a symbolic value. Since the program is being executed, this technique does not produce any false alarms during testing.
Due to the large numbers of potential paths, and the complexities involved in transforming input source code, ExpoSE.js cannot run directly in the browser but requires a standalone application to do the testing. This makes it difficult to construct tests and demonstrate the framework.
The goal of this project is to construct a REST style web API which can test code and return results. This API will need to be able to handle tests that can take minutes or even hours to execute, and will also need to employ rate limiting so as not to overwhelm the server. In addition to this, a web frontend should be created which will allow for users to execute from a predefined test pack or run their own experiments and see the results.
Any relevant web technologies can be used for the front and backend services, but the following are easy to learn and work with:
Frontend: AngularJS, Bootstrap or Foundation
Server side: Either NodeJS & a server side framework like express; or Rust with a server library such as Hyper