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: selecting an interactive element; determining, via concrete execution of the event-driven software application, if the interactive element is presentable to the user; obtaining, via the concrete execution, a coordinate and a dimension of the interactive element; computing one or more other coordinates of the interactive element based on the coordinate and the dimension of the interactive element; and determining, via the concrete execution, if the interactive element is an uncovered top layer interactive element at at least one of the coordinate and any one of the one or more other coordinates; symbolically 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.