diff --git a/test/io/gridmanager/test_gmshboundaryflag.cc b/test/io/gridmanager/test_gmshboundaryflag.cc
index 41529064581e57b9b1ac6221006ff27298f5b441..6f824c137638e80fbb2816859ef1b0b49acb5d3b 100644
--- a/test/io/gridmanager/test_gmshboundaryflag.cc
+++ b/test/io/gridmanager/test_gmshboundaryflag.cc
@@ -26,11 +26,11 @@
 #if HAVE_DUNE_ALUGRID
 
 #include <dune/alugrid/grid.hh>
-#include <dune/common/parallel/mpihelper.hh>
 #include <dumux/common/parameters.hh>
 #include <dumux/common/boundaryflag.hh>
 #include <dumux/io/grid/gridmanager.hh>
 
+#include <dumux/common/initialize.hh>
 #include <dumux/discretization/box.hh>
 #include <dumux/discretization/cctpfa.hh>
 
@@ -64,7 +64,8 @@ int main(int argc, char** argv)
 {
     using namespace Dumux;
 
-    Dune::MPIHelper::instance(argc, argv);
+    // maybe initialize MPI and/or multithreading backend
+    initialize(argc, argv);
 
     Parameters::init(argc, argv, "test_gmshboundaryflag.input");
 
diff --git a/test/io/gridmanager/test_gridmanager_cake.cc b/test/io/gridmanager/test_gridmanager_cake.cc
index fbe0a4df4192594145cc77021a951d01b2705643..ea2b277f075aef9d52f02fb50113b5aa2bdf5e56 100644
--- a/test/io/gridmanager/test_gridmanager_cake.cc
+++ b/test/io/gridmanager/test_gridmanager_cake.cc
@@ -25,10 +25,10 @@
 #include <string>
 #include <iostream>
 
-#include <dune/common/parallel/mpihelper.hh>
 #include <dune/common/timer.hh>
 #include <dune/grid/io/file/vtk.hh>
 
+#include <dumux/common/initialize.hh>
 #include <dumux/common/parameters.hh>
 #include <dumux/io/grid/cakegridmanager.hh>
 
@@ -76,8 +76,8 @@ void testCakeGridManager(const std::string& name)
 
 int main(int argc, char** argv)
 {
-    // initialize MPI, finalize is done automatically on exit
-    Dune::MPIHelper::instance(argc, argv);
+    // maybe initialize MPI and/or multithreading backend
+    Dumux::initialize(argc, argv);
 
     // first read parameters from input file
     Dumux::Parameters::init(argc, argv, "test_gridmanager_cake.input");
diff --git a/test/io/gridmanager/test_gridmanager_dgf.cc b/test/io/gridmanager/test_gridmanager_dgf.cc
index b4e4e2fbe73863aec26183bbd33a156f5f98fb72..cc20787c90015d1fa035c1609e616634cb6311b0 100644
--- a/test/io/gridmanager/test_gridmanager_dgf.cc
+++ b/test/io/gridmanager/test_gridmanager_dgf.cc
@@ -22,14 +22,15 @@
 #include <config.h>
 #include <iostream>
 
-#include <dune/common/parallel/mpihelper.hh>
+#include <dumux/common/initialize.hh>
 #include <dumux/common/parameters.hh>
 
 #include "gridmanagertests.hh"
 
 int main(int argc, char** argv)
 {
-    Dune::MPIHelper::instance(argc, argv);
+    // maybe initialize MPI and/or multithreading backend
+    Dumux::initialize(argc, argv);
 
     Dumux::Parameters::init(argc, argv, "test_gridmanager_dgf.input");
 
diff --git a/test/io/gridmanager/test_gridmanager_gmsh_3d.cc b/test/io/gridmanager/test_gridmanager_gmsh_3d.cc
index 0303aa2d4782062ec71261e30b9d55e0a49b5da0..d89ce8b6cdbcca70a366b30af1d0132f4f56748a 100644
--- a/test/io/gridmanager/test_gridmanager_gmsh_3d.cc
+++ b/test/io/gridmanager/test_gridmanager_gmsh_3d.cc
@@ -22,7 +22,7 @@
 #include <config.h>
 #include <iostream>
 
-#include <dune/common/parallel/mpihelper.hh>
+#include <dumux/common/initialize.hh>
 #include <dumux/common/parameters.hh>
 
 #include "gridmanagertests.hh"
@@ -30,8 +30,8 @@
 int main(int argc, char** argv)
 {
     using namespace Dumux;
-    // initialize MPI, finalize is done automatically on exit
-    Dune::MPIHelper::instance(argc, argv);
+    // maybe initialize MPI and/or multithreading backend
+    initialize(argc, argv);
     Parameters::init(argc, argv, "test_gridmanager_gmsh_3d.input");
     const auto name = getParam<std::string>("Problem.Name");
     const auto refine = Dumux::getParam<bool>("Grid.Refine", true);
diff --git a/test/io/gridmanager/test_gridmanager_gmsh_e_markers.cc b/test/io/gridmanager/test_gridmanager_gmsh_e_markers.cc
index 4fd3826811c5705d68c02b9a64886399ef8b6f21..57b842a9a0f9f419103904a873ee29b9da7056a8 100644
--- a/test/io/gridmanager/test_gridmanager_gmsh_e_markers.cc
+++ b/test/io/gridmanager/test_gridmanager_gmsh_e_markers.cc
@@ -22,14 +22,15 @@
 #include <config.h>
 #include <iostream>
 
-#include <dune/common/parallel/mpihelper.hh>
+#include <dumux/common/initialize.hh>
 #include <dumux/common/parameters.hh>
 
 #include "gridmanagertests.hh"
 
 int main(int argc, char** argv)
 {
-    Dune::MPIHelper::instance(argc, argv);
+    // maybe initialize MPI and/or multithreading backend
+    Dumux::initialize(argc, argv);
 
     Dumux::Parameters::init(argc, argv, "test_gridmanager_gmsh_e_markers.input");
 
diff --git a/test/io/gridmanager/test_gridmanager_mmesh.cc b/test/io/gridmanager/test_gridmanager_mmesh.cc
index 4d6805ad63d440eb5558a3a94b8fdf68aa202d29..e273c59ad04a49195ad7b64b2a88cc3c2e3b3ff5 100644
--- a/test/io/gridmanager/test_gridmanager_mmesh.cc
+++ b/test/io/gridmanager/test_gridmanager_mmesh.cc
@@ -20,16 +20,16 @@
  */
 #include <config.h>
 
-#include <dune/common/parallel/mpihelper.hh>
 #include <dune/grid/io/file/vtk.hh>
+#include <dumux/common/initialize.hh>
 #include <dumux/io/grid/gridmanager_mmesh.hh>
 
 int main(int argc, char** argv)
 {
     using namespace Dumux;
 
-    // Initialize MPI, finalize is done automatically on exit.
-    Dune::MPIHelper::instance(argc, argv);
+    // maybe initialize MPI and/or multithreading backend
+    initialize(argc, argv);
 
     // First set parameters
     Dumux::Parameters::init([](auto& params){
diff --git a/test/io/gridmanager/test_gridmanager_subgrid.cc b/test/io/gridmanager/test_gridmanager_subgrid.cc
index 0426bc008b0faed96f5ad58f8147eca5a34e404a..283ad4ca17ea741509fd3bfd496339dfa6576eb2 100644
--- a/test/io/gridmanager/test_gridmanager_subgrid.cc
+++ b/test/io/gridmanager/test_gridmanager_subgrid.cc
@@ -23,7 +23,6 @@
 #include <cmath>
 #include <string>
 
-#include <dune/common/parallel/mpihelper.hh>
 #include <dune/common/fvector.hh>
 #include <dune/common/timer.hh>
 #include <dune/grid/io/file/vtk.hh>
@@ -33,6 +32,7 @@
 #endif
 
 #include <dumux/io/grid/gridmanager_sub.hh>
+#include <dumux/common/initialize.hh>
 #include <dumux/common/parameters.hh>
 
 
@@ -143,8 +143,8 @@ int main(int argc, char** argv)
 {
     using namespace Dumux;
 
-    // Initialize MPI, finalize is done automatically on exit.
-    Dune::MPIHelper::instance(argc, argv);
+    // maybe initialize MPI and/or multithreading backend
+    initialize(argc, argv);
 
     // First read parameters from input file.
     Dumux::Parameters::init(argc, argv);
diff --git a/test/io/gridmanager/test_gridmanager_vtk.cc b/test/io/gridmanager/test_gridmanager_vtk.cc
index bde55e77b56a6878639c3e9121786dcc3fa30d40..b935dc363eb39edbf54ae4e1275c68c027fae2a6 100644
--- a/test/io/gridmanager/test_gridmanager_vtk.cc
+++ b/test/io/gridmanager/test_gridmanager_vtk.cc
@@ -24,9 +24,9 @@
 #include <algorithm>
 #include <tuple>
 
-#include <dune/common/parallel/mpihelper.hh>
 #include <dune/grid/io/file/vtk.hh>
 
+#include <dumux/common/initialize.hh>
 #include <dumux/common/parameters.hh>
 #include <dumux/io/grid/gridmanager.hh>
 
@@ -88,7 +88,8 @@ void testVTKReader(const std::string& gridName)
 
 int main(int argc, char** argv)
 {
-    Dune::MPIHelper::instance(argc, argv);
+    // maybe initialize MPI and/or multithreading backend
+    Dumux::initialize(argc, argv);
 
     Dumux::Parameters::init(argc, argv, "test_gridmanager_vtk.input");
 
diff --git a/test/io/gridmanager/test_pnm_gridmanager.cc b/test/io/gridmanager/test_pnm_gridmanager.cc
index 7ed07af8f561fb68b1fb8189b64f91f70487d58f..b20fcd1baf36c11365d8b2e76402b0f65f448451 100644
--- a/test/io/gridmanager/test_pnm_gridmanager.cc
+++ b/test/io/gridmanager/test_pnm_gridmanager.cc
@@ -23,6 +23,7 @@
  */
 #include "config.h"
 
+#include <dumux/common/initialize.hh>
 #include <dumux/common/dumuxmessage.hh>
 #include <dumux/common/parameters.hh>
 #include <dumux/io/grid/porenetwork/gridmanager.hh>
@@ -134,8 +135,9 @@ int main(int argc, char** argv) try
 {
     using namespace Dumux;
 
-    // initialize MPI, finalize is done automatically on exit
-    const auto& mpiHelper = Dune::MPIHelper::instance(argc, argv);
+    // maybe initialize MPI and/or multithreading backend
+    initialize(argc, argv);
+    const auto& mpiHelper = Dune::MPIHelper::instance();
 
     // print dumux start message
     if (mpiHelper.rank() == 0)
diff --git a/test/io/gridmanager/test_pnm_subgriddata.cc b/test/io/gridmanager/test_pnm_subgriddata.cc
index 5f3775f64cabbb31942a856f06c180b897efb283..10f632cebb1a5fbb9bce718d1277b1631cd64315 100644
--- a/test/io/gridmanager/test_pnm_subgriddata.cc
+++ b/test/io/gridmanager/test_pnm_subgriddata.cc
@@ -23,6 +23,7 @@
  */
 #include "config.h"
 
+#include <dumux/common/initialize.hh>
 #include <dumux/common/parameters.hh>
 #include <dumux/io/grid/porenetwork/gridmanager.hh>
 #include <dumux/io/grid/gridmanager_sub.hh>
@@ -35,8 +36,8 @@ int main(int argc, char** argv)
 {
     using namespace Dumux;
 
-    // initialize MPI, finalize is done automatically on exit
-    Dune::MPIHelper::instance(argc, argv);
+    // maybe initialize MPI and/or multithreading backend
+    initialize(argc, argv);
 
     // parse command line arguments
     Parameters::init(argc, argv);
diff --git a/test/io/vtk/test_vtk_staggeredfreeflowpvnames.cc b/test/io/vtk/test_vtk_staggeredfreeflowpvnames.cc
index f502115f29f26edb4417d4ca58e7dac13431c1c8..e9b60a2f85c43e8e5f4b31fd6a6e45bd1049d95c 100644
--- a/test/io/vtk/test_vtk_staggeredfreeflowpvnames.cc
+++ b/test/io/vtk/test_vtk_staggeredfreeflowpvnames.cc
@@ -33,6 +33,7 @@
 #include <dune/common/float_cmp.hh>
 #include <dune/grid/yaspgrid.hh>
 
+#include <dumux/common/initialize.hh>
 #include <dumux/common/properties.hh>
 #include <dumux/common/dumuxmessage.hh>
 
@@ -299,8 +300,9 @@ int main(int argc, char** argv)
 {
     using namespace Dumux;
 
-    // initialize MPI, finalize is done automatically on exit
-    const auto& mpiHelper = Dune::MPIHelper::instance(argc, argv);
+    // maybe initialize MPI and/or multithreading backend
+    initialize(argc, argv);
+    const auto& mpiHelper = Dune::MPIHelper::instance();
 
     // print dumux start message
     if (mpiHelper.rank() == 0)
diff --git a/test/io/vtk/test_vtkoutputmodule.cc b/test/io/vtk/test_vtkoutputmodule.cc
index b7ae1d4758be87212ae2cb2287224744a5251ed8..de763412c4a7c59b792868d4391f944b4dd07a62 100644
--- a/test/io/vtk/test_vtkoutputmodule.cc
+++ b/test/io/vtk/test_vtkoutputmodule.cc
@@ -2,9 +2,9 @@
 
 #include <array>
 
-#include <dune/common/parallel/mpihelper.hh>
 #include <dune/grid/yaspgrid.hh>
 
+#include <dumux/common/initialize.hh>
 #include <dumux/common/parameters.hh>
 #include <dumux/io/vtkoutputmodule.hh>
 #include <dumux/discretization/cellcentered/tpfa/fvgridgeometry.hh>
@@ -13,7 +13,8 @@ int main(int argc, char** argv)
 {
     using namespace Dumux;
 
-    Dune::MPIHelper::instance(argc, argv);
+    // maybe initialize MPI and/or multithreading backend
+    initialize(argc, argv);
 
     Parameters::init([](Dune::ParameterTree& params)
     {
diff --git a/test/io/vtk/test_vtkreader.cc b/test/io/vtk/test_vtkreader.cc
index fe05d7533ccdffdd3f5a39cce784f0cf179d7dea..adc90ec5787a37dac60704dffb6853c544e72a60 100644
--- a/test/io/vtk/test_vtkreader.cc
+++ b/test/io/vtk/test_vtkreader.cc
@@ -23,7 +23,6 @@
 #include <iostream>
 #include <memory>
 
-#include <dune/common/parallel/mpihelper.hh>
 #include <dune/grid/common/mcmgmapper.hh>
 #include <dune/grid/io/file/vtk/vtkwriter.hh>
 
@@ -37,12 +36,14 @@
 #include <dune/foamgrid/foamgrid.hh>
 #endif
 
+#include <dumux/common/initialize.hh>
 #include <dumux/common/exceptions.hh>
 #include <dumux/io/vtk/vtkreader.hh>
 
 int main(int argc, char** argv)
 {
-    Dune::MPIHelper::instance(argc, argv);
+    // maybe initialize MPI and/or multithreading backend
+    Dumux::initialize(argc, argv);
 
     if (argc != 3)
         DUNE_THROW(Dune::IOError, "Needs two arguments, the vtk file name and an output file base name");