Abstract:The concurrent programs mostly specify two or more processes that work together in performing a job. Among them each process is a sequential program that implements series of statements. The processes usually work together by conversing using variables or message passing. So, testing a concurrent program is complex for its non determinism behavior. A number of methods such as locking, serialization, time stamp etc. are proposed to deal with non deterministic behavior. The paper deals with several coverage criteria for testing concurrent programs. Various coverage criteria such as interleaving, synchronization, ordered sequence, data flow, condition based etc are discussed with their capability in detecting bugs caused by synchronization. It discusses the expected bugs in the different criteria. Through discussion, it provides the way to cover all possible expected bugs.