the essentials of mobile app testing and monitoring
DESCRIPTION
Mobile Technology is transforming the way people use their cell phones. Although demand is highest for consumer apps, enterprise applications are evolving too, allowing businesses to work more productively In this document we look at how the testing of mobile applications helps to achieve quality. Here we explore a typical way that an app is developed, look at the testing stages involved, answer some of the frequent questions concerning testing, and provide a definition of the common testing terms.TRANSCRIPT
Introduction: You’ve developed a Mobile App...Now What?
By the time you finish reading this, the mobile app landscape will have changed. Along with the
development, testing mobile apps is quiet more challenging than testing based on desktop or web
applications.
Mobile app testing is an approach towards solving the emerging technological implications of
Mobile Apps. iOS and Android have been the most successful operating systems so far. It is
quite challenging to test and verify each and every application before releasing it for public use.
In today’s business environment, testing seems to be a cost-effective solution to avoid any
compromise on quality.
QA Challenges in Mobile Application Testing
Variation in Device
Mobile app testing becomes difficult because of many operating systems and myriad devices.
Compatibility is a major issue here because a mobile application can be deployed across multiple
devices. They differ in:
• Mobile operating systems like iOS, Android, BlackBerry, Windows, Symbian, etc.
• Different versions of these operating systems such as iOS 4.x, 5.x, BB 4.x, 5.x, 6.x, Android
2.0, 2.x, 3.x, 4.x, Windows 7, Windows 8.
Mobile Testing Tool Availability
The tools used for desktop and web-based applications do not work for mobile application.
Hence, a complex scripting technique and new tool development is required for mobile
application testing.
Industry Standards
Testing of mobile application must be performed according to certain industry standards so that
the applications can be accepted globally by people using different mobile operating systems.
This will help in making the application popular.
Necessity of Skilled QA specialist in Automation Testing
Every Quality team needs skilled quality assurance specialist not only to evaluate the automation
tools that are present in the market for application testing but also to quickly recognize any bugs
in the user interface as UI is very critical in the mobile world. A well-examined and fully
functional mobile application can be easily be rejected by end users because of bad interface
even though if it is working perfectly.
Cloud Computing
This technology offers a seamless web-based environment for mobile on simulators where the
QA team can deploy, automate and test any mobile application. This approach of cloud
computing has really helped in reducing the overall cost of a project under development.
Listed below are some of the most common problems that are faced by the testers in an
environment of cloud computing:
•High-cost
•A Subscription Model
•Lock-in
•The Automation is time-consuming and image based
•Automation cannot be done outside the framework
Mobile Testing Challenges for Native Applications
For many, “mobile application” means a native or a hybrid application. These are some
commonly downloaded software applications from the respective app stores. The unique
experience that they offer to the users improves the capabilities of the operating system and
device for which they are developed. The downloaded is often monitored by the store, with
mechanisms in place to charge consumers.
Though native applications offer rich user experience to the users – and plausible money
spinning for the developers. Some complexity is added to the lives of those who test it. Testing is
meant to make sure that the application can be successfully downloaded and executed on the
device. To meet the challenges of the testing procedure, backward compatibility with each older
device you are expected to support must also be checked.
Mobile Testing Challenges for Web Applications
Like any other website on internet, a mobile web app is also viewed by people around the world.
Even when you are targeting people from one particular landscape or a network, it will help you
understand dynamics of the world.
Mobile Application Testing Strategy
The Test strategy should make sure that all the quality and performance guidelines are met. A
few pointers in this area:
Selection of the devices
Analyze the market and choose the devices that are widely used. (This decision mostly relies on
the clients. The client or the app builders consider the popularity factor of a certain devices as
well as the marketing needs for the application to decide what handsets to use for testing.)
Emulators
The use of emulators is extremely useful in the initial stages of development, as they allow quick
and efficient checking of the app. Emulator is a system that runs software from one environment
to another environment without changing the software itself. It duplicates the features and work
on real system.
Types of Mobile Emulators
Device Emulator- provided by device manufacturers
Browser Emulator- simulates mobile browser environments.
Operating systems Emulator- Apple provides emulators for iPhones, Microsoft for
Windows phones and Google Android phones
Some free and easy to use mobile device emulators are:
iPhone Tester – All you need to do with this is – enter the URL in search box and you can see
the real time preview of how it appears on an iPhone.
Mobile Phone Emulator – Used to test handsets like iPhone, blackberry, HTC, Samsung etc.
MobiReady– With this, not only can we test the web app, we can also check the code.
Responsivepx– It checks the responses of the web pages, appearances and functionality of the
websites.
Screenfly– It is a customizable tool and used to test websites under different categories.
Mobile cloud Computing Services
The testing experts can efficiently make use of the environment of mobile cloud computing for
deploying and testing the application. Using this technique, we can keep both the task and the
data on the internet instead of keeping it on an individual device. This is what brings on-demand
access in vogue. Lowering down the complexity of project implementation, organizations take
the advantage of services of cloud computing so as to reduce the development and testing cost
and boost the return on investment of a mobile software application solution.
Real Times Devices with Real Networks
It is quite natural that testing can be done against real networks. Real devices can be used at real
locations for performing testing. This is something that the QA team just cannot avoid. Testing
of real devices on real networks should always be an option whenever needed. This thing came
into picture because every application will be used at different locations by end users who might
use it from a remote area with inconsistent network signal strength.
Avoid Manual Work with Automation Tools
Automate whenever and wherever possible! Remote and Emulators, real time devices and
solutions which support playback functionality and scripts help in saving and allow execution of
more test cases with higher degree of consistency.
Any testing team must automate the task of mobile software applications so as to avoid any
manual task. This will not only save cost but time as well. There are many tools available in the
market for performing automation tools.
Types of Testing for a Mobile Application
Usability Testing
This is the type of testing that includes visibility of text in the selected language, screen
navigation, verification of online and offline functionality, feedback from interaction with the
system, which means that the download app should be prompt with messages.
Compatibility Testing
Compatibility testing means validation of mobile application for myriad devices keeping in mind
all the major operating systems, screen size and resolution as per the demand of users,
proofreading if the integration server changes, editing of the mobile app isolation with other
software apps on the device.
Interface Testing
Following are the things that integration testing covers:
•Screens Resolution
•Buttons
•Text Inputs
•Navigation flow like Facebook, Twitter, Reviews, Bookmarks, etc.
Service Testing
Validation of mobile software application not to behave as a server is included in this type of
testing. It even covers checking of a service which can be used offline or takes too long or when
a service goes down and responds back with malformed responses.
Performance Testing
Performance testing is something where you will need to verify the server connection of WIFI
from 2G/3G or vice versa, size of the shared images used by the software code is in accordance
with the desired response time, optimization of code with the CPU cycle, consumption of
battery, memory leaks, certain resources like camera, GPS, etc., freed.
Operational Testing
This type of testing checks for the back-up of all the important information in the application,
save and recovery plan if the battery goes down, if the data of mobile app is lost in the case of
up-gradation from respective app store, accessibility of the app when user gets an alarm,
message, call, reminder, etc. and power usage while accessing the application.
Low Level Resource Testing
Overuse of memory and not releasing is something that comes under low level resource testing.
It also checks if temporary files of the applications are not cleaned, local database is growing too
large. Low level testing will also see the garbage generated by the mobile app.
Security Testing
Security testing will include the encryption and decryption techniques used for communication
of sensitive data, checking of multi-user support without any interference of the data between
them, and checking of accessibility to files that are saved in the app by any unintended users and
detect areas where tested application does not receive any nasty content.
Testing Recommendation
For the types of testing mentioned it is a good idea to use some combination of real device and
emulator testing, as recommended in the table below:
Enterprise applications must meet requirements for maintenance, administration and security.
They “are more complex in functionality and architecture” and therefore it is important to test
enterprise application on performance, security, and synchronization in addition to the standard
functionality testing.
Test Automation Tools & Frameworks Testing mobile applications is traditionally done by manual execution of test cases and visual
verification of the results. However, it is very time consuming. Using automation tools and
testing frameworks yields quantifiable benefits and is recommended.
Automated testing offers fast, repeatable and comprehensive test execution, including overnight
or over weekend test runs. However the investment in tools, test script development and data
collection is required and is and is not amenable to fast changing requirements.
The development platform for mobile application which is a Personal Computer is different from
the target platform which is a handheld device. It is impossible to test the various possible states
a GUI can have. Because of these unlimited testing scenarios mobile GUI testing is more
difficult compared to functional testing of desktop application.“Manual GUI testing is very error
prone and hardly reproducible, and causes very high effort”.
Android Testing Framework The Android testing framework provides powerful tools for testing mobile applications. The
following diagram summarizes the testing framework of Android:
The Android SDK (Software Development Kit) consists of tools for developing and testing
android based mobile application. The Android SDK tools are available as Plug-in in Eclipse
with ADT, and “in command-line form for use with other IDES”. The SDK“tools get
information from the project of the application under test and use this information to
automatically create the build files, manifest file, and directory structure for the test package”.
The SDK also provides monkeyRunner, an API testing devices with Python programs, and
UI/Application Exerciser Monkey, a command-line tool for stress-testing UIs by sending
pseudo-random events to a device.
Sikuli
Sikuli Test is a GUI testing framework that enables automation testing tasks.“It allows testers to
write visual scripts to automate tests, to refer to GUI objects by their visual representation
directly, and to provide robustness to changes in spatial arrangements of GUI components”. The
script uses action statements to simulate the interactions and assertion statements to visually
verify the outcomes of the
interactions.
Test scripts under Sikuli Test are written to test traditional desktop GUI applications on
Windows and Mac OSX, as well as mobile applications in an Android emulator and iOs
simulators.
JaBUTi/ME: White Box Testing
White box testing is a technique based on the internal structure of a given implementation, from
which the test requirements are derived. In general, “white box testing criteria use a
representation known as Control Flow Graph (CFG) to abstract the structure of the program or of
part of the program, as a procedure or method”.
Server based testing JaBUTi/ME
JaBUTi (Java Bytecode Understanding and Testing Tool) is a complete tool suite for
understanding and testing Java programs and Java-based components. JaBUTi differs “from
other testing tools because it performs the static and analysis directly on Java Bytecode not on
the Java source code”.
Mobile Test: Black Box Testing
An automatic black box testing tool for mobile devices introduced in this Chapter is Mobile Test.
With Mobile Test building maintainable and reusable test cases for testing system level and
application level software on various mobile devices is possible. Mobile Test observes the input
and output information of an application. “From the input perspective, a mobile application
receives two kinds of inputs“. The first input is form the user GUI such as keyboard events,
touch events. The second input is environmental context events.
Mobile Test Architecture
Mobile Test architecture
The architecture of Mobile Test subdivides the system environment into layers to reduce the
complexity the system. Each layer provides services to upper layers with the support of lower
layers. In this way, the test control layer can be separated from the characteristics of the
underlying devices.
List of available testing tools
The table below gives a list of available testing frameworks with the platforms they can be tested
on.
Available mobile automation testing tools and the platforms they run on
Fledge: BlackBerry device simulator that enables mobile application testing on a Personal
Computer. Tests, various connectivity and state changes can be simulated.
MonkeyTalk (formerly known as FoneMonkey): offers the possibilities to save a script, load,
read and modify it. FoneMonkey is designed to support developers and quality control tests.
FoneMonkey automates testing on iOS simulators, Android emulators or real devices.
QTP(QuickTest Professional): is an automated testing tool provided by HP/Mercury
Interactive. QTP uses VB scripting language to build its flows. It provides automated and
regression testing and also generates test scripts that can be executed on local or remote mobile
devices.
CTS (Compatibility test Suit): runs on Personal Computer and manages test execution.
Individual test cases are executed on attached mobile devices or on an emulator.
UISpec: Behavior Driven Development framework for the iPhone that provides a full automated
testing solution that drives the actual iPhone UI. It is modeled after the very popular RSpec for
Ruby.
Hermes: black box automation tool for testing J2ME applications. Hermes supports
application independence, and open interfaces for extensibility.
Eggplant: black box automation tool that runs on Mac OSX and Linux. It can test applications
on a vast range of other platforms because it connects to and controls them using VNC (Virtual
Network Computing).
Robotium: black box automation tool for Android Mobile Application. Robotium is a UI testing
tool. The Framework provides API’s to test various kinds of Widgets/UI present in mobile
applications developed with android SDK.
Conclusion
Application development for mobile devices is evolving. The strategies presented in this thesis
discuss the testing of mobile device applications and how important it is to plan a test strategy
that is mobile-specific. Unique challenges like device challenges and software challenges of
mobile devices need to be considered because traditional testing does not cover all characteristic
important for mobile application. The use of automation test tools and test methods should be
conducted for a successful testing result.
The advantage of testing these apps before the deployment in a live environment cannot be
stressed out. An app with bugs and errors will not only hurt the productivity but reputation as
well.
About MobilePundits
MobilePundits partners with global enterprises to drive their innovation-led growth. That's why Deloitte awarded MobilePundits
among the top 100 most innovative companies. As a leading provider of next-generation consulting, technology and outsourcing
solutions, MobilePundits helps clients across the world. Visit www.mobilepundits.com and see how MobilePundits, offers its best
outsource and development services.
For more information, contact [email protected]