Software testing has always been a crucial job in accomplishing and assessing the quality standards of a software product. Software testing is done to confirm the developed software product does what it is expected to do. However, testing is expensive in terms of time, effort, and is quite complicated. Studies report that software testing alone is responsible for almost half of the total budget incurred in software development. Additionally, manual testing is more prone to bugs and creating accurate and reliable software is an open issue. Specialists and experts have been exploring more effective and successful automation techniques for testing to deal with this issue. This paper is an endeavor to review the cutting edge of how machine learning and artificial intelligence have been figured out to automate and streamline software testing processes. It also provides an insight mapping of the research into these fields. Furthermore, a practical study on testing web applications is performed using selenium.