Friday, November 7, 2008

what’s the difference between system and acceptance testing?

Acceptance Testing checks the system against the "Requirements". It is similar to system testing in that the whole system is checked but the important difference is the change in focus.

System testing checks that the system that was specified has been delivered. Acceptance Testing checks that the system will deliver what was requested.

The customer should always do acceptance testing and not the developer. The customer knows what is required from the system to achieve value in the business and is the only person qualified to make that judgement. This testing is more of getting the answer for whether is the software delivered as defined by the customer. It's like getting a green flag from the customer that the software is up to the expectation and ready to be used.

Explain the concept of baseline?

Base lines are logical ends in a software development cycle. For example let's have a software whose releases which will be done in phases i.e. Phase 1, Phase 2 etc. So you can base line your software product after every phase. In this way, difference between phase 1 and phase 2 can be tracked. Changes can be in various sections i.e the requirement document(some requirements changed), technical(due to changes, the architecture was needed to be changed), Source code(source code change), test plan change and so on.
Suppose there is an application which had undergone changes and was then baselined with each version. When the application was released, it was released with Ver 1.0 and baselined. After some time some new features were added and version 2.0 was generated. This was again a logical end so we again baselined the application. So now in case we want to track back and see what are the changes from Ver 2.0 to Ver 1.0. We can easily understand the same as we have logical baselines. After some time the application had gone through some defect removal i.e. Ver 3.0 was generated and again baselined and so on.
Base line is very important from testing perspective. Because testing on a software product which is constantly changing will not take you anywhere. So when the tester actually start testing, he/she need to first base line the application so that what he/she tests is for that base line. If the developer fixes something then create a new baseline and perform tetsing on the same. In this way any kind of conflicts will be avoided.

What is configuration management?

Configuration management is a detailed recording and updating information for hardware and software components. Components does not only mean source code but it can be tracking of changes for software documents like requirment, design, test cases etc.

When changes are done in ADHOC and uncontrolled manner more chaotic situations arise and more defects are injected. So whenever changes are done, it should be done in a controlled fashion and with proper versioning. At any moment of time, we should be able to revert back to the old version. The main intention of Configuration management is that we can track our changes back if we have issues with the current system. Configuration management is done by using baselines.

Explain System Testing?

Once the entire system has been built then it has to be tested against the "System Specification" to check if it delivers the features required. It is still developer focused, although specialist developers known as system testers are normally employed to do it.
In essence, System Testing is not about checking the individual parts of the design, but about checking the system as a whole. In fact it is one giant component.
System testing can involve a number of specialist types of test to see if all the funtcional and non-functional requirements have been met. In addition to functional requirements these may include the following types of testing for the non-functional requirements.
  • Performance - Are the performance criteria met?
  • Volume - Can large volumes of information be handled?
  • Stress - Can peak volumes of information be handled?
  • Documentation - Is the documentation usable for the system?
  • Robustness - Does the system remain stable under adverse circumstances?

Explain regression testing and confirmation testing?

Regression testing is meant for regression defects. Regression defects are defects due to which the functionality which was working first normally has stopped working. This is probably because of changes made in the program or the environment. To uncover such kind of defects regression testing is conducted.
If a defect is fixed in an existing application then confirmation testing is done to test if the defect is removed. It is very much possible because of this defect or changes made to the application can affect other sections of the application. Regression testing is done to confirm that no other section is affected.

Explain Unit Testing?

Starting from the bottom, the first level is "Unit Testing". It involves checking that each feature specified in the "Component Design" has been implemented in the component.
Practically, the developer usually does it, as they are the only people who understand how a component works. The problem with a component is that it performs only a small part of the functionality of a system, and it relies on co-operating with other parts of the system, which may not have been built yet. To overcome this, the developer either builds, or uses special software to trick the component into believe it is working in a fully functional system.

On what basis is the Acceptance plan prepared?

In any project, Acceptance document is normally prepared using the following inputs. This can vary from company to company and from project to project.

  • Requirement document: This document specifies what exactly is needed in the project from the customer perspective.
  • Input from customer: This can be discussions, informal talks, emails etc.
  • Project Plan : Project plan prepared by the project manager also serves as a good input to finalize acceptance test.

In projects, Acceptance test plan can be prepared by numerous inputs. It is not necessary that the above list is the only criteria. So if the reader thinks that he/she have something extra to add , please go ahead.