A suite that takes twenty minutes gets run less often, which is the opposite of what it is for. Groups let the fast tests gate every push and the slow ones run separately.
<!-- phpunit.xml -->
<groups>
<exclude><group>slow</group></exclude>
</groups>
/**
* @group slow
* @group integration
*/
public function testFullCatalogueReindex() { /* ... */ }
Excluding a group in the configuration means the default run is fast and the slow tests need asking for — phpunit --group slow in a nightly job. The risk is obvious and worth stating: an excluded group nobody runs is dead weight that will fail whenever it is next executed. The CI configuration must run everything somewhere, or the split is just a way to stop looking.