Various techniques exist to speed up test execution, including running them in parallel over many machines and using test doubles for slow remote services.But this article will focus on reducing the number of tests to run, by identifying those most likely to identify a newly added bug.The ones executed for given commits, with two failures resulting.

eclipse updating maven dependencies slow-20

Those teams might also harbor someone who sometimes wants to 'economize' on the agreed integration process and NOT run tests.

Luckily, CI servers and a decent series of build steps are how you quickly catch those moments.

Test Impact Analysis (TIA) is a modern way of speeding up the test automation phase of a build.

It works by analyzing the call-graph of the source code to work out which tests should be run after a change to production code.

At least in order to push towards optimal groupings.

That implied that they could be insufficiently, inexactly, and incorrectly grouped too, which is common enough, even if difficult for humans to determine.

I have only depicted a tree/fractal because it helps explain the concepts (it is not really like that).

Google's fabled internal build system Blaze, has been copied into a few open source technologies over the years.

We then create a deployment pipeline to run slower tests later.

The same problem restated: If tests ran infinitely quickly, we would run all the tests all the time, but they are not, so we need to balance cost vs value when running them.

With a test pyramid structure, we run unit tests more frequently because they usually run faster, are less brittle and give more specific feedback.