1. A system, comprising: a memory having computer readable instructions; and a processor executing the computer readable instructions, the computer readable instructions including: receiving application code and instrumenting the application code by inserting instrumentation hooks at internal module input points, external module input points and external module release points of the application code, wherein the instrumentation hooks are value loggers configured to: insert a value logger into a module at a point of execution of the module, wherein inserting the value logger instruments release points and input points of both of the input modules and the output modules; mapping data flow between the external module release points and the internal module input points of the application code via the instrumentation hooks; determining at least one of the internal module input points is accessible via at least one of the external module release points; determining a constraint by calculating the difference between the recorded values at the external module release point and external module input point of the respective external module; and testing the accessible internal module input point associated with the respective external module release point by sending a test value based on the constraint associated with the external module release point to the accessible internal module input point, wherein testing comprises sending test values that test for a data leakage, the test values based on a plurality of constraints from a plurality of external modules.