# Black Box & White Box Testing

In this post, we discuss about Black Box and White Box Testing and types of Black Box and White Box Testing.

### BLACK BOX TESTING:

It is also called as Behavioral/Specification-Based/Input-Output Testing

Black Box Testing is a [software testing](https://www.softwaretestingmaterial.com/software-testing/) method in which testers evaluate the functionality of the software under test without looking at the internal code structure. This can be applied to every [level of software testing](https://www.softwaretestingmaterial.com/levels-of-testing/) such as Unit, Integration, System and Acceptance Testing.

Testers create [test scenarios/cases](https://www.softwaretestingmaterial.com/test-case-template-with-explanation/) based on software requirements and specifications. So it is AKA Specification Based Testing.

Tester performs testing only on the functional part of an application to make sure the behavior of the software is as expected. So it is AKA Behavioral Based Testing.

The tester passes input data to make sure whether the actual output matches the expected output. So it is AKA Input-Output Testing.

#### Black Box Testing Techniques:

1. Equivalence Partitioning
2. Boundary Value Analysis
3. Decision Table
4. State Transition

**Equivalence Partitioning:** Equivalence Partitioning is also known as Equivalence Class Partitioning. In equivalence partitioning, inputs to the software or system are divided into groups that are expected to exhibit similar behavior, so they are likely to be proposed in the same way. Hence selecting one input from each group to design the test cases. Click here to see detailed post on equivalence partitioning.

**Boundary Value Analysis:** Boundary value analysis (BVA) is based on testing the boundary values of valid and invalid partitions. The Behavior at the edge of each equivalence partition is more likely to be incorrect than the behavior within the partition, so boundaries are an area where testing is likely to yield defects. Click here to see detailed post on boundary value analysis.

**Decision Table:** Decision Table is aka Cause-Effect Table. This test technique is appropriate for functionalities which has logical relationships between inputs (if-else logic). In Decision table technique, we deal with combinations of inputs. To identify the test cases with decision table, we consider conditions and actions. We take conditions as inputs and actions as outputs. Click here to see detailed post on decision table.

State Transition: Using state transition testing, we pick test cases from an application where we need to test different system transitions. We can apply this when an application gives a different output for the same input, depending on what has happened in the earlier state. Click here to see detailed post on state transition technique.

#### Types of Black Box Testing:

Functionality Testing: In simple words, what the system actually does is functional testing\
Non-functionality Testing: In simple words, how well the system performs is non-functionality testing

### WHITE BOX TESTING:

It is also called as Glass Box, Clear Box, Structural Testing.

White Box Testing is based on applications internal code structure. In white-box testing an internal perspective of the system, as well as programming skills, are used to design test cases. This testing usually done at the unit level.

#### White Box Testing Techniques:

1. Statement Coverage
2. Branch Coverage
3. Path Coverage


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://testplace.gitbook.io/tutorials/manual-testing/manual-testing-tutorial/black-box-and-white-box-testing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
