1. A method of testing a software program, the method comprising: generating a test driver by assigning concrete values to input variables of the software program; assigning symbolic source set elements to the input variables of the software program to generate a data structure based on the symbolic source set elements; symbolically executing, with data source analysis, a current instruction of the software program based on the concrete values and symbolic source set elements assigned to the input variables of the software program; and based on the symbolic execution with data source analysis, determining whether the software program meets one or more predetermined requirements.