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.

Mutation testing

Bitcoin Core’s mutation testing reports can be found here.