Sunday, October 19, 2008

Testing Is Important, So Plan It Soon

First of all, I want to apologize to all my readers for being away for so long. Personal reasons have kept me away from posting but things are settling down, so I want to resume this enjoyable task, and I hope you keep following my work.

I left my work a few months ago trying to define all the strategies every software development project should define before any work is done. I described many of them, which you will find in earlier posts. Today, I will talk about testing.

I have never talk to anyone in the software development industry who did not believe that testing was one of the most important task in any project. You can ask anyone, and they will tell you that if you want to develop high quality software, you need to test your product. Even so, different people have different opinions on how to test software, and to be honest, they all have a point. This is why you need a testing strategy. You need to make very clear how the software you are developing is going to be tested, and whose responsibility is to test the different parts of your application.

Automation Is Your Friend

Testing is not fun. Manual testing is even worst, and it takes a long time and many resources. Invest in automation, so you can test quicker and more often. There are many tools out there that can help you automate your tests. Learn them and use them. In the long run, it will be worth it.

You Need Manual Tests

There is no way you can automate every single scenario. The reason is very simple. It is impossible that you will think of every possible scenario in advance to implement an automated test. However, when people are manually testing a program, they will come up with very clever ways to break it. Manual testing is important to allow people to be creative about testing.

Once you have found a scenario you did not think about before, you should document it and automate it to make sure you can test it over and over again.

Testing Starts During Development

Testing is a responsibility that begins in the development team. The higher percentage of defects in software can be found by testing during development.

Automated unit tests can help you to test often and insure the code is exercised at the lower level, where most of the defects are initially introduced. They will also help to validate the defects are fixed after they are found.

Testing Continues After You Ship

Some people think that once the product is out the door testing is complete. Unfortunately, there will be defects you have not found because of scenarios you have not think about. You should keep testing after you ship your product. Maybe, you will find defects that can be fixed in a service pack.

Furthermore, your customers will find defects you have not seen before or think about. Treat these defects with the same importance as if they were reported by your QA team. Even give them a higher importance. The defects your customers are reporting are really annoying them and giving your software a perception of poor quality.

The longer it takes to find a defect, the more expensive and difficult it is to fix it. The only way you can find defects is by testing, so the sooner you start testing, the sooner you will start finding the defects and fixing them. The sooner you define a testing strategy, the sooner you can start testing. Your testing strategy is key to the success of you software development project, so start planning before any development is performed.