Good questions. The main difficulty IMHO is that it's hard to know people's intentions. We can't just parse the target program and generate tests, because then the tests will always pass. I picked API testing because people have a Swagger spec already, and it documents how the API should behave.