As software grows in size and complexity, it also becomes more interdependent. Multiple internal components often share state and data. Whether these dependencies are intentional or not, I have found that their mismanagement often poses several challenges to testing. My research seeks to make it easier to create reliable software by making testing more efficient and more effective through explicit knowledge of these hidden dependencies.
The first problem I address, reducing testing time, directly impacts the day-to-day work of every software developer, who are likely running tests daily if not more frequently on their code. Typical techniques for accelerating tests (like running only a subset of them, or running them in parallel) often can’t be applied soundly, since there may be hidden dependencies between tests. I have built several systems, VMVM and ElectricTest, that detect different sorts of dependencies between tests and use that information to soundly reduce testing time by several orders of magnitude. To enable more broad use of general dependency information for testing and other analyses, I created Phosphor, the first and only portable and performant dynamic taint tracking system for the JVM. Towards making testing more effective, I created Pebbles, which makes it easy for developers to specify data-related test oracles by thinking in terms of high level objects.
Jon is an Assistant Professor at George Mason University directing research in Software Engineering. His research interests mostly fall under the umbrella of Software Testing and Program Analysis. Jon’s recent research in accelerating software testing has been recognized with an ACM SIGSOFT Distinguished Paper Award (ICSE ‘14), and has been the basis for an industrial collaboration with the bay-area software build acceleration company Electric Cloud. Jon actively participates in the artifact evaluation program committees of ISSTA and OOPSLA, and has served several years as the Student Volunteer chair for OOPSLA.
14 November 2016