Tests overview

Table 1. Tests overview
Tool Usage

unit tests

make check or ./src/test_bitcoin

functional tests

test/functional/test_runner.py

lint checks

See the documentation

fuzz

See the documentation

util tests

test/util/test_runner.py

Bitcoin Core is also introducing (functional) "stress tests" which challenge the program via interruptions and missing files to ensure that we fail gracefully, e.g. the tests introduced in PR#23289.

Test directory structure

The following diagram gives a brief overview of how the tests are structured within the source directory.

This diagram is not exhaustive and includes simplifications.
dashed lines indicate optional components
The fuzz_targets themselves are located in the test folder, however the fuzz tests are run via the test_runner in src/test so we point fuzz to there.
qa_assets are found in a separate repo altogether, as they are quite large (~3.5GB repo size and ~13.4GB on clone).
bitcoin core tests
Figure 1. Test directory Structure

Test coverage

Bitcoin Core’s test coverage reports can be found here.