Functional testing is a type of software testing that checks software for consistency with project requirements. A QA engineer verifies every software function during functional testing, providing corresponding input, and checking if the outcome complies with the specification. It is an extensive and time-intensive type of software testing.