Our research focuses on developing practical techniques and tools for detecting bugs in complex SW such as embedded SW. Unlike conventional manual testing, automated SW testing enables our SW-centric society to advance fast and reliably for the following reasons:
-High complexity of SW
SW is very complex engineering product in its nature due to complex data structures and loops which enable infinitely diverse executions. In addition, many SW applications are non-deterministic multi-threaded ones (including event handlers). Such complexity cannot be understood nor handled correctly by human engineers, but can be controlled only by scientific techniques and automated tools.
-Ineffectiveness of manual testing
Even small SW has millions to billions of different execution scenarios due to loop and recursion. Thus, just hundreds of test cases manually written by human engineers cannot sufficiently check the correctness of target SW. Furthermore, subtle errors appear only at corner-case executions which a human engineer cannot imagine and, thus, cannot detect.
-Application of scientific theory on program analysis
Software testing is not any more manual art, but scientific application of program analysis theory. For the last half century, significant advance made in program analysis techniques which can be applied to complex large programs through automated tools using a large number of cloud computing nodes.
Research areas :
- Automated software testing: automatically generates millions of diverse test cases through program analysis and modification
- Symbolic program analysis: effective and efficient target environment modeling and optimization of state exploration
- Concurrency testing: cost-effective heuristics to explore important concurrent behaviors
- Debugging (automated fault localization): automatically locates the buggy statement lines