Black Box testing is a software testing method wherein the functionalities of software applications are tested without any knowledge of the internal code structure or paths. The tester selects a function and gives an input value to check for functionality. The tester then creates test cases with selected inputs, such as decision table, all pairs test, equivalent division, cause-effect graph, error estimation, etc. Test cases are constructed around what the application is supposed to do. They are generally drawn from external descriptions of the software, such as specifications, requirements and design parameters.

The tester chooses both valid and invalid inputs (for positive and negative test scenarios). This is to ensure that the software processes the positive ones and detects the negative ones. The tester sets the expected outputs for all the inputs and then executes the tests to see if it (actual output) gives the expected output. If it does, then it has passed the test; if not, it has failed. The bugs or defects are fixed in the process and re-tests are conducted. The testing team reports it to the development team and proceeds to test the next function.

Black Box testing is also called Behavioural Testing. The Black Box test can be performed on any software, website or custom application: the input and output are significant, not the internal code.Among the several types of BB testing, the following are significant.

1. Functional testing:

As the name indicates, it involves the functional requirements of a system. 

2. Non-functional testing:

This is not about testing specific functionality but performance and usability. 

3. Regression testing:

It is performed after any upgrades or maintenance to see if the new code has in any way affected the existing code.

Different tools are used in Black Box testing. Functional or Regression testing tools are QTP, and Selenium, while non-functional tests require the likes of LoadRunner and Jmeter. 

Major Black Box testing techniques:

Among the many Black Box testing techniques, there are: 

Decision table testing:

A matrix is created placing the causes and effects in a decision table. Each column yields a unique combination.

Equivalence class testing:

It is used to bring down the number of test cases to an optimum level and maintain reasonable test coverage.

Boundary Value Testing:

It focuses on the values of boundaries. Useful in systems where the input is within a certain range, this technique tests whether the system accepts values of a certain range.

Black Box Testing White Box Testing
Focuses on validating functionality of requirements Focus on validating the internal structure and working of the coding/software.
Focuses on giving abstraction from code and tests efforts on software system behaviour. Knowledge of the software language is critical. That is not always possible especially as there are software systems using multiple languages.
Testing communication among modules is possible. Testing communication among modules is not possible.