This past weekend I rolled out a major upgrade to one of the intranet web applications I maintain at work. The main purpose of the upgrade was to change the scope of the application. It was originally designed for use at one facility, but because of it's effectiveness, the business wanted to start using it at all of our facilities in North America. The catch was that each facility's data needed to stay isolated. When we last upgraded the application two years ago we thought that this might happen, so the structure for this was mostly in place and therefore the number of changes were mostly in the user interface as we exposed the new functionality.
Anytime I make changes to web user interfaces I worry about data validation and the impact on the user experience. We try to catch data entry errors up front and we also check again before posting to the database, but I worry that something will slip through. I have two main concerns with this. First, are we restricting the data that the users enters based on the type and size of the fields in the database. And, second, are we properly cleaning up the data for the database and for proper viewing in the future.
Our intranet applications are developed in a development environment and then migrated into a testing environment before finally being placed into production. Once a new version is available for testing I always solicit the application's owner to test it (each application has an owner from the business). But, they normally focus on the changes that they requested, ensuring that our implementation meets their desires. Because of this we have historically found bugs in the production environment caused by edge cases, and now we do a lot of manually testing for these cases.
I have seen some applications for assisting in the testing of websites, but most of them require some sort of external tools. Many seem to be based on recording and playing back situations. This approach is understandable, but I want something more automated. I don't want to miss a check on a new field because we forgot to add it to the checking macro.
I have yet to find a tool that performs in this manner, and am considering writing one if subsequent searching turns up nothing.