Code coverage is a common aid in the testing process. It is generally used for marking the source code segments that were executed and, more importantly, those that were not execu...
Yoram Adler, Eitan Farchi, Moshe Klausner, Dan Pel...
During testing, the execution of valid cases is only one part of the task. Checking the behavior in boundary situations and in the presence of errors is an equally important subje...
This paper explores an approach to improving the practical usability of static verification tools for debugging synchronization idioms. Synchronization idioms such as mutual excl...
Tayfun Elmas, Ali Sezgin, Serdar Tasiran, Shaz Qad...
Bug localization has attracted a lot of attention recently. Most existing methods focus on pinpointing a single statement or function call which is very likely to contain bugs. Al...
Hong Cheng, David Lo, Yang Zhou, Xiaoyin Wang, Xif...
Atomicity is a key correctness specification for multithreaded programs. Prior dynamic atomicity analyses include precise tools, which report an error if and only if the observed...
Many automatic testing, analysis, and verification techniques for programs can be effectively reduced to a constraint-generation phase followed by a constraint-solving phase. Th...
Adam Kiezun, Vijay Ganesh, Philip J. Guo, Pieter H...
Program differencing is a common means of software debugging. Although many differencing algorithms have been proposed for procedural and object-oriented languages like C and Ja...
This paper presents techniques for analyzing channel contract specifications in Microsoft Research’s Singularity operating system. A channel contract is a state machine that sp...