A recent project ran into an issue after a few weeks in production. The problem was traced to a handful of things that could be considered mistakes, two of which are fairly easy to avoid in the future, but one of which might be quite difficult: anticipating edge cases during testing.