Introduction to Mobile Application Testing With Appium

Introduction to Mobile Application Testing

In the fast growing world, the mobile phone is not only a device to make and receive telephone calls but also a multipurpose personal gadget. There are more technological improvement and the propagation on mobile devices with different Operating Systems like Apple iOS, Android, Windows Phone, Blackberry, and Symbian etc. In the fast growing world, there are new challenges for hardware manufactures to stay in the competition.

Mobile application testing is a process by which application software developed for hand held mobile devices is tested for its functionality, usability and consistency.

Mobile application testing can be automated or manual type of testing.

Mobile applications either come pre-installed or can be installed from mobile software distribution platforms. Mobile devices have witnessed a phenomenal growth in the past few years.

Key Challenges in Mobile Application Testing

  • Variety of Mobile Devices
  • Diversity in Mobile Platforms/OSes
  • Device Availability:.
  • Mobile network operators
  • Scripting
  • Choosing how to test

Types of Mobile Application Testing

  • Functional Testing
  • Performance Testing
  • Memory Leakage Testing
  • Interrupt Testing
  • Usability testing
  • Installation testing
  • Certification Testing
  • Security Testing

Ten Open Source Mobile Test Automation Tools.

Mobile Test Tools – A collection of the best open source mobile test automation tools than you can use to test mobile apps and websites on mobile devices.

  • Appium
  • Calabash (Android and iOS)
  • Frank (iOS)
  • Monkey Talk (Android and iOS)
  • iOS UI Automation (iOS)
  • Robotium (Android)
  • iOS-driver (iOS)
  • UI Automator (Android)
  • KeepItFunctional (iOS)
  • Selendroid (Android)

What is Selenium?

Selenium is an open source test automation framework that supports cross browser test automation. Selenium supports perl, php, python, objective-c, java, Microsoft.net, ruby, and more. It is not a tool with a user interface. You have to code your tests. You also need a programming language to use it specifically.

What is Appium?

  • Appium is mobile web, native and hybrid software application test automation tool.

  • It is open-source software automation tool, which is useful to automate android and IOS platform apps.

  • Most important thing is : Appium is “cross-platform” automation tool so you can write software automation tests against iOS and Android (multiple platforms) using same API.

  • “cross-platform” enables you large amount of code reuse between iOS and Android test suites.

  • Appium support software test automation on emulator or simulator and physical mobile devices too.

  • Appium is developed on few key philosophy points : 1. Should not have to recompile your app to automate it. 2. Should not be locked into a specific language or framework. 3. Should be open source and 4. Should not reinvent the wheel when it comes to automation APIs.

Multiple Platforms Support

  • Android
  • IOS
  • FirefoxOS

Multiple Languages Support

Appium supports bellow given languages with the Selenium WebDriver API and language-specific client libraries.

  • Java
  • Objective-C
  • JavaScript with Node.js
  • PHP
  • Python
  • Ruby
  • C#
  • Clojure
  • Perl

Also there are other advantages like no source code is needed to test app as you can test it directly, also you can engage built in apps like camera, calendar etc in your test script if required.

Limitations of Appium

There are few limitations in appium right now.

  • For Android, No Support for Android API level < 17.
  • Script execution is very slow on IOS platform.
  • Gestures support is limited.
  • No support for Toast messages.
  • Appium’s Architecture

Appium is an HTTP server written in node.js, which creates and handles multiple WebDriver sessions for different platforms like iOS and Android.

Appium starts a “test case” on the device that spawns a server and listens for proxied commands from the main Appium server. It is almost same as Selenium server, which perceives http requests from selenium client libraries, and it handles those requests in different ways depending upon the platforms. Each vendor like iOS and Android have a different way and mechanism to run a test case on the device so Appium kind of hacks in to it and run this test case after listening commands from appium server.

How Appium works in iOS?

In iOS, Appium works in these below given steps as shown in the above picture

  1. Appium client (Java or Python) connects with Appium Server and communicate via JSON Wire Protocol (*ignore in C# in picture)

  2. Appium Server then creates a automation session for the client and also checks the desired capabilities of client and connects with respective vendor-provided framework UIAutomation

  3. UIAutomation will then communicate with bootstrap.js which is running in Simulator/Real device for performing client operations

  4. Bootstrap.js will perform action on our AUT (Application Under Test)

How Appium works in Android?

In Android, Appium works in these below given steps as shown in the above picture

  1. Appium client (C# or Java) connects with Appium Server and communicate vison Wire Protocol

  2. Appium Server then creates a automation session for the client and also checks the desired capabilities of client and connects with respective vendor-provided frameworks like Splendored/UIAutomator (based on android versions)

  3. Vendor-provided frameworks will then communicate with bootstrap.jar which is running in Emulator/Real device for performing client operations

  4. jar act as a TCP server to perform action on our AUT (Application Under Test)