A method of operating an execution environment in a single-unit testing mode for applying a data processing rule to a particular, single data unit selected, by a developer, from a test dataset, the execution environment comprising a user interface module and a processing module including a state memory to preserve state from one test unit to a next test unit when processing data, the method including: receiving data from the test dataset; processing the particular data unit with the processing module, wherein processing the particular data unit includes: determining an ordered subset of data units (850, 952) from an ordered plurality of data units of the test dataset, each data unit included in the ordered subset of data units being related, by a shared identifier, to the particular data unit, wherein the each data unit included in the ordered subset of data units occurs prior to the particular data unit in the ordered plurality of data units; prior to applying the data processing rule to the particular data unit, iterating, by the processing module, through the ordered subset of data units, and applying the data processing rule to the each data unit in the ordered subset of data units, and updating a state variable stored in the state memory using an output generated by the application of the data processing rule to at least some of the data units in the ordered subset of data units, after the data-processing rule has been applied to each of the data units of the ordered subset of data units, reading the updated value of the state variable, and applying the data-processing rule to the particular data unit using the updated value of the state variable; and presenting on a user interface an output value returned by the processing module from application of the data processing rule to the particular data unit to allow the developer to determine whether the data processing rule conforms to a desired functionality. receiving data from the test dataset; processing the particular data unit with the processing module, wherein processing the particular data unit includes: determining an ordered subset of data units (850, 952) from an ordered plurality of data units of the test dataset, each data unit included in the ordered subset of data units being related, by a shared identifier, to the particular data unit, wherein the each data unit included in the ordered subset of data units occurs prior to the particular data unit in the ordered plurality of data units; prior to applying the data processing rule to the particular data unit, iterating, by the processing module, through the ordered subset of data units, and applying the data processing rule to the each data unit in the ordered subset of data units, and updating a state variable stored in the state memory using an output generated by the application of the data processing rule to at least some of the data units in the ordered subset of data units, determining an ordered subset of data units (850, 952) from an ordered plurality of data units of the test dataset, each data unit included in the ordered subset of data units being related, by a shared identifier, to the particular data unit, wherein the each data unit included in the ordered subset of data units occurs prior to the particular data unit in the ordered plurality of data units; prior to applying the data processing rule to the particular data unit, iterating, by the processing module, through the ordered subset of data units, and applying the data processing rule to the each data unit in the ordered subset of data units, and updating a state variable stored in the state memory using an output generated by the application of the data processing rule to at least some of the data units in the ordered subset of data units, after the data-processing rule has been applied to each of the data units of the ordered subset of data units, reading the updated value of the state variable, and applying the data-processing rule to the particular data unit using the updated value of the state variable; and presenting on a user interface an output value returned by the processing module from application of the data processing rule to the particular data unit to allow the developer to determine whether the data processing rule conforms to a desired functionality.