Tuesday, February 16, 2010

How to Stop Unnecessary Bugs in a Software

Avoiding unnecessary bugs in a software development is the most challenging task for any team in Software Testing.



Finding Bugs is not only the main task of Software Testing Team but also avoiding un necessary bugs in the Software is important because it takes a lot of effort and team work and also time. Most of the time down in the software development life cycle I have often witnessed in my career as a software Quality Assurance Engineer while performing testing on software projects most of the bugs which appear during testing time can be avoided if they are looked in to while coding phase itself i.e. Unit testing of the Code, but most of the time Thorough Unit Testing is no done and this is based on the process the company follows.

The advantage of finding bugs at the early stage of development actually saves a lot of time and also the unnecessary problems we face as we reach the deadline. It is always said in the Armed forces that “The more we sweat in Peace are the less we bleed in War". This is true because if we spend enough time in the beginning and track all the bugs and avoid them at the earliest then they will not be found at the testing phase. Most of the time this point is not considered and as the requirements keeps on changing will not be properly communicated and also since some of the requirements are not reviewed many things might be left out. Let me put them in phase wise for easy understanding

1. Requirements Gathering and Analysis Phase:

This is the initial phase of software development where the BA or the PM will gather requirements and analyze them and prepare required documents and after series of meeting with the Team which includes PM, TL, QA/QC and the client they sign of the document. This is the general way of doing it by which if any requirements are left out they can be incorporated in the document. Since many heads are involved there are few chances of missing out which will help in saving the time in a later stage.

2. Design Phase:

This is the phase where the actual design of the application or product is done which means all the technical specifications, Functional specifications, business rules etc are drawn and also the system design, architecture, technology involved etc are finalized. It is at this point where generally they come up with a prototype of the product under design for a visual display of the product. If this prototype and the use cases, design documents are reviewed then many of the bugs which can be found in testing can be avoided by which a lot of time and effort is saved.

3. Coding Phase:

This is the actual phase where all the documents prepared in the earlier phases are translated into code and the system is actually built. if a lot of care is taken while coding then all the unnecessary bugs can be avoided in the testing phase. To achieve this lot of effort and coordination is required within the team. The unit test cases are to be written by the development team and if a time constraint is there then at least a check list has to be made so that unit testing of the code is done based on the check list. This check list or Unit test cases should be reviewed by the QA to see that nothing is missed out and the bugs if any are found out. If a proper unit testing is done then there is a 100% chance that most of the bugs are killed and efficiency of the code improves drastically. is not only improves the code but also the confidence in the team.

4. Testing Phase:

This is actual phase where the code is tested for bugs in a very detailed way covering all the functions, modules and doing a system end to end testing to see that the code developed is working as per the client requirement. Since the unit testing is done the concentration is there to find all the hidden bugs. If unit testing is done in a proper way then it become a difficult task for the QA team to find bugs but this increases the quality of the code being delivered.

From the above it can be concluded that instead of wasting time and playing a blame game within teams it is better to coordinate right from the beginning and develop and deliver a quality code which not only increases the confidence of the team but also the company will be given credit which also paves way in improving business.

No comments:

Post a Comment