What is a test farm?
A "Test Farm” (sometimes also called “board farm” or “device farm”) in an embedded context is a setup of a certain number of nodes (such as evaluation boards, prototype boards, production boards, finished products, etc.) that are connected to a network via a debug probe so that they are remotely accessible to testers or developers.
What are the benefits of having a test farm?
Test farms offer many benefits to embedded developers or test engineers.
They are perfect for working remotely, since they allow access to hardware from anywhere for software development and debugging. Users can simply connect to one of the boards in the test farm over the network, control power, download firmware, and run, debug, and test their software on real hardware.
Furthermore, the boards in the test farm have preconfigured standard setups (e.g. in terms of jumpers, switches, etc.), which guarantees that the boards are in the expected state, making it unnecessary to set up their own environment at their desk or elsewhere.
Test farms are also a very efficient way to share access to hardware that is in limited supply among a number of users. They reduce the need for shipping boards around or work in a simulated environment.
Additionally, automated build systems can run tests on the same standard setup. This is great for regression testing, continuous integration, compiler tests, and more.
How is a test farm set up?
The illustration below shows an example of a typical test farm with multiple nodes.
Each node contains a SEGGER J-Link PRO debug probe, which on the target side is connected to the device under test (DuT) via the SEGGER Test Farm Power Adapter (allowing to control the power supply to the DuT) and one of SEGGER’s many target adapters (the exact type depends on the debug connector on the DuT).
On the host side, each J-Link PRO is connected to the local area network (LAN) via its Ethernet interface. In case the LAN employs Power over Ethernet (PoE) technology, the J-Link PROs can be powered via PoE splitters, simplifying the setup.
Many test farms are set up in such way that all nodes are identical. However, it might be useful to offer access to the same hardware in different configurations, or allow users to connect to a variety of completely different boards.
What are typical applications of a test farm?
Test farms are very useful for semiconductor vendors who want to do continuous integration (CI) as well as regression testing of their device drivers, example code, etc. It also allows them to test their software on a variety of evaluation boards and with a variety of toolchains.
Companies developing embedded applications will benefit from a test farm for similar reasons. CI makes software development easier, faster, and less risky for developers. By automating builds and tests, developers can make smaller changes and commit them with confidence. Software developers get feedback on their code sooner, increasing the overall pace of innovation.