Highly Effective Work Habits: Testing is Critical
Whenever you build something whether it be a new process, tool, or application, you need to make sure testing is a critical part of your plan. Unfortunately, this is an area that is usually either skipped or limited due to time constraints or budget. I can’t tell you how many projects I’ve worked on in the past where inadequate testing was done and customers found issues before we did. Issues can range from minor grammatical errors up to your process/application outright failing and possibly bringing other systems down with it. I’ve experienced these and everything in between.
I’ll attempt to speak at a more generic level, but I have a feeling this is going to take a technical slant quickly There are several types of testing depending on what you are working on:
- Unit Testing – this is typically done at a developer level and involves he/she testing their own work isolated from other systems or modules. The goal is to make sure your own task is working as expected.
- Assembly / Integration Testing – if you are working within a team of multiple people who are all working on difference pieces of the functionality or just need to integrate your module into a larger whole, this gives you the opportunity to make sure your module plays nice with the system you are integrating it into.
- Business/Client Testing – once you have built your module/process and it is working well, you need to have the client test it out. This is a final confirmation that it works as designed. You always want someone testing the functionality beyond the person who developed it. They will usually find something that you missed.
- Load / Performance Testing – I can’t tell you how important this one is. And this is usually the most ignored. This is the one that can bring a system to its knees if not configured properly. Now, depending on what you are working on, this may or may not apply. However, if you are building something that hundreds, if not thousands, of people will be using simultaneously, you need to make sure it performs well. This typically involves simulating a load against your application to make sure it remains usable and doesn’t crash.
For me, I’m a fairly detail-oriented person. So, testing thoroughly is not too difficult for me. If you are not so detail-oriented, here are some tips to help you test better:
- Create a spreadsheet or other document to list out all possible scenarios that can occur with your process/application.
- Think about the larger picture and how people/processes will interact with your component.
- If you are working on a web site or other application, test with guest users, registered users, or any other user type who might be interacting with you.
- Test all possible error scenarios. You basically need to make your functionality “dummy-proof”. Handle any errors gracefully and provide proper messaging to the user so they know what happened.
- If you are testing a web site or other application, make sure you test on different computers/browsers, different screen resolutions, and different devices (i.e. mobile).
- Does your functionality need to extend to other countries? Test the application to make sure it is multi-lingual. Often sizing and positioning can change with longer/shorter text.
So, please, test, test, test! Often it is a difficult to bake in this time and sell it to the client. Typically, creating something new is the less time consuming part. I always recommend that about 1/3 of the time should be spent in development and the other 2/3 in testing. The client will often ask why so much time is needed for this. You’ve got to do your best to show how important this is and use statistics if you have to. In my experience, this often gets removed to try and meet deadlines. However, if a project is going to fail, it will fail because something wasn’t tested enough. Of course, sometimes the best way to learn is through failure, so you may have to fail a few times to realize the importance of this.
Testing can be a science. There are plenty of companies out there who specialize in this. If you can’t afford the necessary tools or staff, try bringing in a third party to help. Now, go forth and be productive