Tuesday, March 17, 2009

Testing Types

Testing types are:
1.Unit Testing
Testing small testable parts of an application for proper operation is Unit Testing.Usually, unit testing is carried out by Software developers to ensure that the code developed by them meets the specified requirements and behaves as they intended.

2.Integration Testing
Testing the combined parts of an application to ensure that they function together correctly.
Different types of Integration testing are :

  • Bottom-up
  • Top-down
Bottom-up integration testing starts with unit testing, and then progress towards higher level combination of units called modules.Dummy modules called 'Drivers' are used for simulation of super-unit.
Top-down integration testing starts with the top integrated modules and then progress towards the smaller units.In this testing,dummy modules called 'stubs' are used to simulate smaller units.

3.System Testing
Testing based on overall requirements specification and it covers all combined parts of a system.The focus in system testing is typically to ensure that the product responds correctly to all possible input conditions and the product handles exceptions in a controlled and acceptable fashion.

4.Performance testing:
It determines how fast some aspect of a system performs under a particular workload. It can also serve to validate and verify other quality attributes of the system, such as scalability, reliability and resource usage.
Types

  • Load Testing
  • Stress testing
  • Endurance testing
  • Spike testing
Load Testing
This is the simplest form of performance testing. A load test is usually conducted to understand the behavior of the application under a specific expected load. This load can be the expected concurrent number of users on the application performing a specific number of transaction within the set duration. This test will give out the response times of all the important business critical transactions. If the database, application server, etc are also monitored, then this simple test can itself point towards the bottleneck in the application.

Stress Testing
This testing is normally used to break the application. Double the number of users are added to the application and the test is run again until the application breaks down. This kind of test is done to determine the application's robustness in times of extreme load and helps application administrators to determine if the application will perform sufficiently if the current load goes well above the expected load.

Endurance Testing (Soak Testing)
This test is usually done to determine if the application can sustain the continuous expected load. Generally this test is done to determine if there are any memory leaks in the application.

Spike Testing
Spike testing, as the name suggests is done by spiking the number of users and understanding the behavior of the application whether it will go down or will it be able to handle dramatic changes in load.

5.Volume Testing
Volume testing refers to testing a software application with a certain amount of data. This amount can, in generic terms, be the database size or it could also be the size of an interface file that is the subject of volume testing.This testing can be done by increasing the database size or by increasing the size of an interface file.
Example:
A bank system tested for faults at much larger volumes of data.

6.Security Testing
Security testing is the process to determine that an IS (Information System) protects data and maintains functionality as intended.It is essential for software which processes confidential data and to prevent unauthorized access of data by others.

7.Usability Testing
Testing to determine whether the system/software meets the specified usability requirements.That is, testing for 'user friendliness'.
Usability goals based on:
System goals (the reason for having the system, the difference it is to make for the organisation or individual, its purpose and the tasks it will aid) &
The contexts of use for the software/system(who is to use the system and the environment in which it is to be used, user characteristics and user tasks).

8.Compatibility Testing
Testing how well software performs in a particular hardware/software/operating system/network/etc. environment.

9.Recovery Testing
Testing how well a system recovers from crashes, hardware failures or other catastrophic problems.

10.Installation Testing
Testing full, partial or upgrade install/uninstall progress.

11.Exploratory Testing
Exploratory Testing can be a creative, informal software test that is not based on formal test plans or test cases, testers may be learning the software as they test it.

12.Ad-hoc Testing
Ad-hoc testing is similar to exploratory testing, but often taken to mean that the testers have significant understanding of the software before testing it

13.Retesting
It is a type of testing that is performed to check for the functionality of an application by using different inputs after the fix is done for the bugs that were recorded during the earlier testing.

14.Regression Testing
Regression testing is performed on an application to ensure that the new fixes made do not have any sought of impact on the existing functionality. The system is expected to perform normally as per the requirement

15.Smoke Testing
It verifies the major functionality at high level in order to determine if further testing is possible. The Smoke test scenarios should emphasize breadth more than depth.All components should be touched, and every major feature should be tested briefly. If test fails, the build is returned to developers un-tested.

16.Sanity Testing
Sanity testing is cursory testing, and performed whenever cursory testing 'is' sufficient to prove the application is functioning according to specifications. Sanity testing is a subset of regression testing. It normally includes a set of core tests such as basic GUI functionality to demonstrate connectivity to the database, application servers, printers,etc.

17.Alpha Testing
Simulated or actual operational testing by potential users/customers or an independent test team at the developer's site.

18.Beta Testing
Beta testing comes after Alpha testing.Versions of the software, known as beta versions are released to a limited audience outside of the programming team.The software is released to groups of people so that further testing can ensure the product has few faults or bugs.

No comments:

Post a Comment