End-to-End Testing of Unity Games and Apps
Game Testing Case Study
- Provide fast prototyping, trying out new graphics quick.
- Help deploy apps to many platforms such as IOS, Android, Windows and Mac.
- Complete automation of the testing process, achieving end-to-end testing of unity apps.
Types of testing
UI Driven Testing
Mobile Application Testing
Tools & technologies
A couple of years ago we started working with a company in their New Concepts team as testers and app developers. Our client was creating simple clean apps, testing a lot of new ideas that had to be delivered fast.
The needs and challenges
As part of their team, we were trying out a lot of new ideas, developing small apps, and prototyping a lot of solutions in a very fast-paced environment. Along with new ideas, we also needed to try new graphical designs and we needed to create apps that were fast to develop and could be deployed to a multitude of platforms if needed. We focused mostly on iOS and Android, but we needed to know that the apps could run on Windows and Mac.
The incredible agility of Unity for development
After trying out a few options, including some web frameworks, we decided to develop all our apps in Unity. It has support for any platform that we could ever need and it’s excellent for fast prototyping, with incredible graphics on every platform and with an abundance of ready-made artworks, scripts, plugins, and solutions available on their Asset Store.
The struggles of test automation using Appium and image recognition
While Unity allowed us to be very productive on the development side, we were again struggling on the testing side.
We had to deal with a lot of apps that still required a lot of testing. Most of these apps also had to work together as part of a system, and we often found ourselves trying to figure out ways to deploy and run some automated checks on our environment automatically.
While the apps were relatively simple and would have been the perfect candidate for simple automated checks with Appium (which works on Android, iOS, and even Windows nowadays), Unity didn’t have a solution for running these types of system-level / UI driven tests on real devices.
Finding a solution for UI driven test automation in Unity
While searching for a solution for these two problems, Rasmus Selsmark, a fellow tester who works at Unity in Helsinki, told us about this hack-day project that provides one possible option for running Appium tests against Unity games and getting feedback from Unity about the objects on the screen via the Debug.Log() functionality – so essentially by injecting information about specific objects in the device logs (logcat on Android or syslog on iOS), from where they can then be parsed and used inside the Appium tests.
We tried it out and then decided to try to implement something similar using a TCP socket running from the Unity game that can listen to commands sent from the tests. And so we created AltUnityTester.
One of the biggest challenges of this project was to provide solutions for fast delivery. The needs were simple: create fast to develop mobile apps, that could be deployed to a multitude of platforms. Our first solution was to use Unity, for fast prototyping. Our second solution was to create a new testing tool for UI driven test automation.
Struggling with game test automation?
We can find a solution suitable for you!
or call +40 371 426 297