Thursday, September 4, 2008

Product Testing

As the name itself mentions, this category deals with the testing of the complete product inside out. The product is tested in different stages and in different methods.

During the initial testing of a new product, the Products are given to the QA department as modules. Modules will basically be the major functionality that the Product has to perform. Consider an example where in a Package comprises of more than one Product. In this case, the Modules will be either a Product or one of the major functionalities that one of the Products has to do.

The Test Cycle for Modules or Product is based on the features that need to be tested and the number of resources of the team that is looking into it. When a Package consists of more than one Product it is natural that the Testing team be divided into multiple teams each looking into a particular Product. Each of the team will be lead by a Team lead who co-ordinates with the Manager or Developer throughout the life of the Product.

When testing a Product, the features of the Product are verified thoroughly and confirmed that it is as per the specifications made by the Client or as per the Requirement spec that was given at the time of developing the Product. To accomplish this, Test Cases are created and run. Issues noticed are reported to the developers and to the concerned higher officials and they are kept track of for further verifications.

In the Next cycle of testing, fixes made for the issues faced in the previous cycle are verified and also the complete product is verified again to make sure that what was working earlier is still working.

After a couple of cycles, a DRM (Defect Resolution Meeting) is conducted to reach to a conclusion on certain defects that have not been fixed.

In-between this, the modules are integrated and the complete product is developed. Now all the modules have to be rechecked to make sure that issues fixed are still in fixed state and those features those were working properly is still working properly. This check is known as Regression Testing. When modules are integrated, there will be a communication happening between these modules. The output of one of the modules could be the input of the other modules. So here the testing is done with the actual input and not with a dummy input. This leads to testing the integrated modules a bit more thoroughly. This is known as the Integrated Testing.

A Build (Installation media) might be made at this level and released to the QA department for testing. Once this is done then onwards when a major number of fixes have been made, then instead of receiving fixes in the form of files, files will be given only for fix verification and then another Build is made and released for testing.

This cycle is repeated until the Product reaches a Stable state where in it can be released to the market. The QA Manager, Product Manager, Development Leads and QA Leads decide the stability of the product.

Once a release has been made to the market, then the Product development does not stop there. Requirements can come in from the Clients and Issues that were not fixed for this release will be looked into. This results again in a Development cycle of the product, which means that QA cycle is also to begin.

Based on the requirements from the Clients and Issues that are going to be fixed for the next release, QA starts updating their present Checklists and Test Cases or starts creating new ones before the first Deliverable from the Development team. And then the Test Cycle begins till the next release.

Now this testing has to be performed on all the OS (Operating Systems) that the company proposes to support because some of the functions used in creating the Product might not be available or might not behave the expected way in the other OS. It has been noticed that incase the developer works on Windows NT, and then there could be some issues that are found only on other OS apart from Windows NT. Moreover, there could be some dependency files required for the Product to work that could have been missed out from the developer.

It is mostly in this category that the different kinds of testing is done, like Automation Testing, White-Box testing, Code Coverage, Memory Testing etc.