Pre Requisites
In the previous section, we have seen an end-end pipeline aka. CI pipeline demonstration. From here on, lets jump into more details and hands-on.
Windows vs. Mac
To develop an iApp, you would need a Mac, as the development environment, runtime and in fact the OS itself has to be OSX
To develop Android app, either Mac or Windows would do. However I would recommend using Mac over windows because of the following experiences I had
- Device drivers were easier on Mac
- System resources (CPU, Ram) etc. performed better on Mac
- Emulator performs relatively better on Mac
- Most online examples refer to Mac environment
- In general, Android OS and iOS are *nix core underneath, hence experience of developing, debugging and testing feels better on Mac
Note: This book uses Mac for both hardware and underlying os
Mac Environment
The below Mac environment is where all the examples in this book were tried upon.
Mobile Devices
Have at least one Android real device. It would be preferable to have Android 4.4 or above, API 17 or above. With Android 4.2 and earlier, the appium server needs to be started with selendroid-port in addition to the bootstrap-port. More details you you continue reading further.
Network
It would be great if all the servers (Jenkins, Nexus, sonar, appium etcetera) and build machine are in the same network segment. At the minimum, they should be able to ping (assuming ICMP is not disabled) and are able to reach each other on the ports that the processes listen (mostly TCP). (For example, Jenkins might be running on web 8080, so we should be able to reach http://jenkins_url:8080 from all other machines)
Platform
The following domain knowledge will be required to a certain extent.
- Java Programming language & runtime (Android app source is in Java)
- Ruby Programmming language (understand the automation framework written with Cucumber & Ruby)
- Usage of both Windows and *nix operating systems.
Other languages
The test automation framework uses Ruby, however we are actively writing Python, Java and JavaScript equivalent code. Please write to us if you are interested in other programming languages to this email