Classification Among Testing
Before delving on various types of Testing, let us firstly understand the basic definitions of Software Testing
Definition of Testing: Software Testing carries many definitions as explained by various practitioners.
Definition 1: Testing is a process in which the defects are identified, isolated (separated), subjected (sending) for rectification and ensured that the product is defect free in order to produce a quality product in the end and hence customer satisfaction.
Definition 2: Testing is the process of executing a software program with the intent of finding errors.
Definition 3: Testing is the process of Verifying and validating the software application with respect to the customer requirements.
Definition 4: Testing is the process of finding the differences between customer expected and actual values.
Definition 5: Testing is the process of ensuring that a quality product is delivered to the customer.
There are numerous types of testing; however in the parlance of software testing following five classes have been defined & practiced by the software testing community.
1) Methodology wise testing
2) Conventions wise testing
3) Level wise testing
4) Technique wise testing
5) Intent wise testing
Brief description of the same is as under:
(A) Methodologies wise there are two ways of Software Testing.
1) Manual testing & 2) Automated testing
1) Manual Testing: is a process in which all the phases of Software Testing Life Cycle like Test Planning, Test Development, Test Execution, Result Analysis, Bug Tracking and Reporting are accomplished till successful completion by manual means i.e. with human efforts.
There are few drawbacks of Manual Testing: such as
# More people are required.
# It is more time consuming.
# It renders less accuracy.
# It is strenuous.
# Simultaneous actions are difficult.
# Repetitive tasks are difficult to perform.
2) Automation Testing: is a process in which majority of drawbacks of manual testing gets addressed properly and it provides speed and accuracy to the existing testing phase.
It must be remembered that automation testing is not a replacement for manual testing. It is in fact a continuation of manual testing aimed to provide speed and accuracy to the testing effort.
Automated testing primarily uses an automation tool, which is assistance to the test engineers. An automation tool works on the basis of instructions and information. Automated tools are broadly of three Types like 1) Functional Tools (like HP quickest, IBM RFT) 2) Management Tools (Like HP Quality Center) 3) Performance Tools (Like HP Load Runner)
There are few drawbacks of Automation Testing: such as
# More expensive.
# We can not automate all the areas.
# Manual testing can not be fully eliminated
(B) Conventionally there are following two types of testing.
1) Unconventional testing & 2) Conventional testing
1) Unconventional Testing: It is a sort of testing in which quality assurance engineer checks each and every out come document right from the initial phase of the SDLC.
2) Conventional Testing: It is a sort of testing in which the testing engineer tests the application in the testing phase of SDLC.
(C) Levels wise there are following five levels of testing
1) Unit Level Testing: refers to the testing carried out on small software units. This is a type of white box testing generally performed by the code developers.
2) Module level testing: refers to the testing carried out on a module. This is a type of black box testing generally performed by the test engineers.
3) Integration level Testing: During the process of development, lot many modules are developed along with their respective interfaces, which are used for integrating these modules. While integration the developers check & ensure the perfect working of all such interfaces. This falls under the category of white box testing.
4) System level Testing: Whatever testing performed on the application after its deployment in its actual environment is termed as system level testing. This falls under the category of black box testing. The testing engineers generally perform system level testing. System level testing generally includes testing like
# System Integration Testing
# Load Testing
# Performance Testing
# Stress Testing
5) User acceptance level testing: It is nothing but a system level testing with the only difference that it is carried out in the presence of the user. It falls under the category of black box testing generally conducted by the Testing engineers.
(D) Techniques wise there are following three types of Testing
1) Black box Testing: Involves testing of functional part of the application. This is generally conducted by the testing engineers. For conducting black box testing, testers need not have any formal structural knowledge of the code.
2) White box Testing: This is known as glass box testing or sometimes clear box testing. This involves testing on the structural part of the application. For performing white box testing, in-depth knowledge of the code is essential, hence generally the code developers do this type of testing.
3) Gray box Testing: Involves testing of functional part as well as the structural part of the application. For performing gray box testing, knowledge of the code is required, hence experienced testers having good knowledge of code development are best suited for performing gray box testing
(E) Intent wise there are following four types of Testing
1) Acceptance Testing
2) Performance Testing
3) Load Testing
4) Regression Testing