Black-box testing is widely used to ensure the most accurate results in software testing. Put simply, black-box tests are ones where you don’t know how the software works. Instead, you focus on the outputs of the system.
What exactly is black-box testing?
Black-box testing is so-called because it treats the system under test as a black-box. The name comes from engineering, where a black-box is a system that takes a set of defined inputs and transforms them into defined outputs. You have no idea what is going on inside the system. All you can do is interact with it and see what the outcome is. This form of testing is widely used during the system testing phase of the SDLC. It is also important for acceptance testing.
Why is it so important?
By its very nature, black-box testing ensures you avoid bias in your QA process. This is because your quality engineers can avoid unintentional bias caused by knowing exactly what the underlying code is doing. Instead, they are able to focus on testing the code in the way an end-user would use it. By contrast, if the tester knows how the code works, the temptation is to take this into account when defining test parameters. For instance, you might know that a given function expects a UInt and avoid passing a negative number. But this means you are not testing how the system handles an unexpected input.
How to do good black-box testing
It is important you understand that black-box testing doesn’t imply random or data-free testing. Indeed, you need to make sure you know exactly how the system is meant to behave for any given set of inputs. This means you always need to work with your product team to define your tests. You need to know exactly what is meant to happen for every possible interaction with the system. What should happen when a user clicks the login button? How can you tell if the UI is showing the correct information?
Black-box testing is especially useful as a technique for UI testing. Here, you focus on how your system behaves when an end-user is interacting with it. Clearly, users have absolutely no idea what is happening “under the hood” of your code. If your testers know how the code works, they will tend to take this into account when testing.
Things to look out for
Black-box testing is relatively easy to do. However, it is easy to find you have missed some vital user flows in your testing. Your aim should be to test every possible flow and combination of data. However, this can take an inordinately long time if you rely on manual testing. Therefore, it’s best to turn to automated testing instead.
When designing new black-box tests, you need full details of how the software should work. Typically, this means getting hold of all the user stories, user flows, storyboards, and other documents produced by the product team. Ideally, you should use a test management tool to help create thorough test plans. There are many tools to choose from, including Practitest, QA Coverage, and Test Collab.
When shouldn’t you use black-box testing?
There are several places where black-box testing makes no sense. During development, your software engineers will need to regularly test their code and develop unit tests for each function. These tests have to be white-box. That means the test is developed with full knowledge of how the underlying code works.
White-box testing is also useful when you are trying to isolate a bug that has been found. Typically, the QA team uses black-box testing to identify the steps to recreate the bug. This is then passed to the developers who, of course, understand the codebase. They are then able to do white-box testing to isolate the bug. This can include inspecting what is happening in the backend, recording the API calls, and enabling debug output in the code.
You may also have heard of gray-box testing. This, as the name implies, is something between white- and black-box. The aim here is to find underlying problems in the code. It can be used when you are looking to refactor your codebase. It also helps when you need to diagnose performance problems with your backend.
Black-box testing is a central technique for software testing. In general, all your system testing and acceptance testing will be black-box. However, getting it right requires collaboration between your testing and product teams. Just remember that sometimes you may need to turn to white- or gray-box testing instead.