What is the need of software testing:-

The Quality of Product is rapidly becoming an important competitive issue and Software Testing is a best process to check the quality of product and provide information about product under test. It’s a process of verifying product needs and validating specified requirements.

Why there are so many software testing types:-

The quality of product can be defined by its functionality, reliability, usability, efficiency, maintainability and portability and on the basis of these factors each of Software testing type has defined :-

Types of Software Testing
Types of Software Testing

Black Box:Black box testing is a method to test the functionality of application without knowing its internal structure (Source code). This can be applied at every level of software testing unit, integration, system and user acceptance testing.

White Box:
Also known as “Clear box” testing, “Glass box” testing, “Transparent box” testing, and “Structural testing”. It’s a method to test the working of an application with good knowledge of its internal structure (Source code). This can be applied at unit level of testing.

Grey Box:
In this method of testing, tester should have knowledge about internal structure (Source code) as well as about functionality of application. It’s a combination of white box testing and black box testing.

               Black Box + White Box = Grey Box

 

Unit Testing:
Also known as Component Testing, Module Testing and Structural Testing. Unit testing is micro testing which is done by developers to insure that each and every individual unit of source code performing well enough to match their expectation.

Integration Testing:
Once unit testing is done by developers then integration testing is done by testers to insure that connectivity among these units are performing well or not as per requirement/specification of application. There are three approaches for integration testing –

 

a. Top – down integration testing: Begins by testing the top level module and progressively adds in lower level module one by one.

 

b. Bottom – up integration testing: In this lowest level components are tested first, then used to facilitate the testing of higher level components.

 

c. Sand witch testing: It’s a combination approach of Top – down and Bottom – up integration testing.

System Testing:
In this method entire integrated system need to be tested as per requirement and specification. Load, stress, volume, performance, security testing should be considered during System testing.

User Acceptance Testing:
This is final phase of testing before moving the software application to Market or Production environment. There are two type of UAT testing:-

 

a. Alpha Testing: Alpha testing takes place at developers’ sites, and involves testing of the operational system by internal staff, before it is released to external customers

 

b. Beta Testing: Beta testing takes place at client’ side, and involves testing at their own end and provide feedback, before the system is released to other customers.

GUI (Graphical user interface) Testing:
As name indicate it is use to test product’s interface. Here we check that all control is present or not in proper alignment.

 

Functional Testing:
In this method of testing, tester used test cases to test the functionality of application are implemented as per given specification or not. This is done against use cases, requirement documents and design.

Validation Testing:
This is about building the product right. In this method testers check the output is right or not after giving right input.

Verification Testing:
This about building the right product. Is a Quality assurance process and can be achieved by three processes:

 


a. Inspection – It’s a formal meeting to check the product as per requirement and always done in the presence of Project Manager. 
b. Review – In this quality auditor check the document of process is complete, correct and consistent or not.c. Walk through – It’s an informal meeting without any pre information.

Security Testing:
In this method we check the application data is protected or not against external and internal threats from humans and malicious programs. There are several processes to check the security of application few are:

 

a. Integrity: To check the information provided by system is correct or not
b. Authentication: It is the process of verifying whether individual user have right to access the application data.
c. Authorization: Through authorization it gave some specific right to authenticated user.

Smoke Testing
It’s an initial level of testing and executed before taking it to testing in depth. In this method we check the important functions of application are working fine or not.

Sanity Testing:
It’s also initial level of testing when new build is released after fixing the issues. In this method we check the core the functionality of application is not breaking instead of doing complete regression testing.

Regression Testing:
When build of application is released after fixing of issues then regression testing is about to verifying the exiting functionality is working as per requirement and new changes have not introduces any defect.

Monkey Testing:
It’s an informal testing to test each and every module/components of application with random inputs without any specific test strategy.

Gorilla Testing:
It’s little bit formalized in monkey testing. It’s a technique to test the particular module/components of application with various range inputs without any specific test strategy.

Agile Testing:
As agile means quickly so in this method of testing, tester do the agile (quick) testing from the prospective of end users (clients).

Usability Testing
In this method of testing, tester check the application is user friendly or not. User should not stick at any point of application. For example there should be proper help document.

Exploratory Testing:
It’s informal testing, when proper requirement document has provided but still application need to be test and explored and at the same time bug need to be reported.

Adhoc Testing:
It’s also an informal testing, when tester don’t have idea about application but still need to run the test and report the bugs.

 

Static Testing:
During static testing testers have a checklist to check whether the application is working as per the standards of organisation or not. These standards can be for coding. Review, Inspection and walkthrough are static testing methodologies.

Dynamic Testing:
Dynamic testing involves working with software, giving input values and checking output is as expected or not. Unit, Integration, system, acceptance are few of the dynamic testing methodologies.

Compatibility Testing:
It’s non-functional testing method to test the application compatibility on different environments (Browsers, Operating systems, Networks, Database, System specifications)

Performance Testing:
It’s a method to test the performance of application under load test. The aim of this testing to check which environments is better for application and what’s the reason for application to perform badly.

Stress/Load Testing:
As the name indicates it’s a method to test the application beyond the point where performance of application is going down

Volume Testing:
It’s a non functional testing method in which application need to be test with certain amount of data to check the performance of application