1. A method for testing software patches, the method comprising: injecting a software patch into a program; running multiple instances of a part of the program containing the software patch; determining whether an exception has occurred in at least one of the multiple instances of the part of the program; obtaining outcomes of the multiple instances in response to determining that the exception has occurred, wherein the multiple instances comprises a first instance corresponding to a first thread executing a first version of the software patch, a second instance corresponding to a second thread executing a second version of the software patch, and a third instance corresponding to a third thread executing the part of the program, and wherein the first thread, the second thread, and the third thread are executed in parallel in an execution environment; comparing the outcomes of the multiple instances; and determining whether the software patch is executed correctly by detecting if at least one of the outcomes violates a policy associated with the program based on the comparison.