1. A computer system for testing a modified version of a software application, the computer system comprising: a. a random number generator; b. a system clock; c. a recorder module, during a production execution of the software application, the recorder module configured to: i. store a plurality of production incoming messages received by the software application from a first plurality of external software components, and for each production incoming message of the plurality of production incoming messages, store associated timing data; ii. store a plurality of production outgoing messages sent by the software application to a second plurality of external software components, and for each production outgoing message of the plurality of production outgoing messages, store associated timing data; iii. store a sequence of random number values received by the software application from the random number generator, and for each random number value store associated timing data; iv. store a plurality of production event registrations by the software application, and for each production event registration of the plurality of production event registrations, store associated dispatch timing data, the dispatch timing data based on an actual dispatch time from the system clock for a production event associated with the production event registration; d. a playback module, during a test execution of the modified software application, the playback module configured to: i. connect, to the modified software application, via a communication channel; ii. send, to the modified software application, via the communication channel, one or more production incoming messages of the plurality of production incoming messages and the associated timing data, wherein for each production incoming message of the one or more production incoming messages the sending is based on at least one of a request received from the software application and the associated timing data of the production incoming message, the production incoming message causing the software application to adjust an internal time based on the associated timing data of the production incoming message, and wherein the test is executed using the one or more production incoming messages; iii. send, to the software application, via the communication channel, one or more random number values of the sequence of random number values, wherein for each random number value of the one or more random number values the sending is based on the associated timing data for the random number value, and wherein the test is executed using the one or more random number values of the sequence of random number values; iv. receive, from the modified software application, via the communication channel, one or more test outgoing messages and validate the one or more test outgoing messages based on the plurality of production outgoing messages, wherein the one or more test outgoing messages are generated by the modified software application during the test execution; v. receive, from the software application, via the communication channel, one or more test event registrations and validate the one or more test event registrations based on the plurality of production event registrations; and vi. send, to the software application, via the communication channel, a dispatch message to dispatch an event associated with a test event registration of the one or more test event registrations, the dispatch message causing the software application to dispatch the event based on the associated dispatch timing data of a production event registration corresponding to the test event registration.