Functional testing is a quality assurance (QA) process[1] and a type of black-box testing that bases its test cases on the specifications of the software component under test. Functions are tested by feeding them input and examining the output, and internal program structure is rarely considered (unlike white-box testing).[2] Functional testing is conducted to evaluate the compliance of a system or component with specified functional requirements.[3] Functional testing usually describes what the system does.