Our research agenda in software testing focuses on developing innovative techniques and tools that bring automation and rigor to the tasks that are performed manually in testing services, often in an ad-hoc manner, and are prone to human lapses. Our research covers a broad spectrum of topics, including test automation, test data generation, test suite reduction, test repair, and regression testing.
For instance, we are developing tool-assisted techniques for converting manual test cases to automated test scripts, producing less-brittle test scripts, and patching test scripts across platforms, applications variants, and application versions.
Functional testing of enterprise applications is often driven by specifications in the form of business rules. We are developing notations for formally representing business rules, and techniques for automatically generating test data and operation sequences for exercising business rules.
For more information about our testing-related research, please see the TACT project page (US)
Our research agenda in debugging encompasses different debugging tasks (fault localization and fault repair), different application domains (database-driven applications and model transforms), and different analysis techniques (static and dynamic program analysis, text analysis, querying mechanisms, and visual trace-navigation techniques).
The Catapult Debugger uses static and dynamic analysis to help accelerate troubleshooting of ABAP programs, i.e., application-specific code used in SAP systems. We apply a combination of techniques: recognition of suspect patterns in code, interactive browsing of a program trace to understand why (or why not) certain value get produced or certain statements executed, and advanced fault-localization techniques to attempt to suggest possible statements that may be responsible for incorrect behavior of the program.
In the domain of model-driven engineering (MDE), we are developing techniques for supporting model debugging: locating and repairing faults in large and complex models. Existing debugging techniques are largely code-centric: they focus on program faults. In MDE, where modeling is the primary form of expression, the predominant activity, and where the models can be large and complex, automated support for debugging models is essential. Our research investigates the development of dynamic-analysis-based techniques, such as dynamic taint analysis, forced exploration of program paths, and analysis of execution traces, to enable efficient debugging of faulty models that cause transformation failures.
3. Mining Software Repositories
Repositories, such as version-management systems and bug-management systems, contain a wealth of information on how an application evolves over time. This information, if mined appropriately, can help project teams gain insights for supporting maintenance of the software, improving design/reuse, and enabling effective transitioning of new people into a project. Our research agenda in this area focuses on using a combination of text analytics, mining, code analysis, and visualization to enable decision making, based on knowledge derived from software repositories.