Skip to main content

Introduction

There are two primary types of QA (quality assurance) testing, White-box testing and Black-box testing. Black-box testing differs from White-box testing due to testers having no knowledge relating to the internals of the product. Black-box testing is based on software requirements and specifications, rather than looking at the internal code structure. Testers use their knowledge of the requirements to create test cases.

Testers enter data into the product, then compare the output against the expected results, an input-output approach. The tester is not concerned about how the product handles the data; instead, the tester focusses on the behaviour of the functionality. The tester tests functionality behaviour, which is why Black-box testing is known as a type of functional testing. Black-box testing can, however, be non-functional if performance is being tested. Instead of testing the behaviour, a performance test would test the response times for the input and output.

Black-Box Testing Life Cycle

Just as developers follow the Software Development Life Cycle (SDLC), testers follow the Software Testing Life Cycle (STLC). Black-box testing is relative to every stage of STLC and is the sequence of activities carried out by the testing team from the beginning of the project until the end of the project.

  • Requirements: Requirements are gathered with the inclusion of testers
  • Test Planning & Analysis: Testing types are determined on the suitability of the project. A detailed test plan is created outlining potential risks
  • Design: Test cases and scripts are created using the input of the software requirements
  • Test Execution: Test cases are prepared and executed. Any defects are rectified and re-tested

Functional vs Non-Functional

There are many types of Black-box testing but the two you may have heard of are, Functional and Non-Functional. We have touched on these previously, but it is essential to provide you with an introduction to each.

Graphical representation of the Functional testing

Functional

Functional testing verifies the functionality of a product, with the aim being to test whether each function conforms with the requirements. As previously mentioned, this is the most common type of Black-box testing due to not being concerned with the internal code of the product. Functional testing can be done manually, or automated. Examples of Functional testing could be: Unit testing, User Acceptance, Integration Testing, or Regression testing.

Graphical representation of Non-Functional testing

Non-Functional

Non-functional testing can test performance, usability or reliability with the focus being to test all ‘non-functional’ aspects. Importantly, Non-functional testing can improve the usability and the efficiency of the product. Typically, Non-functional testing verifies the behaviour of the product, asking the question, does it meet the requirements or not? There are several Non-functional testing types, far too many to cover, but the more familiar types are Performance Testing, Usability Testing, Load Testing, and Security Testing.

Four Types of Black-Box Testing Techniques

Equivalence Partitioning

Equivalence partitioning aims to find faults by dividing inputs into classes, and these are then used to create test cases. With this technique, there is an assumption that the performance of program inputs will resemble equivalent inputs, meaning that if a defect is found in one class, the same defect will be found in other classes.

Boundary Value Analysis

Boundary value analysis tests the boundaries between the equivalence partitions, complementing Equivalence Partitioning. Boundary value analysis has the principle that, if a product works well for specific values, then it will work well for all values between boundary values.

Decision Table Testing

A technique adopted for more complex scenarios, Decision table testing, is used to examine specific function combinations where the input presents a different output. Conditions are often stated as Boolean to identify combinations that may not have been anticipated. A table containing all combinations of input and outputs must be created for every function, ensuring that no function is overlooked.

Error Guessing Testing

Error guessing relies on the experience of testers to use their experience, knowledge and intuition to ‘guess’ where errors may occur. The tester aims to identify high-risk code by ‘guessing’ the problematic part of the product.

Return to the top
User Sitemap