Types of Software Testing


Functional testing:

Functional testing involves validating the functional specifications of the system.
Non-Functional testing: Non-Functional testing includes testing the non-functional requirements of the system like performance, security, scalability, portability, endurance etc.

Methods of Testing (Testing Methods) (White box, Black box, grey box)


Black Box Testing: 

Black box testing is the testing of requirements and functionality without knowledge of internal content. Inputs are fed into the system and outputs are determined expected or unexpected.



White Box Testing: 

White box testing is testing based on knowledge of the internal logic (algorithms) of an application’s code. It’s an approach that attempts to cover the software’s internals in detail. White box testing is also known as ‘glass box testing’, ‘clear box testing’, ‘transparent box testing’, and ‘structural testing’.




Grey Box Testing:

Grey box testing uses a combination of black and white box testing. Grey box test cases are designed with knowledge of the internal logic (algorithms) of an application’s code, but the actual testing is performed as the black box. Alternately a limited number of white-box testing is performed followed by conventional black-box testing.



               


Levels of Software Testing:

  1. Unit Testing
  2. Integration Testing
  3. System Testing
  4. User Acceptance Testing (UAT)


1. Unit Testing: 

 Unit testing is a white box testing technique. The developers conduct Unit testing. A unit is a single component or module of software.

2.Integration Testing:

Integration testing performed between two or more modules. Integration testing focuses on checking data communication between multiple modules. Integration testing is a white box testing technique. Integration testing conducted by the tester at the application level (at the UI level). Integration testing conducted by the developer at the coding level.

3.System Testing: (This is the actual area where testers are mostly involved.)

Testing the overall functionality of the application with respective client requirements. It is a black box technique. After completion of component (unit) and integration level testing, we start System testing.

System Testing focuses on the below aspects (types):

  • User Interface Testing (GUI)
  • Usability Testing
  • Functional Testing
  • Non-functional Testing


User Interface Testing (GUI):

Graphical user interface testing or GUI testing is a process of testing the user interface of an application.

A graphical user interface includes all the elements such as menus, checkboxes, buttons, colors, fonts, icons, content, and images.

GUI testing mostly focuses on the front-end part.

Here we mainly focus on the look and feel of the application.


Usability Testing:

Checks how easily the end-users can understand and operate the application is called usability testing.

Functional Testing:

In functional testing, we check the functionality of the software.

Types of Functional Testing:

  1. Smoke
  2. Regression Testing
  3. Retesting
  4. Sanity
  5. Non-functional Testing
  6. Non-functional testing, we check the performance of the software under different conditions.
  7. Types of Non-functional Testing:
  8. Performance Testing
  9. Load Testing
  10. Stress Testing
  11. Volume Testing
  12. Security Testing
  13. Recovery Testing
  14. Compatibility Testing
  15. Installation Testing
  16. Sanitation/Garbage Testing


4.UAT (User Acceptance Testing):

User Acceptance Testing (UAT) is a type of testing performed by the end-user or the client to verify/accept the software system before moving the software application to the production environment. UAT is done in the final phase of testing after functional, integration, and system testing are done.

Here are two types of UAT:

Alpha Testing:

Generally alpha testing is performed in our side as per client environment. Post Alpha Testing the software is ready for deployment into client Environment.

Beta Testing:

Beta Testing Done into client side, where whole system is tested as per the client Environment. Generally, Beta and Alpha testing are done by two separate team. Largely it is done by Team who is functional user of that software. As a QA Team we assist them as per request from the client.

Load:
Testing speed of the system while increasing the load gradually till the customer expected number.

Stress:
Testing speed of the system while increasing/reducing the load on the system to check anywhere its breaking.

Volume:
Check how much volumes of data is able to handle by the system.

Security Testing:

Testing security provided by the system.

Types:

  • Authentication
  • Access Control/Authorization
  • Encryption/Decryption

Recovery Testing:

Testing Recovery provided by the system. Whether the system recovering abnormal to normal condition or not.

Compatibility Testing:

  • Testing Compatibility of the system w.r.t OS, H/W & Browsers.
  • Operating System Compatibility
  • Hardware Compatibility (Configuration Testing)
  • Browser Compatibility
  • Forward & Backward Compatibility

Installation Testing

  • Testing Installation pf the application on Customer expected platforms and check installation steps, navigation, how much space is occupied in memory.
  • Check Un Installation.

Sanitation/Garbage Testing

Check whether application is providing any extra/additional features beyond the customer requirements.