GUI Testing : From Basics to Advanced