A Comprehensive Guide to Functional Testing