After looking at test execution times for PHPUnit's databaseless + database tests in T225730#5570377, I thought again about T50217 but in a different context. T50217 is probably still worth investigating on its own, but a different take on this would have Quibble doing some of the work for us using python's multiprocessing library. The rough idea would be that when the execution plan contains both databaseless and database phpunit runs, rather than the current pattern of
for command in plan: with quibble.Chronometer(str(command), self.log.info): command.execute()
We would instead use multiprocessing to start two processes, one for databaseless tests and one for database tests, then collect the error code and output for both processes.