Automated Test Generation: A Comprehensive Guide