Our client has a system acceptance test team. Recently they approached me regarding a problem our load software had last year. They knew it had something to do with the input data containing spaces. And they were trying to determine the impact on the system, and whether they needed to do any additional testing of it this year. I gave this problem some thought and told the test team what I knew.
There is a certain field in one of our input files that is 4 characters in length. We are required to read this field, trim off any white spaces, and store the result in the database. This had worked properly for a number of years. A developer rewrote the load routine using a new tool. They did not correctly follow the requirements and trim the white space from the field. As a result, post load processing could not match the loaded value up with other values that had trimmed. Additionally the application that queries the data could not form the match either.
It took quite a bit to resolve this problem. We had to correct the loaded data for millions of records. Then we had to run the data back through post loads processing. Finally the original load software was corrected to deal properly with future files loaded. It was this last part that the test team wanted to verify. It was good that they are paying attention. Since we only load this particular file once a year, nobody other than the developer tested the fix to the loads code.
The test team was happy to hear the information I provided them. They were immediately running off identifying test cases and planning to generate some input file data to check out our code. We have an internal test team at our company. For some reason I doubt they also have this type of insight and premonition to verify that development follows through on the fixes we produce. Its always easier to deal with problems during test before the software goes out into a production environment.
A Little Bit of Crypto - I have been trying to figure out to "collision resistant" some of these standard hash functions are. It is a tough concept to get my head around. I figure...