Automated Functional Testing: All You Need to Know