Professional Documents
Culture Documents
Testing
Gone are the days when the telephone used to be an appliance that sat in a corner and
had to ring to get our attention or a computer was a machine only a few people used –
they are now an extension of our being- a window to the world and virtual servants that
do as they are told.
Computers were a rage and changed how we humans thought, behaved, learned and
existed.
Nowadays, Mobility solutions have taken over the market. People don’t want to switch
ON their laptops/PC for everything, rather they want their handheld devices to perform
everything quickly.
Hence the mobile solutions which we deliver to our clients should be tested very well.
This tutorial is intended for those people who are already in mobile testing or those who
have switched to it in recent times. As we already have many tutorials on definitions of
mobile testing related terminologies, we will be directly dealing with the scope of this
tutorial.
This tutorial will be both an introduction and your guide to Mobile Testing. So,
read through!
The device including the internal processors, internal hardware, screen sizes, resolution,
space or memory, camera, radio, Bluetooth, WIFI etc. This is sometimes referred to as,
simple “Mobile Testing”.
#2. Software or Application testing:
The applications that work on mobile devices and their functionality are tested. It is
called the “Mobile Application Testing” to differentiate it from the earlier method. Even in
mobile applications, there are few basic differences that are important to understanding:
a) Native apps: A native application is created for use on a platform like mobile and
tablets.
b) Mobile web apps are server-side apps to access website/s on mobile using different
browsers like Chrome, Firefox by connecting to a mobile network or wireless network
like WIFI.
c) Hybrid apps are combinations of native app and web app. They run on devices or
offline and are written using web technologies like HTML5 and CSS.
There are few basic differences that set these apart:
Native apps have single platform affinity while mobile web apps have the
cross-platform affinity.
Native apps are written in platforms like SDKs while Mobile web apps are
written with web technologies like HTML, CSS, asp.net, Java, PHP.
For a native app, installation is required but for mobile web apps, no
installation is required.
A native app can be updated from the play store or app store while mobile
web apps are centralized updates.
Many native apps don’t require an Internet connection but for mobile web
apps, it’s a must.
Native app works faster when compared to mobile web apps.
Native apps are installed from app stores like Google play store or app
store where mobile web are websites and are only accessible through the
Internet.
The rest of the article is going to be about Mobile Application Testing.
1) 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 certain devices as well as the marketing needs for the
application to decide what handsets to use for testing.)
i. Mobile Phone Emulator – Used to test handsets like iPhone, Blackberry, HTC,
Samsung etc.
ii. MobiReady – With this, not only can we test the web app, we can also check the
code.
iii. Responsivepx – It checks the responses of the web pages, appearances, and
functionality of the websites.
iv. Screenfly – It is a customizable tool and used to test websites under different
categories.
3) After a satisfactory level of development is complete for the mobile app, you could
move to test on the physical devices for more real-life scenarios based testing.
For Example, when Android 6.0 came, there was a major change as this OS started
supporting app level permissions. To clarify further, the user could change permissions
(location, contacts) at app level also.
Now the testing team owes the responsibility to make sure that showing permissions
screen on the app launch on Android 6.0 and above and not showing permission screen
on the lower versions.
#5) From the testing perspective, Pre-production build (i.e. beta version) testing is
different on both the platforms. In Android, if a user is added to beta users list then he
can see the updated beta build on the Play Store only if he is signed in into the play
store with the same email ID which is added as a beta user.
Key Factors in Mobile Testing
I have been working in Mobile Testing for the last 2 years on both iOS and Android
Platform and all the key points mentioned below in this tutorial are from my personal
experience and some got derived from the issues encountered in the project.
Define your own scope of Testing
Everyone has their own style of testing. Some testers just focus on what they see from
their eyes and the rest are passionate about everything that works behind the scenes of
any mobile application.
If you are an iOS/Android Tester, I would suggest you to at least get yourself familiar
with some common limitations/ basic functionalities of Android or iOS as it always adds
value to our style of testing. I know things are difficult to understand without citing
examples.
Configure Putty to view logs or verify sumo logic for logs depending on what is being
used in your project. It not only helps you in knowing the End-to-End flow of the
application but also makes you a better tester as you get more ideas and scenarios now.
Reason: Nothing comes into this world without any reason. Any statement should have
a valid reason behind it. The reason behind analyzing the logs is that many exceptions
are observed in the logs but they don’t show any impact on the UI hence we don’t notice
it.
So, should we ignore it?
No, we shouldn’t. It doesn’t have any impact on the UI but it may be a futuristic concern.
We could potentially see our app crashing if these kinds of exception keep creeping. As
we have mentioned about App Crash in the last sentence, this leads the QA to have
access to crashlytics of the project.
Crashlytics is a tool where crashes are logged along with the time and device model.
Now the question over here is that if the tester has seen app crashing then why
does he need to bother about crashlytics?
The answer to this is quite interesting. There are some crashes which may not be visible
on the UI but they are logged on crashlytics. It could be out of memory crash or some
fatal exceptions which may impact the performance later.
Cross-Platform Testing
Cross-Platform Interaction Testing is very important.
Citing a simple Example, say you are working on a chat application like WhatsApp
which supports sending images and videos and the application is built on both iOS and
Android platforms(Development may or may not be going in sync)
Ensure to test the communication of Android and the iOS, the reason being that is iOS
uses “Objective C” whereas Android programming is Java-based and due to both of
them being built on different platforms sometimes extra fixes need to be made at the app
side to recognize strings coming from different language platforms.
For Example, a user might have saved his bank card details in apps like PayTm, etc.
Device OS may not Support App
Sounds Interesting?
Yeah, many devices may not support your app. Many of you must be knowing that
vendors write their own wrappers on the top of US and it could be possible that any SQL
query of your app is not compatible with the device and hence it throws an exception
and it may result in not even launching the app on that phone.
Point over here is – Do try to use your app on your own devices except for the ones you
use in the office. It is quite possible that you see some issues with your app.
The scope extends further than what we have discussed in the above paragraph. We
should make sure that the app is not asking for any permissions which are not used.
Any end user familiar with the software industry may not download the app in which too
many permissions are asked. If you have removed any feature from your app, then
make sure to remove the permission screen for the same.
Compare with similar and popular Apps in the Market
Moral of the story – If ever you are in a doubt, then just don’t conclude it yourself.
Comparing with the other similar apps on the same platform can strengthen your
argument that the functionality under test will work or not.
Get an Overview of Apple’s Build Rejection Criterion
Lastly, a majority of you have might have come across situations where your builds got
rejected by Apple. I know this topic won’t interest major portion of the readers but it’s
always good to know the rejection policies of Apple.
As a tester, it becomes difficult for us to cater the technical aspects but still, there is
some rejection criterion which the testers can take care of.
Until and unless we don’t feel the product as our own, we never ought to give
suggestions for new improvements or changes to the existing functionality.
I am sharing this because I have seen the app crashing after launching it, say after
around 14 hours from background state. The reason could be anything depending on
how the developers have coded it.
Example:
Let’s talk about PayTm.
You all must have clicked on ADD MONEY option in the PayTm app, which then
displays the balance you have in your wallet. If we consider what is going on behind the
scenes, then it is a request which is going on to the server with the PayTm UserID and
the server sends back the response with the balance in your account.
The above case is only when one user has hit the server. We need to make sure that
even when 1000 users hit the server, they should get back the response well on time
because end-user usability is our prime goal.
Conclusion
I would conclude this tutorial by re-iterating that mobile testing seems to be very easy in
the beginning but as you keep digging in you will understand that it is not easy to ensure
that whatever developed will run smoothly on thousands of devices all over the world.
You would mostly see the apps that are supported on latest and last few versions of OS
only. However, it becomes the duty of the testers to ensure that they don’t miss out any
scenarios. They are many other points which need to be taken into consideration but I
haven’t mentioned those already iterated in the other tutorials.
Scenarios like battery consumption, interrupt testing, testing on different networks (3G,
Wi-Fi), testing while switching networks, monkey testing of mobile apps, etc are all
useful when it comes to mobile testing.
The attitude of testers matters a lot when it comes to the real testing environment. Until
and unless you love your job you won’t bother doing things which are mentioned in the
tutorial.
I have been in this field for around 6 years now and I’m very well aware that the tasks
get monotonous at times but there are many other things that we can do on our own to
make those monotonous tasks somewhat interesting.
Designing the right test strategy, choosing the right mobile simulators, devices, and
mobile testing tools can make sure that we have 100% test coverage and help us
include security, usability, performance, functionality, and compatibility based tests into
our test suites.