Smart Testing for Smarter Software