Android & iOS Automation Using Appium

18,126 views

Published on

This presentation will help anyone interested to have a quick start guide on Appium for automation testing on Android and iOS mobile apps.

Published in: Software, Technology

Android & iOS Automation Using Appium

  1. 1. Android & iOS automation using Appium Pre se nte r : Abhishe k Swain, Mindfire So lutio ns
  2. 2. About Me: Abhishek Swain, Software QA Engineer Mindfire Solutions Skills : Robotium , Appium , Selenium WebDriver , Maven , Junit , SQL .... Certifications : ISTQB Foundation Level, V-Skills Selenium Certified Connect Me : Facebook : http://www.facebook.com/jikun55 LinkedIn : http://in.linkedin.com/pub/abhishek-swain/58/8a/829/ Contact Me : Email : abhishek.swain@mindfiresolutions.com /mfsi.abhishek@gmail.com Skype: mfsi_abhishekswain
  3. 3. Agenda  Introduction  Features List  Current Limitations  Understanding Architecture  Automating Android Apps  Native/ Hybrid app  Mobile Web app  Automating iOS Apps  Prerequisites and configurations  On Simulators  On Real iDevices  Short Demo  Questions & Answers
  4. 4. Introduction Appium is an Open source , Cross Platform test automation tool for mobile apps Hosted with GitHub  Maintained by Dan Cuellar, Jonathan Lipps and a number of other contributors Supports automation of Native , Hybrid and Mobile Web apps Based on WebDriver JSON wire protocol Based on Client-Server Architecture Appium Server written in Node.js
  5. 5. Features Automation support for  iOS Mobile  Android  Firefox mobile OS Cross-Platform
  6. 6. Features Automation support for  Native App  Hybrid App  Mobile Web App Application Types
  7. 7. Features  Supports all the WebDriver Client Libraries  Java  Ruby  Python  JavaScript  PHP  C# Multiple Client Libraries
  8. 8. Features  Common Library for all the mobile platforms e.g. Android , iOS  Selenium WebDriver Interfaces implemented  Added mobile specific functions e.g. driver.pinch(), driver.zoom(), driver.currentActivity(), driver.lock() etc.  Common API for both Native and Web components Common API
  9. 9. Features  Android  Real Devices  Emulators  Native Browser  Mobile Chrome  iOS  Real iDevices (e.g. iPhone, iPad etc.)  Simulators  Mobile Safari Test Modalities
  10. 10. Limitations  Android  No Support for Toast messages  Android Version 4.2+ required  iOS  Needs mac OSX 10.7+, lower versions not supported
  11. 11. Architecture  Client Server Architecture  Based on WebDriver JSON Wire Protocol  Native test libraries of respective platform is the backbone of the backend
  12. 12. Architecture  Android  UiAutomator ( Version 4.2 or +)  Default Backend for Android  Selendroid ( Version 2.3+)  A separate open source project for Android automation  Instrumentation is the Backend  iOS  Apple’s UIAutomation Framework Which Native Library for Which Platform
  13. 13. Automation of Android Apps Native & Hybrid Apps
  14. 14. Requirements : (Java)  JAVA IDE (Eclipse)  Java JDK  Maven Plugin for Eclipse  Selenium WebDriver Dependencies/Appium Java-Client Dependency (Maven)  Android SDK  Junit  Emulator/ Real Device  Appium Server  Node.js (If running appium from source)
  15. 15. Configurations:  Environment Variables & Path Settings  JAVA_HOME  ANDROID_HOME  MAVEN_HOME  Android Platform Version 4.2+ must be installed
  16. 16. Test Script Development :  Create a maven project in Eclipse  Add dependency <dependency> <groupId>io.appium</groupId> <artifactId>java-client</artifactId> <version>1.1.0</version> </dependency>
  17. 17. Test Script Development : public void setUp() throws Exception { File classpathRoot = new File(System.getProperty("user.dir")); File appDir = new File(classpathRoot, "../../../apps/"); File app = new File(appDir, "App_Name.apk"); DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("deviceName","Android"); capabilities.setCapability("browserName", ""); capabilities.setCapability("platformVersion", "4.4"); capabilities.setCapability("app", app.getAbsolutePath()); capabilities.setCapability("appPackage", “package_name "); capabilities.setCapability("appActivity", ".activity_name"); driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); } public void tearDown() throws Exception { driver.quit(); }
  18. 18. Starting Appium Server From Source: Install Node.js Download Appium or Clone it using GitHub In cmd navigate to node_modules/appium/bin Run 'node appium [server arguments]' From GUI Interface: Do the configurations as needed from GUI Click launch button to launch appium server
  19. 19. Appium Server Arguments Usage : node appium [arguments](windows), appium & [arguments] (mac) --app : To specify the path to the AUT(iOS: .app, android: apk) -U , --udid : Unique device identifier of the connected physical device -a, --address : IP Address to listen on -p, --port : port to listen on --session-override : Enables session override --full-reset : (iOS) Delete the entire simulator folder. (Android) Reset app state by uninstalling app instead of clearing app data. On Android, this will also remove the app after the session is complete. --no-reset : Don't reset app state between sessions -l, --pre-launch : Pre-launch the application before allowing the first session Complete List : https://github.com/appium/appium/blob/master/docs/en/server-args.md
  20. 20. Automation of Android Apps Web Apps
  21. 21. Automating Web Apps public void setUp() throws Exception { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("platformVersion", "4.4"); capabilities.setCapability("platformName","Android"); capabilities.setCapability("deviceName","Android Emulator"); capabilities.setCapability("browserName", "Browser or Chrome"); capabilities.setCapability("platformVersion", "4.4"); capabilities.setCapability("app", app.getAbsolutePath()); driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); }
  22. 22. Automating Web Apps  Download Google Chrome(30+) in PC  Navigate to ‘chrome://inspect’  Connect device / Start Emulator  Open the browser in the Device/Emulator and navigate to the URL under test  Click on inspect button on Chrome to get the page source and inspect elements How to get Locators?
  23. 23. Automation of iOS Apps
  24. 24. Requirements : (Java)  Mac OS X 10.7+  Xcode 4.6.3+  iOS SDKs with Command Line Tools  JAVA IDE (Eclipse)  Java JDK  Maven Plugin for Eclipse  Selenium WebDriver Dependencies  Junit  Simulator/ Real Device  Appium Server  Node.js (If running appium from source)
  25. 25. Configurations:  Environment Variables & Path Settings  JAVA_HOME  ANDROID_HOME  MAVEN_HOME  iOS SDKs with Command Line Tools  Authorize the use of Instuments  Sudo grunt authorize (If running from source)  An alert prompts to do so if used GUI version of Appium
  26. 26. Collecting the .app build of AUT  Compile and Run the source code of AUT in iOS Simulators  Navigate to Library Application Support→ → iPhone Simulator [version] Applications→ → → [choose_folder_which_belongs_to_compiled_pro ject] application_name.app→
  27. 27. Developing Test Scripts public void setUp() throws Exception { File appDir = new File(System.getProperty("user.dir"), "../../../apps/"); File app = new File(appDir, “App_Name.app"); DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("browserName", ""); capabilities.setCapability("platformVersion", "7.1"); capabilities.setCapability("platformName", "Mac"); capabilities.setCapability("deviceName", "iPhone Simulator"); capabilities.setCapability("app", app.getAbsolutePath()); driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); } public void tearDown() throws Exception { driver.quit(); }
  28. 28. Starting Appium Server From Source: From Terminal run the following commands > brew install node # get node.js > npm install -g appium # get appium > npm install wd # get appium client > appium & # start appium From GUI Interface: > Make required configurations from GUI > Click Launch button to launch appium server
  29. 29. Running with Real Devices  Specify device UDID with appium server arguments or with the GUI version  Compile source of AUT in debug mode  AUT must be compiled with a Developers Signature and a Developer Provisioning profile(Not Distribution type)  Device must be authorized as a development device with xcode  Specify Bundle ID with appium after installing the ipa or running the AUT project directly to device
  30. 30. Appium Server Capabilities Complete List: https://github.com/appium/appium/blob/master/docs/en/caps.md
  31. 31. Locating Elements  By Class (UI component type) E.g UIATextField , UIAStaticText (iOS) android.widget.Button , android.widget.EditText (Android)  By Xpath (An abstract representation of certain element with constraints)  By Id  Some of the Mobile JSON Wire Protocol Strategies Accessibility ID (for iOS the accessibility identifier and for Android the content-description)
  32. 32. Appium Inspector  Inspect Elements and the element hierarchy with a GUI interface  Inspect the associated attributes of an element  Easily identify the Xpath for all the elements  Find the enable/disable status of an element  Record test scripts and export in the desired language  Verify mobile commands from Inspector before implementation
  33. 33. www.mindfiresolutions.com https://www.facebook.com/MindfireSolutions http://www.linkedin.com/company/mindfire-solutions http://twitter.com/mindfires
  34. 34. References  appium.io  github.com/appium/appium

×