diff --git a/tests/mpi_test_main.cpp b/tests/mpi_test_main.cpp
index 728845ac4420275bfac8d90c4fe2eb0fc0ae049b..cd74479774dbf255460e5afe1b056c73f3e80821 100644
--- a/tests/mpi_test_main.cpp
+++ b/tests/mpi_test_main.cpp
@@ -28,7 +28,7 @@ main(int argc, char* argv[])
   parallel::Messenger::create(argc, argv);
 
   const int nb_max_threads = std::max(std::thread::hardware_concurrency(), 1u);
-  int nb_threads           = std::max(nb_max_threads / parallel::Messenger::getInstance().size(), 1ul);
+  int nb_threads           = std::min(std::max(nb_max_threads / parallel::Messenger::getInstance().size(), 1ul), 8ul);
 
   Catch::Session session;
 
diff --git a/tests/test_main.cpp b/tests/test_main.cpp
index 84b15f7585ab6abe69e6f0a9fb02688b18802e85..c4fca371ef152cba6e319141f3fac6424cb7d4ef 100644
--- a/tests/test_main.cpp
+++ b/tests/test_main.cpp
@@ -23,7 +23,7 @@ int
 main(int argc, char* argv[])
 {
   parallel::Messenger::create(argc, argv);
-  int nb_threads = std::max(std::thread::hardware_concurrency() / 2, 1u);
+  int nb_threads = std::min(std::max(std::thread::hardware_concurrency() / 2, 1u), 8u);
 
   Catch::Session session;