Test, Test, Test!
I was working through a fork of Prowork with Francis today when we noticed a database query wasn't executing. The cause? A simple comma character concatenated at the wrong place. We quickly checked the main source that is live and found out the same bug. Awkwardly, the query is a very important one and this bug has been on for a few days without our knowledge.
But this used to work!
We sure test when we assume we've finished work on a product or at least ready to share it with others. We also assume we are as well testing when we use from time to time. But even that is not enough. While it is easy to assume because your app works perfectly when launched and no one is complaining about anything, don't. For one, with iteration comes the possibility of new bugs. And no, iteration is not the bad thing. It is necessary for improving your app and consequently your code base. But how well do we test after each round of iteration? And by the way, that you use the app regularly doesn't mean you will easily notice bugs. You possibly will, but not always. The craziest bugs hide in sign ups. This, you will never know because you have long signed up and why should you again? PS: someone who can't sign up on your site will find it easier to rant on twitter or even write an annoying blog post than look all over your site for a feedback form to get back at you. (Okay, okay, confession, I do that too :/). And that's even if you are lucky. Many will just hiss, and close the tab.
The test schedule
So we were thinking about it and came up with the plan.
- List out the working process of the app right from the very first step - signup, email confirmation (if you have one. We don't), login, the app use (for us that is creating projects, tasks, managing project members, etc. All these clearly listed out), down to settings update, logout, recover password, even payment, account cancelation and all.
- Work through this at a certain number of days interval. This could be daily, every 3 days or weekly - depending on how you can.
This way, you get to be able to test the whole part of the application regularly, in a way totally different from how you might have been assuming to test from normal use. If the list from 1 is pretty long, you can decide to share the steps between members of the team or schedule a different member for every walk through. If you have the luxury, you can outsource this as well.
Things can easily go crazy somewhere deep within codes. A simple dot at a wrong place can break your app. Regular testing ensures things work as they should.