A Deep Dive into Mobile App Security Testing: Best Practices, Tools and Challenges