1. A computer implemented method of software testing, the method comprising: obtaining a plurality of interactive elements from an event-driven software application, the interactive elements configured to be selected by a user and when selected result in an event in the event-driven software application; determining which of the interactive elements are user interactive in a first state of the event-driven software application, wherein the determining includes: obtaining one or more coordinates of a first interactive element; and determining if the first interactive element is an uncovered top layer interactive element at any one of the one or more coordinates; executing the event-driven software application based on one or more determined user interactive elements to generate one or more equations; solving the one or more equations to generate one or more test cases; and testing the event-driven software application via the one or more test cases.