Types of Software Testing

In this article we are going to see the different types of testing.


Black Box Testing: This type of testing is mainly based on the functional requirements.As a Tester, we no need to have the knowledge of the internal design of the application.


White Box Testing: This type of testing is mainly based on the internal design of the system. It requires the complete knowledge about the system. This is mainly conducted to check the different areas like branches, statements coverage,branch, paths etc.


Unit Testing: This type of testing is to test the modules or units. This is mainly done by the Developers as it requires the detailed knowledge of the internal system design and code.


Integration Testing:This type of testing is to test the behavior of each modules when integrated.Modules are code modules,individual applications, or client/server applications.Integration testing is relevant to client/server and distributed applications.


Incremental Integration Testing: This is a kind of bottom up testing approach in which we continues to test whenever there is any enhancement is added. Application functionality should be independent enough to test separately. This type of testing can be done by testers or programmers.


Functionality Testing: This kind of testing ignores the internal system design and code of the application.This is a kind of Black box testing in which the application is tested against the well defined functional requirements.


System Testing: The entire system is tested based on the overall system requirements. It combines all parts of the system.


End To End Testing: This is also kind of system testing.It involves in Testing the application with the mimics of real world scenarios like interacting with data base,using network communication etc.

Types of Software Testing

Software Testing is mainly divided into two types.

01.Functionality Testing
02.Non-Functionality Testing

Functionality Testing:

As the name suggests we need to test the Software against the well defined requirements. It means we are going to test the logical part of the software.For example, we can take Calculator. Assume that a user enters 0, Presses + button, enter 1, Presses = Button. The result should be 4. It means the programming logic should follow the actual requirment. This is called Functionality Testing.

Non-Functionality Testing:

Non-functionality is not really about the programming logic. It's all about how the same application behaves under different circumstances.

For example, we can take the same Calculator application. Assume that the application was tested with 1GB RAM, 40GB HDD with single user login.SO,the application worked perfectly as expected.Assume that more than 1,000 users are going to access the application at the same time.

So, it's possible for that the application crash. If that happens, either resources of the machine on which the application is running should be improved, like increasing the RAM or CPU, etc in such a way that the application code has been improved to handle n-number of users.

Unless we run such a test, we'll be at risk of the application crash in production when it comes under heavy load. This kind of testing is called as Non-Functional.

It's very important to gather both Functional and Non-Functional requirements during requirement phase itself to avoid such kind of issues.

This is the main responsibility of the Test Engineer to get clarity on these requirements.