Historically software development for research and for the sciences has not been well tested. This has been the case for a variety of reasons, including:
- Scientists and researchers are not developers, and simply don't know about best practices
- Non-deterministic functions are difficult to test
- Set-returning functions (most of data munging) are very time-consuming to test because you must generate a lot of test data
- It's really difficult to think through all of the possible edge cases like you might try in TDD