A system and method for automated software testing that uses machine learning algorithms to automatically generate and implement software testing based on an automated analysis of the software. In an embodiment, a mobile software application comprising one or more screens is processed through a trained machine learning algorithm to identify screens and objects, understand the operational flow of the application, define priorities and dependencies within the application, define validation tests, and automatically generate one or more testing scenarios for the application. The testing scenarios may then be fed to an automated execution module which installs the application on one or more physical or virtual devices and performs testing on the application installed on those devices according to the testing scenario.