Suyash Dubey | Posted on | 2 min Read

[xyz-ihs snippet=”quickLinks-mobile-app-testing”]

The second blog in the series “Start to end guide for mobile app testing”

 

Basics and Comparison

In the previous blog in this series, we talked about the evolution of mobile technology. In this blog, you will know more about the two most popular mobile operating systems, Android and iOS. Here you can also learn about the Android architecture, concepts of Android SDK, emulators and iOS architecture and mobile cloud. Let’s start by getting familiar with Android versions.

 

What is Android?

Android is a software bunch comprising not just the operating system but also middleware and key applications. It is developed by Google and later by the Open Handset Alliance but it is not limited to only mobiles. In other words, it is a complete set of software required for the development of smart devices such as smartphones, tablets, notebooks, set-top boxes, TVs, smart watches, etc. Android is a Linux based open source software platform. The application development in Android is done in the Java language.

 

Versions of Android

The first version of Android was launched on the HTC Dream mobile in the year 2008. Since then Android has been evolving constantly and now it has the largest user base of around 88% global market share. Android OS versions are released with a name following the alphabetical order, such as Android 1.1, 1.5-Cupcake, 1.6-Donut, 2.0/2.1-Eclair,2.2-Froyo,2.3-Gingerbread,3.X-Honeycomb,4.0-Ice Cream Sandwich, 4.1/4.2/4.3-Jelly Bean, 4.4-KitKat, 5.0-Lollipop, 6.0-Marshmallow, 7.0-Nougat, 8.0-Oreo and 9.0- Pie being the latest of all the versions.

 

Versions of Android

Why so buzz about Android?

Whenever we hear the word Android, we usually think about the ‘smart phones’. This is how Android is placed in our minds. It is one of the most successful mobile operating systems in the market today. Android apps are the most downloaded apps in the app stores. It runs on millions of mobile devices in more than 190 countries in the world. Around 1.5 billion apps and games are downloaded from Google play store in a month. It does not fail to impress its users by consistently introducing new features. It is open source, so any android variant can be developed using the source code. It supports wireless communication including 3G, 4G, WiFi, and Bluetooth. Android keeps introducing its new and upgraded versions, often. Due to its popularity, around 1million new Android devices are activated worldwide in a day. Google play is an open marketplace for developers to sell and distribute their mobile apps. It has already entered the field of Artificial Intelligence enabling the apps to be more intuitive and user-friendly.

 

Android Architecture

Android is architected in the form of a software stack comprising applications, an operating system, run-time environment, middleware, services, and libraries. The following figure is the visual outline of the elements integrated layer by layer. These all elements are the prerequisites of the mobile app development and to make the app environment ready. Android Architecture is categorized as Linux kernel, native libraries(middleware), Android runtime, Application framework, and applications.
 

  • Linux Kernel- It exists at the root of the Android architecture. It contains all drivers for hardware components, battery and memory management, resource access and device management. Android only uses the Linux Kernel.
  •  

  • Libraries – It is the layer above the Linux Kernel, including native libraries such as WebKit, OpenGL, FreeType, SQLite, Media framework, C runtime library(Libc), etc. Webkit library supports the web browsing engine, SQLite is used for sharing and storing application data, Media to play record audio/video, etc. FreeType is for processing fonts, SSL libraries are for internet security, OpenGL and SGL are responsible for rendering 3D,2D graphics, respectively, the Surface manager is responsible for rendering windows and drawing surfaces of apps on the screen. Libraries also contain C++ libraries used by android system components.
  •  

  • Android Runtime (ART)- these have the core libraries also known as Dalvik Libraries (DVM) which are responsible for running an android application. Android Runtime is built to run apps in a restricted environment where there is limiter power in terms of battery, processing, and memory. ART uses DEX files, a type of byte code designed for Android to manage memory more efficiently.
  •  

  • Android Framework- On the top of Android runtime is Android Framework. It includes a collection of Android APIs written in Java. Enables and simplifies the reuse of core components and services such as Window, view, Activity, telephony, resources, locations, Content Providers (data) and package managers. It provides access to Android feature set fir developers to build a mobile app for Android OS.
  •  

  • Applications- Over the Android Framework lies the application layer covering system and other apps that the users can download from the Google Play Store. The core apps like email, SMS, calendar, maps, browser, contacts, etc are pre-packed in the mobile device. This layer uses all other layers for enhancing the performance of these mobile apps.

 

Android Architecture

Source: https://developer.android.com/guide/platform/images/android-stack_2x.png

 

Concepts of Android SDK and .apk file and emulators

Android SDK is a Software Development Kit which allows the developers to develop an application for the Android platform. The Android SDK comprises of software programs with the sample source codes, developer tools, documentation, tutorials, an emulator and essential libraries to build, test and debug mobile apps for Android. Apps are written in Java language and are run on Dalvik(DVM) that runs on Linux Kernel.
APK stands for Android Application Package. It is a package file format used by Android OS for distribution and installation of mobile apps and middleware. For installing any mobile app/games, we require APK files with an extension .apk. These can be downloaded from the play store. Apk files are just like .exe files for windows. Apk file is in zip format and contains all necessary files required for app installation. The Apk archive usually contains META-INF directory:
MANIFEST.MF: the Manifest file
CERT.RSA: The certificate of the application.
CERT.SF
 

Android Emulators-

Android emulator or Android Virtual Device (AVD) is a device that is a functional replica of an Android device that can be used to run and test the Android applications on the PC even before they are published in the market for final use. Android emulator comes as part of the Android SDK. It is a virtual device that lets the developer develop the apps without using a physical device. Android emulator requires JRE –Java Runtime Environment and Android SDK to function. The applications can be either downloaded or installed directly on the device from the Google play store or if the application is available in ‘.apk’ format, it can be installed using the “add” command.

 

iOS and its versions

iOS is a mobile operating system developed by Apple Inc. It was originated in 2007 for iPhone and later extended its support to other Apple devices like iPad and iPod touch. It is the second most popular mobile device in the world after Android. The iOS mobile apps can be downloaded from Apple’s App Store. The App store contains more than 2 million iOS apps today. The iOS apps are programmed in Objective C, C, and C++ languages. Version updates for iOS are released through iTunes software until the introduction of iOS 5 in 2011. Now, the software updates and data sync can happen wirelessly through Apple iCloud service. iOS has expanded its market by introducing new products powered by Apple like iWatch and AppleTV.
It was formerly known as iPhone OS and the name was used for its other 3 subsequent versions until 2010 when Apple released iOS4. In 2011, iOS5 was released providing access to around 500000 iOS apps and some additional features. iOS 6, 7, 9 were released in the succeeding years with more advanced features and performance. The latest versions iOS 10,11 and 12 are released in 2017 and 2018 respectively.
 

iOS Architecture

iOS Architecture is also a layered one. Each layer is built with a variety of frameworks which can be assimilated in the iOS apps. The layers communicate with the hardware with the help of clearly described system interfaces that make it easy for the developer to build the app that is ready for different devices. Let us discuss each layer below:

  • Core OS- This layer is the foundation layer of the OS on which other layers are dependent. This layer is responsible for managing memory, system and OS tasks, networking and also interacts directly with the hardware. This layer comprises of frameworks like accelerate, external accessory, core Bluetooth, security and local authentication.
     
  • Core Services Layer- It consists of technologies that provide certain services to the app but are not directly related to the UI of the app. It contains high-level features like iCloud storage. The core services include address book framework(provides access to contacts and user database), CloudKit (medium of transferring the data between app and cloud), Core Data (to manage the data model of a model view controller app), Core Foundation( Technologies to provide Data management services to IOS), Core Location(gives location info to apps),Core Motion(ton access motion-based info on the device),Foundation(Using Objective C), Healthkit (handles health-related info of the user),Homekit(controlling connected devices of the user at home),Social( to access user’s social media accounts) and Storekit Framework( supports in making in-app purchases from iOS apps).
     
  • Media Layer- Media layer in iOS architecture enables the Graphics, Audio, Video technologies. Graphic Technologies like UIKit Graphics, Core Graphics framework, Core Animation, Core Images, OpenGl ES which handles 2D vector and animating views and 2D and 3D figures, GLKit and Metal. Audio Framework supports rich Audio experience and includes- Media Player Framework, AV Foundation, OpenAL.
    Video Framework includes AV Kit, AV Foundation, Core Media, Also the iOS support
    for the playback of movie files with the .mov, .mp4, .m4v. and .3gp filename
    extensions.

     

  • Cocoa Touch Layer – The layer defines the basic application and support for key technologies such as multitasking, touch-based input, push notifications, and many high-level system services. It includes EventKit, GameKit, iAd, MapKit, PushKit, Twitter and UIKit frameworks.
     
    iOS Architecture
    Source: https://dotnettricksweb.blob.core.windows.net/img/xamarin/ios-architecture.png

 

Concepts of .ipa file and simulators

IPA stands for iOS App Store Package. Any file with .ipa extension is an iOS application. It is an archive like ZIP that contains software sets used to develop the iOS app. Each .ipk file can be opened with Apple’s iTunes program. An IPA file has a binary for ARM architecture and can only be installed on an iOS device. IPA files cannot be installed on the iPhone Simulator. To run applications on the simulator, original project files which can be opened using the Xcode SDK are required.
 
iOS Simulators – These are again programs to test and run the iOS applications without having any physical or the ‘real’ device. The iOS Simulator allows you to rapidly prototype and test builds of your app during the development process. Installed as part of the Xcode tools along with the iOS SDK, iOS Simulator runs on Mac and behaves like a standard Mac app while simulating an iPhone or the iPad environment. iOS simulators require MAC Environment and Xcode to function. To start the iOS simulator, firstly launch the Xcode and then do one of the following:
1. Choose Xcode > Open Developer Tool > iOS Simulator.
2. Control-click the Xcode icon in the Dock, and choose Open Developer Tool > iOS

 

Conclusion

Operating systems are being revamped using AI and connectivity to the Internet of Things. These technologies are still evolving and both Android community and Apple are trying to lead the way by enhancing the user experience. Android had an upper hand in the past as it has a very active open community to support the development. Although, Apple in the recent past has taken a new approach in getting ahead with technology for e.g. Air Pods and their own coding language Swift. We can be sure that both Android and iOS will be more convenient and interactive as both Google and Apple are the torch bearers of the future.

In the next blog, we will talk about the types of mobile applications.

Suyash Dubey | Posted on | 2 min Read

What is AndroidX?

AndroidX is an improved version of the android support libraries that the android team uses to develop, test, package, version and release libraries within the jetpack. AndroidX fully replaces the support library by providing feature parity and new libraries. In addition, AndroidX includes the following features:

  • All packages in AndroidX are in consistent namespace starting with the string AndroidX. The support library packages have been mapped into androidx.* packages. For a full mapping of all the old classes and built artifacts to the new ones.
  • Unlike the support libraries, AndroidX packages are separately maintained and updated. The AndroidX uses strict semantic versioning.
  • All new android development will occur in the AndroidX library. This includes maintenance of the original support library artifacts and introduction of new jetpack components.

Android Jetpack
Android jetpack is a set of components and tools along with architecture guidance designed to help you accelerate your android development. It gives a template to write production ready android code. Jetpack is made up of components in four categories, foundation architecture behaviour and UI. Each component is individually adaptable and build to maintain backwards compatibility. Android architecture components are very modular, so we are allowed to choose what feature sets we want that are compatible to our app.

Espresso is now a part of the AndroidX family
Espresso is a testing framework designed to provide a fluent API for writing concise and reliable UI test. Writing reliable UI test is difficult as user interfaces are asynchronous driven by events, transitions and data loaded from background threats. Coding around that without any help from UI testing framework would require a lot of boilerplate. Espresso takes care of any UI events, so that in most cases you don’t have to worry about any view state transition and implementation details. The basic UI test flow when using Espresso includes:

  • View Matchers: To find view in the current view hierarchy for e.g. to find UI elements like buttons, textbox etc.
  • View Action: To perform action on the view, e.g. to click on a button, double click, scrolling etc.
  • View Assertions: Allows to assert state of a view.

Application of Espresso test recorder

  • Allows us to create effective UI test cases with user interactions.
  • We can capture assertions and interactions without accessing app structure directly which increases execution speed and optimizes test case.
  • Saves time searching for locators and then writing the test cases.
  • It supports multiple assertions making more reliable test cases.

Pcloudy supports androidX instrumentation with Espresso
Now you can write test cases in espresso and test the APIs in pCloudy using androidX Junit instrumentation. Here are the steps for running your Test scripts on multiple android devices:

  • Login over https://device.pcloudy.com with your registered Email ID & Password.
  • To schedule “Espresso” over pCloudy, follow the below mentioned steps-
  • Go to the “Automation” page.
  • Select the Automation tool as “Espresso”.
  • Select “Instrumentation Type” based on your Test Scripts you’ve written.
  • Androidx Espresso Test pCloudy_1
    Note: pCloudy provides support for Instrumentation Type (InstrumentationTestRunner, AndroidJUnitRunner and AndroidXJUnitRunner) for Android.

  • Select the Application APK and Test APK that you must have uploaded in the MY APP/DATA section.
  • Select the single device execution time and assign a name to your test cycle.
  • In the next step, Click on “ADD” to add the device for testing and click on ”
    Next”.
  • Click on “Schedule” to start the test.
  • Espresso Test pCloudy_2

  • Go to your mailbox and open pCloudy Automation Alert mail.
  • Click on the given link “Click to view Report”.
  • Espresso Test pCloudy_3

  • Now you have the result of your scheduled test automation.
  • Espresso Test pCloudy_4

How to migrate to AndroidX?

To migrate from support libraries to AndroidX the Google has provided a refractor tool in Android Studio. Projects can be migrated to AndroidX by clicking on ‘Refractor’ in the menu bar and then clicking on ‘Refactor to AndroidX’. Then it will search for the usage and show the result. To refactor click ‘Do Refactor’.

pCloudy is leading the way in the field of automated mobile testing solutions.

Try our device cloud

Suyash Dubey | Posted on | 2 min Read

What is Android App Bundle?

It is a new publishing format by Google which is a more efficient way to develop and release app. App bundle helps to reduce your app size and deliver features on demand. Earlier, android operating system used android packaging kit (APK) to distribute and install applications on a device. These applications are downloaded by users across the world on various devices. These devices have different configurations and language inputs. To meet all the users demands, the application becomes bulky as all the features are to be downloaded.

Android App Bundle is a zip archive with .aab extension. It contains codes and resources for all the devices that the app supports. Google Play handles signing and generation, once it is uploaded for publishing. In app bundle, dynamic delivery is used to generate an optimized APK for users, based on their device configuration.

Benefits of .aab
The key benefit of android app bundle is that it the developers need to write less code to push the app in Play store. The users save space in their device by saving a small size APK. App bundles can use uncompressed native libraries in android 6.0 and up, that are stored in the APK instead of the users device. This lowers the download size and the size on disk. It serves users with functions they need on demand, instead of installing all the functions at one go. We don’t need to build and publish multiple APKs, therefore, app bundle also simplify the built and release management.

How Android App Bundle works
Android delivers APKs with the required resources using split APK mechanism. Google Play uses this mechanism to split large apps into smaller APKs, as per the device requirements.

According the Google, there are 3 types of APKs:
a) Base APK: This is the first mandatory APK to be installed. It contains the basic requirements for the application. This APK contains codes and resources that other split APKs can provide. Only the base APK’s contains full declaration of your app’s services, permissions, platform version providers and dependencies of system features. It is important that all codes and resources included in this module are included in the base APK.

b) Configuration APK: It contains specific data, based on the device requirements. Configuration APK is generated by Google Play from the app bundle that is uploaded to the store. Each of these APKs includes native libraries and resources for a specific screen density, CPU architecture or language. When a user downloads the app, their device downloads only the specific APKs for that device. You don’t create separate module for configuration APKs. If you use standard practices to organize alternative, configuration specific resources for your base and dynamic modules, Google Play automatically generates configuration APKs for you.

c) Dynamic Feature APK: These are the optional features installed required by the user. Each of these APKs contains code and resources for a feature of your app that is not needed when your app is first installed. Using the play core library, dynamic APKs may be installed on demand after the base APK is installed on the device to provide additional functionality.

Android Application Bundle Format
An Android App Bundle is a file with .aab extension which you can upload to Google Play to support dynamic delivery. App bundles are signed binaries that organize your apps resources into modules. Each of these modules may be generated as separate APKs. Google Play uses the app bundles to generate various APKs that are served to users.

Android-App-Bundle-pCloudy_blog

Image Source: https://developer.android.com/guide/app-bundle/


App Bundle’s files and directories:
Base/, feature 1/ and feature 2/: Top level folders that contain different modules of your app. The base directory contains base module of the app. The directory for dynamic feature module is given the name specified by the split attribute in the module’s manifest.

Bundle-Metadata: Metadata files include complete list of the app’s DEX files and Proguard Mappings. Files in this directory are not packed into the app’s APKs.

Module Protocol Buffer files (*.pb): Provides metadata that describe the content of each module to the play store. For example, native.pb and resource.pb describe the code and resources in each module, which is used when Google Play optimizes APKs for different device configurations.

Manifest/,DEX/: Unlike APKs, app bundles stores the androidmanifest.xml and DEX files for each module in a separate directory.

res/, libs/and assets/: These directories are used in the same ways as APK, except that for an app bundle, they are used by Google Play to package only the files that satisfy the target device configuration.

root/: This directory stores files that are later relocated to the root of any APK including corresponding module.

How to deploy App Bundle
Unlike APKs, App Bundles cannot be installed on a device. It is an uploaded format which contains compiled code and resources in a single build framework. Once we upload out signed app bundle, Google Play builds and signs the apps APKs and serve them to users through dynamic delivery.

Testing your app bundle with Google Play Internal Test Track
You need to generate signed in app bundle before you can upload your app bundle to the play console. Proceed with these steps to generate a signed app bundle.

  • Select Build then select Generate Signed Bundle/APK from the menu bar. In the Generate Signed Bundle/APK dialogue, select Android app bundle and click on Next.
  • In the Module dropdown menu, select the base module for the app you want to generate app bundle for.
  • Provide information for an existing key and keystore, or create a new. This is the same type of key and keystore information you provide when building a signed APK.
  • I you want Android Studio to also save your signing key as an encrypted file, check the box next to Export encrypted key. To be able to upload your app bundle and take advantage of dynamic delivery, you need to upload this encrypted file to the play console and enrol in app signing by Google Play.
  • Click Next and provide a Destination Folder for your app bundle. Select the Build Type and flavours that you want to generate app bundles for.
  • Click Finish.

Now you have generated a signed bundle, you can upload your app bundle to the play console.

Testing your .aab file on pCloudy
pCloudy supports .aab format and the user can upload the App Bundle instead of “.apk” to test their app on the device cloud.

Conclusion
Android Application Bundles is a big step forward in the area of application publishing and uploading. It has reduced the size of APK of your application which leads to more download of the application.

Suyash Dubey | Posted on | 2 min Read

Single Sign On

Single sign on is a process of authentication where user can access multiple applications and portals with one set of credentials. With SSO a user logs in with a single ID and password to gain access to a connected system. Single sign on must internally store the credentials for initial authentication and then translate them to the credential required for the different mechanisms.

SAML 2.0
SSO services uses security assertion mark-up language (SAML 2.0) which is an XML standard that facilitates the exchange of user authentication and authorization of data across secure domains. SAML simplifies the authentication and authorization process for the user, an identity provider and a service provider. When the user attempts to access an application, the service provider will send a request to identity provider for authentication.

Benefits of single sign on
SSO reduces risk for access to third party sites (user passwords not stored externally). It also alleviate password fatigue from different user name and password combinations. Reduces IT cost due to lower number of IT help desk calls about password. Reduces time spent re-entering password for the same identity.

pCloudy SSO integration architecture
Sequence of events for integration of SAML 2.0 Authentication

  • The user attempts to reach a web application at a service provider (SP i.e pCloudy Set Up).
  • The service provider generates a SAML request and redirects the user to the IdP’s SSO URL with the generated request.
  • The IdP authenticates the user and generates a SAML response.
  • The user is redirected back to the SP with the SAML response.
  • The SP verifies the SAML response.
  • The user is successfully logged-in to the SP’s web application.

Single Sign On feature in pCloudy_1

Note: pCloudy has included this feature in Enterprise set up Private Cloud and On-Premise Cloud.

SAML assertion
SAML assertion is the XML document that the identity provider sends to the service provider, that contains user authorization. There are Three types of SAML assertion:

Authentication assertion – It proves identification of the user and provide the time the user logged in and what method of authentication they used.

Attribute assertion – It passes the SAML attributes to the service provider. SAML attributes are specific pieces of data that provide information about the user.

Authorization decision assertion – It says if the user is authorized to use the services or if the identity provider denied the request due to password failure or lack of rights of the service.

SSO solves the problem of managing the increasing number of users across an ecosystem of application and services. It is a step forward in the optimization of pCloudy integrated architecture.

Suyash Dubey | Posted on | 2 min Read

Online Android Emulator to Test Apps

Android now occupies the number one place in the world Smartphone arena with a market share of 87% at the end of 2016 that means 9 out of 10 Smartphones in the world run on Android. With such dominance in the space, the creation of mobile apps has reached never before heights. But the constant innovation that fuels this market has major problems in terms of the development and testing timelines. Running an online Android emulator, which used to be a solution once up a time, is not good enough anymore. So what can companies and developers do to stay ahead in the development race? What alternates exist to improve your app’s usability, performance and customer satisfaction? Let us explore.

With the explosion of Smartphones, customers’ screen size is reducing. People are moving from desktops and laptops to Smartphones for their everyday work and personal needs. This massive shift from big screens to a personal device has created a huge opportunity for developers to create tools that can help people with their work and their personal needs. Users can now view their spreadsheets and book movie tickets from their phones.

Want to test your Mobile App?

Join pCloudy Platform!

Apple’s Appstore and Android Play store has become the ‘go to’ place for people to discover apps that meet their requirements. The ratings left on those apps will decide how many people will install those apps. Customers have once again become the king of the market.

Days of unique apps are over. For your every need you will find at least two or more apps, giving you a choice. So if you want people to choose your app, install it, use and positively review it, your app needs to user-friendly, work on most handsets and be bug-free.

In the past, companies and developers determined product lifecycle. They planned the updates, feature upgrades etc based on the resources and other factors. Today the scenario is changed. The Market dictates the timeline. If your app is incompatible with the latest OS, or not render properly, or suck a lot of battery juice, off it goes into oblivion to be replaced by a better app.

The fight for the screen space is constant.

You can win the fight only if you develop faster than others, test it better and offer a good user experience. That means developers will need to compress their development cycle and testers should speed up their testing while at the same time, maintain high usability and reliability of the app.

Android and iPhone both offer an easy to use platform for developers. iPhone has a few products (IP6, IP7, IP8 etc.) and versions (OS 8, OS9, OS10 etc). The permutation of devices and OS makes testing with real devices easier although buying that many Apple devices is quite an expensive investment. You don’t need an online emulator while testing for iPhone.

In contrast, Android has a highly fragmented market. Apart from different versions (KitKat, Jellybean etc), there are different forks of Android (Stock, Cyanogen, OxygenOS etc) and there are also different skins that manufacturers put on their devices (TouchWiz, Optimus, Sense etc). Real android device testing to cover all the combinations is close to impossible and quite expensive.

Enter Online Android Emulators

Online Android Emulator

When they started, online Android emulators were like a boon to developers. They could cross test their apps across different devices without physically buying the phones. Most of the Android emulators were easy to set up and a fairly inexpensive solution. Most importantly, online Android emulators could mimic hardware and software behaviour making easy for developers to identify unexpected behaviour during the early stage testing.

But as the market for apps grew, the demands on the app became even higher. Testing all the features of the app on an Online Android Emulators was not providing the full picture of how the app would behave on a customer’s phone.

For example, a user installs a new app on the phone and the next day he notices the battery is getting low very fast. Looking at the battery usage, he discovers the culprit is the new app and bam! He hits uninstall. He then visits the Playstore and writes a negative review of the app’s battery-sucking problem. The next 20 people who see that review will not install the app.

These kinds of bugs cannot be easily identified using an online android emulator. Apart from that, online emulators are slow because they have to replicate both software and the hardware components. thus slowing down the whole testing cycle.

Online android mobile emulator stimulate android devices on a PC to test an app on a variety of devices and API levels without the need for physical devices. Nox is the best online android emulator although BlueStacks is the best android emulator for online games. Online android emulators come with predefined configurations for various Android phone, tablet, Wear OS, and Android TV devices. There are many online android emulators for iOS available in the market.

Online Android emulators also have other limitations that make them unsuitable for large-scale testing. There are a limited number of OS versions you can run on an Android emulator. Even on a good PC with HAXM acceleration support, you can run approximately 8 emulators at a time. Even if you manage to set up all the online emulators you need, one small problem can send the whole system crashing forcing you to start all over again.

So what can app developers do to speed up their product lifecycle while releasing a relatively bug-free app? Is there any alternative for Online Android Emulators?

real mobile android and ios devices

Testing on real devices has a few important benefits. Your testing can be in real conditions i.e. weather, location network accessibility, interruptions like SMS, calls etc can be tested accurately. You can also validate the screen brightness, visibility in different lighting conditions. Testing on a real device will be a lot faster than on an Android emulator.

The biggest problem in using actual android phones is the cost of buying all the phones you need to test. There are approximately 11k Android phone models in the market making it financially impossible to test on all available Android devices. This is one reason Online Android Emulators became famous in the initial stages.

You can run only one test at a time. If you have staff in another city or country, they cannot access the device. If you need to install an app, you have to do it manually on every device. Apart from that, there is also a question of logistics, maintaining the devices, updating them, etc all of which are time-consuming tasks.

One tactic used earlier involved a combination of using online Android emulators during the early stages and a small selected list of real Android devices during the beta testing. While this would work for a localized team, it still does not optimize device usage and covers a tiny portion of devices while the fragmentation continues. Thus it is not an optimal solution.

Is there a third alternative that can beat the disadvantages of online android emulator and real devices testing?
In recent times, a new mode of testing is gaining popularity among both amateurs as well as professional developers. It is called Mobile cloud testing.

What is Mobile cloud testing?

mobile cloud testing

Testing on real devices using the cloud as the Interface is the new way of balancing the real android testing while making it economical and scalable. As a developer, you need not own any phones or buy expensive software. You connect to a lab that has a huge selection of Smartphones, select the ones you want to test on and start, it is that simple. You can run functional tests, automated tests, performance and other forms of tests easily. Since the interface is cloud-based, you can test from anywhere in the world, at any time.

There will be some changes in the way you set up your test, install an app, etc. All the testing though will happen on actual devices under user-level conditions. You can set the location, observe CPU utilization, battery drainage and pretty much anything else that you can do with a device in your hand. These are the things you can never test with an online Android emulator.

The best part is that you need not invest in any special infrastructure for such a facility. There are independent services providers who can allow you access to the device on a cost per use basis. You can even reserve devices in advance if you want to plan a battery of test over an extended period.

Opting for mobile cloud testing service gives you access to real devices at a fraction of a cost of setting up your own lab. There are no recurring charges as most of them use a ‘pay as you go’ model. You can spend all your time in testing rather than worry about the infrastructure, maintenance and other problems that come from the ‘owning’ model.

While there may not be a cost associated with getting Android emulators, they need a lot of expensive hardware to run a sufficient number of an online android emulator. Mobile cloud testing does not have a problem.

Using Mobile cloud testing, you can cover more ground over a large number of devices than if you were using either only real android device testing or the online android emulator. For example, if you have 10k scenarios to cover, you can spread it over 1k devices through automation rather than 1k test scenarios over 100 different online android emulator.

One of the biggest benefits of testing mobiles over the cloud is that you are more likely to discover bugs that affect real-world customers than what an emulator can reveal. From a user satisfaction perspective, this is probably one of the biggest advantages mobile cloud testing has over online android emulator.

Most of the app development work has moved to the agile methodology which means testing will run almost parallel to development work. You will need a way to speed up the testing process to meet the sprint deadlines.

Using a mobile cloud, it is easy to streamline the testing process whether you are using a DevOps or an agile approach. Continuous testing is a lot easier to streamline over the cloud setup rather than via online Android emulators or even with real devices.

Many development teams are spread across the globe. Cloud setup gives them an easy way to test seamlessly from different geographies.

Security for Mobile apps testing

mobile app testing

Different apps have different needs in terms of security. An Astrology app that gives general predictions may have little data security requirements while a banking app might need the testing to be done in a secure environment. Such clients can always go for a private cloud or even opt for on-premises setup. When you use a good solution provider, you can just hook up your existing devices to their setup and give access to your cross-border teams to test on the devices.

Testing performance issues, be it CPU load, battery discharge or performance over 2G, 3G and other networks work a lot easier when you use the mobile testing via the cloud platform. You can select which network mode you want to be on and apply the test. This kind of flexibility is difficult and sometimes, impossible using an android emulator.

Mobile Apps Performance Testing

mobile apps performance testing

Apart from the need to test for compatibility with existing apps, battery usage, network usage etc, and mobile apps will need to go through a round of performance testing. Due to the ever-increasing storage space in a Smartphone, users tend to store a lot of content on their phones. So it is necessary to find how the increase in storage affects the application performance.

For example, if you are developing a photo gallery, how does your app perform when accessing 5 GBs worth of pictures and videos, v/s accessing 50 GBs worth of pictures and videos? Does it slow the pre-fetch? Customers are very unforgiving of apps that slow down their phones.

In case your app has a server-side component, it is important you run a performance test to verify how many concurrent users the server can handle. There have been many instances where e-commerce sites crashed being unable to keep up with increased demands during holiday sales.

These are a few areas that we cannot test on an online android emulator.

A customer kept waiting is a customer lost

A couple of years ago, it was acceptable to wait for two-three minutes to download an image on a phone. But today if your app takes longer than few seconds to start up, it is killed and replaced. The tide has shifted to the customer’s side in the Appstore and Playstore. The only way to win this game is to be Nimble, easy to use and not crash the phone.

Thanks to Mobile cloud testing, you don’t have to wait for the slow, unreliable online Android Emulators anymore. Testing on Mobile cloud gives you the opportunity to cut your infrastructure cost, speed up your testing cycle, spread your testing over a larger set of devices and gives you close to real-world results. As the completion heats up for the screen space, you have one tool in your kit that can help your app survive the tough jungle of user reviews.

Want to test your Mobile App?

Join pCloudy Platform!

Suyash Dubey | Posted on | 2 min Read

pCloudy’s Data Center

 

Ever had apps on your phone which suddenly crashed it and you couldn’t figure it out?

In today’s age, If you have a smartphone that needs to get you through most of the day, be it work or play, you must have experienced frustrating bugs on that app that is either slowing down the phone or stops you from using it when you need the most. So you uninstall it and be done with it. Try asking any app developer or tester what it is like to test usability of the app in thousands of devices across screens, operating systems and the carriers.

This is where pCloudy comes-in. A one stop solution for Developers and Testers to certify their App across variety of devices.

How does pCloudy work?

pCloudy has found an incredibly simple way of allowing users to remotely test their apps on different real and physical devices by using just a modern web browser. Alternatively, users can access the devices directly from their IDEs like (Android + Eclipse studio).

Device Data Center

Behind the scenes:

Use of Physical devices: Mobile App Testing is most effectively when done on a real physical device. That’s the reason, pCloudy currently has 500 + Android and iOS device (real device, no emulators) across various manufacturers and versions.

Data-center-2[A Device Rack in the Data center which contains pCloudy Hardware and set of devices]

Kind of hardware involved: pCloudy has a customized hardware setup, which runs the software to allow communication with real mobile devices. All the mobile devices are connected to the hardware using USB cables.

Network Setup for Devices: All the devices have a Wi-Fi connection. To ensure uninterrupted connectivity to the devices, all the racks are installed with dedicated Wi-Fi controllers and Wi-Fi access points. The Wi-Fi access points are deigned for interference mitigation and Noise (SINR) improvement. Besides, many of the devices also have real SIM cards.

pCloudy Device Data Center[Data Center: All the above is located in a secure, 24×7 operated data center]

When it comes to certification of Apps, one of the biggest concern for Users while using a solution like pCloudy is security and safety of their Data.

Why we decided Data Security was Critical?

It was important for our customers to feel safe about their Apps and data that they upload on pCloudy servers. Many a time these are not-yet-released app and related data. Today pCloudy is working with Global enterprises who are extremely concerned about safety of their Data.

Security of Data Center: A major component of the entire pCloudy offering is the data centers where physical mobile devices are connected. These devices are then made accessible through cloud via the web browser to the customers. pCloudy has hosted their cloud in a data center which meets all the global standards, including compliance with SSAE­16 (SOC­2) and ISO 270001 standard. pCloudy has 99.982% uptime commitment on the DC infrastructure which is measured quarterly, a failover redundancy mode for equipment’s setup and everything that does not get in the way of a creating an uninterruptible, stable working mobile network environment for the apps, round the clock, 24X7.

Secured Cloud Drive: Data uploaded by user (Apps/Test Data) is Stored in secured folder on our server in DC. User space is protected by username and password. Data is further protected by a layer of encryption. No access to user data by pCloudy admin.

Device Clean up: Device gets cleaned up automatically after each use. As soon user releases a device, user installed Apps get uninstalled, data uploaded get deleted and device gets powered cycle.