Functional testing verifies that software functions as expected by testing each function and comparing actual and expected outputs. It is done without seeing internal code (black-box testing). The goal of functional testing is to check primary and necessary functions and screen flows. The functional testing process involves verifying requirements, planning tests, designing test cases, executing tests, and managing defects. Unified Functional Testing (UFT) is an automation tool used to automate user actions on web or desktop applications and test them using a scripting language. It supports various environments and has advantages like robust object recognition but also limitations like high cost and slow execution.