Incredibuild for Unit Tests
Incredibuild for Unit Tests accelerates the unit testing process by harnessing idle CPU cores across machines on your local or cloud-based network. Unlike existing solutions, which require installation of multiple testing environments on dedicated machines to run assembly tests (including databases, frameworks, etc.), Incredibuild for Unit Tests offers a zero-configuration approach. A simple installation of Incredibuild Agents on each machine that will be part of your Incredibuild Environment, can immediately scale your testing capacity and dramatically accelerate your testing process. No dedicated machines or complicated installation are needed. Incredibuild for Unit Tests allows you to run on each CI process more tests, much faster, improving your product quality, while accelerating your time to market.
Incredibuild for Unit Tests supports all major unit test frameworks, including NUnit, Google Test, XUnit, MSTest/VSTest, and more.
How existing solutions work
Unit test frameworks offer the following acceleration options:
- Parallel execution on a single machine – some frameworks support native parallel execution of processes, utilizing multiple cores on the same machine. If you have, for example, 120 tests, running them on single machine with 4 CPU Cores can support the execution of 30 tests simultaneously. However, not all test frameworks support this option, and there are many related issues, depending on the type of tests you want to run.
- Parallel execution on multiple machines – in general, unit test frameworks do not support acceleration across multiple machines. It is theoretically possible to run different assemblies (DLLs) on different machines. However, each machine requires the installation of an entire testing environment to execute the test and generate the results.
How Incredibuild for Unit Tests Works
Incredibuild for Unit Tests enables parallel execution of unit test processes across any number of local and remote CPU cores. This occurs without the need to allocate dedicated machines, since Incredibuild can use idle CPU cycles on any machine, even when the machine is being used for another purpose. In addition, there is no need to install testing environments on each participating machine.
Incredibuild distributes virtual processes to the remote machines across the network of Incredibuild Agents, while simulating the machine executing the tests on the remote Helper machines. This means that although the processes are executed on remote machines, they behave as if they were running on the Initiator machine, accelerating the tests executed by the CI as well as the tests executed by developers. Since Incredibuild transforms each developer machine into hundreds of cores, developers can run the entire test suite before committing a fix to the GIT, therefore not having to compromise on a partial test. By using Incredibuild, you can dramatically reduce the number of builds that fail in the CI, and eliminate unnecessary iteration between DevOps and developers.
The solution includes the following components:
-
Initiator Agents – this is where the testing framework is installed; the machine from which the executions are initiated.
-
Helper Agents – these are installed on remote machines (there could be one, or as many as you need). Machines that will be used as Helpers only need the Incredibuild Agent installed. There is no need to install the test framework or any other test environment resources on machines that will only act as Helpers.
-
Coordinator – this can be installed on any of the participating machines, preferably a high-availability machine. Optionally, a Backup Coordinator can be installed as well.