29. A computer program product that includes a non-transitory computer readable storage medium, the computer readable medium comprising a plurality of computer instructions which, when executed by a processor, cause the processor to execute performing a process for testing a user interface to a software application, the process comprising: extending a hardware verification language by defining one or more custom libraries such that the extended hardware verification language can be used to interface with the user interface to the software application in addition to hardware designs, wherein the hardware verification language is different from a programming language used to create the user interface to the software application, and is a programming language specifically designed for verification of hardware designs, and wherein the extended hardware verification language is extended by providing an API (applications programming interface) corresponding to the e language; generating a test for the user interface to the software application written in the extended hardware verification language; using the test written in the extended hardware verification language to drive one or more elements of the user interface to the software application; collecting data resulting from driving the user interface to the software application using the test; analyzing the data from driving the user interface to the software application; and displaying analysis results or storing the analysis results in a computer readable medium.
29. A computer program product that includes a non-transitory computer readable storage medium, the computer readable medium comprising a plurality of computer instructions which, when executed by a processor, cause the processor to execute performing a process for testing a user interface to a software application, the process comprising: extending a hardware verification language by defining one or more custom libraries such that the extended hardware verification language can be used to interface with the user interface to the software application in addition to hardware designs, wherein the hardware verification language is different from a programming language used to create the user interface to the software application, and is a programming language specifically designed for verification of hardware designs, and wherein the extended hardware verification language is extended by providing an API (applications programming interface) corresponding to the e language; generating a test for the user interface to the software application written in the extended hardware verification language; using the test written in the extended hardware verification language to drive one or more elements of the user interface to the software application; collecting data resulting from driving the user interface to the software application using the test; analyzing the data from driving the user interface to the software application; and displaying analysis results or storing the analysis results in a computer readable medium. 30. The computer program product of claim 29 in which the test comprises randomly generated test elements.