In a previous blog post we have covered how to do build automation with Unity and how we use Jenkins for automated builds and testing. The topic of this post takes a closer look at our automated testing systems and daily QA builds specifically for iPad, since we are developing The Supernauts for the iOS platform.
Background
In short, Jenkins deploys each version of the server to our development environment. As the commits roll in the server revision changes every ten minutes or so. In case something fails, the error is reported to our Flowdock Team Inbox, so our developers immediately see what is happening (and how often).
Both the client and the server component run based on the same game logic, so we need to keep the client in sync with the current revision of the server.
Deploying to iPad
For actual game testing we use TestFlight that enables easy distribution of builds to beta testers both inside and outside of the company. At the moment we are using the TestFlight desktop application to send out a fresh build of the game on a daily basis. The application automatically finds the archive, which makes it easy to upload the build and notify the testers without going to TestFlight’s website. Nice.
To make sure that the iOS client build actually works – with all those commits coming from every direction – we run a set of servers for the daily QA build. In addition, we have a Jenkins task to deploy the server and the changes in the database. This means that anyone can deploy the daily QA build to the beta testers.
In the future: moar automation
Thanks to TestFlight and automated deployment practically everyone in our team can create the daily QA build and update the servers. What still requires manual labor and a special set of software are the iPad builds done with Unity (and Xcode). Our next aim is to automate these tasks as well. We have just started to work with this to get it up and running. It seems that it should not be too difficult, since TestFlight has an upload API and we already run Unity in batch mode to create the Web Player builds.