Nowadays, software is an intrinsic part of human life and is everywhere such as media players, mobile phones, airways, etc., and is important that, these systems should perform their intended functions, as software failures may be expected at any where any point of time. Software testing is essential for developing software and one of the important phases is test case generation. As software size grows, test cases generated for them are also more in number. Even though many techniques are available for test case reduction, still there is a need for new techniques. This paper presents detailed description of software testing techniques and presents an overview of coverage criteria based test case reduction techniques, which helps new researchers to know about existing test case reduction techniques and come up with a new test case reduction technique.