Android is the most popular operating system in the world with over 2.5 billion active users. With such a large user base and device diversity, it is important to test your app on as many devices and in as many scenarios as possible. Cloud-based device farms are great for testing on a large number of devices, but they are not always the best option. In this article, we will discuss what is an in-house distributed device lab and why you might want to set one up.
Reasons for setting up an Internal Device Lab
Cloud-based device farms have many advantages. They are easy to set up and give you access to a large number of devices. However, there are many reasons why you might want to set up an internal device lab for your development workflow:
Custom Hardware/Environment Setup
For some organizations, it is important to test their apps with specific companion hardware or in a particular environment. For example, if you are developing an app for a smart home, you might want to test it with a smart home hub. If your app requires the device to be present in a location with certain defined network conditions, you might want to test it in that location. To test the functionality of your app in these environments, you will need them at a controlled location which you can access at any time. Cloud-based testing services do not allow you to test your app in these environments or with these companion devices. You will need to set up an internal device lab to test your app in these environments.
Unreleased Devices
If your organization is involved in the development of a new device or working with a device original equipment manufacturer (OEM), or a network operator, you might have to test your app on unreleased devices. These devices, by definition, are not available on cloud-based testing services. In these cases, you will need to integrate these devices into your internal device lab to test your app on them.
Large Test Workloads
Sometimes your testing workloads might be very large or intensive, for example, if you are running a long-running test suite or some kind of stress test. You might want to run the test overnight or running the test might cause the device to crash. In these cases, you will prefer to run the test on your own devices rather than on cloud-based testing services. This is because you might have to monitor the device while the test is running and you may need to access the device at any time. Cloud-based testing services do not easily allow you to do this.
Debug Specific Devices
For use cases where you need to debug under specific conditions or require a live-debugging setup with access to the device, using a cloud-based device farm is not an option as physical access to the device is required. In these cases, you will need to have the devices in your lab.
The above are just a few reasons why you might want to set up an internal device lab. But even setting up an internal device lab has its challenges and costs. It might not be feasible for every organization to set one up. Especially, if you are a small organization or a startup, it might not be feasible to set up a device lab given the costs and time required to set it up. In the next section, we will introduce a novel approach for sharing devices within an organization/team -- one which is easy to set up and maintain, with significantly lower costs.
What is a Distributed Device Lab?
Having a device lab with centrally managed devices is a great way to share devices within an organization. However, setting up and maintaining a device lab is not easy. It requires a lot of time, effort and resources. It is also not convenient to use such a lab for remote development and testing. For such use cases, it is better to have a distributed device lab. Exactly as it sounds, it is a network of devices that are connected and distributed across different locations and are freely accessible to any computer in the network which allows you to share devices within an organization. It is easy to set up, maintain and scale. It is also easy to use for remote development and testing.
An in-house distributed device lab combines the ease of use and mobility of a cloud-based device farm with the flexibility of an internal device lab. At its core, it is a distributed network of devices that are remotely discoverable and accessible by users within the network. Since the devices are distributed, it is easy to maintain the devices and scale up by adding more devices. The device network is still located and managed in-house which means that the organization has full control over the devices and the data. The organization can also set up policies to control how the devices are utilized. Apart from being distributed, what makes it different from a purely physical device lab is the dual nature in which devices can be accessed -- either by physical access or by remote access. This means that the devices can be used seamlessly for remote development and if required, physically accessed for special setups and debugging purposes.
How does it lower costs?
The biggest advantage of a distributed device lab is that it significantly reduces the cost of setting up and maintaining a device lab. The cost of setting up a device lab is primarily driven by the cost of devices and lab infrastructure required. The cost of the devices is a function of the number of devices and the cost of maintenance is a function of the time and effort required to maintain them. Costs are reduced by reducing the number of devices, and the time and effort required to maintain them. This is because it is a distributed network of devices which allows you to localize micro clusters of devices at different locations which are easy to maintain.
By making devices remotely discoverable, a distributed device lab significantly reduces the friction of sharing and using devices among team members. This leads to an increase in the utilization of devices, which in turn reduces the cost of setup. As an added benefit, developer productivity also increases as they can discover and access devices faster without being bogged down by the overhead of acquiring devices. In addition to this, it is easy to scale up and down. This means that you can add or remove devices as per your needs.
Conclusion
Using a cloud-based testing service is great for many organizations and teams, however, several use cases require companies to rely on devices that are internally located and managed. Using an in-house device lab is required in such cases. However, the complexity and costs associated with setting up a device lab are prohibitive for many teams and organizations. We discussed how setting up a distributed device lab can be a great alternative to setting up a centrally located physical device lab. We hope that this article has given you a better understanding of what it is and why you might want to set it up. If you are interested in setting up a distributed device lab or have any questions, please feel free to reach out to us.