Ad-hoc Testing:It is done without any formal testplans and testcases.Tester should have a significant understanding of software before testing it.It is normally done by experienced tester who has got good knowledge of software to be tested.
This testing is also done where software has to be tested in a very less time constraint.
Exploratory Testing:It is done by the testers who has got less or no knowledge about the software which they are going to test.They can use this testing to write testcases.This i sdone at the initial stage of testing.This is majorly done to know the flow of a software.