Nowadays the iOS market has the abundance of Apple devices and iOS versions. When you create the iOS application you need to make sure that it will meet users' expectations on each platform. Testing each device and iOS version manually on every step of the project is time-consuming and in most cases - expensive.
This is where test automation comes in hand. Test automation is the use of special software to control the execution of tests and the comparison of actual outcomes with predicted outcomes. Automated testing enables you to detect the bug and performance issues quickly.
The benefits are:
- Automated testing can run on multiple devices, saving your time significantly;
- Automated testing is more reliable, as it is performed by tools and/or scripts.
- You can schedule the testing whenever it is convenient both for the project and the team;
- Tests can run in either multiple versions of Simulator or on multiple devices connected to the server.
Automation is especially useful during regression testing. Regression testing is a type of software testing that ensures that previously developed and tested software still performs the same way after it is changed or interfaced with other software. During this stage, automation speeds up the process 1.5 times compared to manual testing. Especially if there is a need to perform testing on several devices and OS versions, for which we apply parallel test automation.
Apple made it very easy by providing us with the XCode. Xcode is an integrated development environment (IDE) for macOS containing a suite of software development tools for developing and debugging software for macOS and iOS. Xcode allows to run the same test on different devices simultaneously, or run a different set of tests on different devices. As we mentioned before the test can run in simulators or on real devices:
- If the tests are running in simulators, it means that no physical device is used. The development environment - in our case Xcode - offers the list of possible virtual devices and the team indicates the “destination” (platform, devices, and OS versions) in the command line. This type of testing is 96% accurate, but still, the simulators don’t give you the full picture of how your app will work on the various devices in real life. But there is also an option to run parallel tests on multiple devices.
- The process of running parallel tests on real devices is similar to the tests in simulators. However, here we are using physical devices, meaning there is no need to pick the virtual ones from the list. You specify what iOS devices and OS versions you need your app to be working, the team connects multiple iPhones and then starts the tests in the same development environment. The “destination” here would change to the UDID of the connected devices.
- Xcode also allows Server-Based Testing with Continuous Integration. The server runs the tests time after time, in exactly the same way. The reportage from the server provides a picture of build issues, build warnings, and test resolutions. Reports are generated after each test is completed.
Below you can see how this works in reality. We had a banking app tested simultaneously on 8 iOS devices attached to the Mac Mini.