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.

Explain Integration Testing?

As the components are constructed and tested, they are then linked together to check if they work with each other. It is a fact that two components that have passed all their tests, when connected to each other produce one new component full of faults. These tests can be done by specialists, or by the developers.
Integration Testing is not focused on what the components are doing but on how they communicate with each other, as specified in the "System Design". The "System Design" defines relationships between components.
The tests are organised to check all the interfaces, until all the components have been built and interfaced to each other producing the whole system.

What is the difference between Pilot and Beta testing?

Pilot testing is nothing but actually using the product( limited to some users only). In Beta testing, no need to input real data but it is installed at the customer end to validate if the product can be used in production.

What’s the difference between Alpha and Beta testing?

Alpha and Beta testing means different for different people. Alpha testing is the acceptance testing done at the development site. Some organizations have a bit different visualization of Alpha tetsing. They consider alpha testing as a testing which is conducted on early, unstable version of software. On the contrary Beta testing is acceptance testing coducted at the customer end. The difference between Beta testing and Alpha testing is the location where the tests are done.

Explain Usability testing?

Usability testing is a testing methodology where the end customer is asked to use the software to see if the product is easy to use, to see the customer perception and task time. The best way to finalize customer point of view for usability is by using prototype or mock up software during the initial stages. By giving prototype to customer before the development startup, it is confirmed that nothing is missing from the user point of view.

What is negative and positive testing?

In negative testing, invalid input is given and errors are expected.
In positive testing, a valid input is given and some action is expected to be completed in accordance with the specification.

Explain Random testing or Monkey testing?

Random testing is sometimes called as monkey testing. In Random testing, data is generated randomly often using tool. This randomly generated data is sent to the system. This data is generated either using tool or some automated mechanism. With this randomly generated input, the system is then tested and results are observed accordingly.
Random test has the following weakness:
  • They are not realistic.
  • Many of the test are redundant and unrealistic.
  • More time will be spending in analyzing results.

This kind of testing is really of no use and is normally performed by new comers. It's best use is to see if the system will maintain under adverse affect.

What is the difference between Verification and Validation?

Verification is a review without actually executing the process while validation is checking the product with actual execution. For instance code review and syntax check is verification while actually running the product and checking the results is validation.

What is the difference between Defect and Failure?

When a defect reaches the end customer it is termed as failure and if the defect is detected internally and resolved it is called as a defect.

Thursday, November 6, 2008

What is the difference between white box, black box and gray box testing?

Black box testing is a testing strategy which is based solely on the requirements and specifications. Black box testing requires no knowledge of the internal paths, structure, or implementation of the software under test. In this testing, the overall functionality of the application is checked.

White box testing is a testing strategy which is based on the internal paths, code structure, and implementation of the software under test. White box testing generally requires detailed programming skills. White box testing is mostly done by developers as they know the internals of the application. In white box testing, we do code reviews, view the architecture, remove bad code practices and component level testing.

In Gray box testing, the tester look in to the "box" under test just long enough to understand how it has been implemented. Then the box is closed and tester use his/her knowledge to choose more effective black box tests.



Define Defect?

Defect is a variance from a normal flow.