This is an informal type of software testing that is performed by software testers, business analyst, developers or any stake holder without referring to test cases or documentation. A person performing ad-hoc testing usually has a good understanding of software requirements and tries to break the software and find defects with the experience and knowledge they have about the domain, requirements and functionality of the software. Ad hoc testing is intended to find defects that were not found by existing test cases.