ALL ABOUT FRAGMENTATION IN MOBILE APPLICATIONS

What is Device Fragmentation:

Device fragmentation is the phenomenon by which an increasing array of devices are used to access digital contents within websites and applications.Mobile devices experience a lot of device fragmentation.

Device fragmentation raises different issues for Merchants,content providers,advertisers and digital marketers.Digital content needs to be served to devices with different features and abilities and to an ever-increasing number of screens.A single visitor or customer may also access a same content or offer via different devices within a day.It presents a challenge for cross device identification.

What is mobile device fragmentation:

Mobile device fragmentation is a phenomenon that occurs when some mobile users are running older versions of an operating systems,while other uses are running newer versions.

Mobile device fragmentation can be a problem for software developers who must create different versions of the same application inorder to make sure it works correctly with different versions of a given operating system.It is also a problem for the QA department because different operating versions have different capabilities,which make them harder to manage and secure.

Mobile device fragmentation is often associated with Android, windows mobile operating system.Mobile device fragmentation is not much a problem with iOS devices.

There are a couple of dozens smartphones available in market, some are high end, such as Apple’s iPhone or Google’s Nexus devices, and there are many under powered devices starting from Android phone’s to the Blackberry Curve and Microsoft’s Windows phone, and there are also a large scale utilisation of tablets.

The Problem Of Fragmentation In Mobile Applications:

Fragmentation possess a huge challenge to the QA team,who generally have just a few devices to test there applications.Fragmentation is both a strength and weakness of the mobile mobile ecosystems.Here the main fragmentation problem arises for Android devices.

Apple operating systems doesnot have much fragmentation because it is alone responsible for distributing the operating system updates.

Fragmentation in Android:

Android has the most fragmented operating system,as its updates comes from wireless carriers, for example Andriod 4.0 Ice Cream Sandwich is the newest version, but more than half of the android devices in market still uses Android 2.3 Gingerbread.

Android devices come in all shapes and sizes with vastly different performance levels and screen sizes.There is also many different versions of android being used that adds another layer of complexity.

In short developing and testing applications that work across the whole range of Android devices can be extremely challenging and time-consuming.

Android users are divided into 5 versions of the operating system.

This means that the performance of the application is different, depending upon the version of Android with which they are run, and can even affect access to various characteristics or functions of the device in use.For this reason, android application are developed in a way that sets several parameters including MinSDKVersion,Max SDKVersion and TargetSDKVesrion.

Below mentioned is the various platform versions of Android

image1

This are basically the minimum version of Android compatible with the application,the maximum version of Android compatible with the application and the version that suits the application best,normally the one with which the application was tested.

From the point of user security,fragmentation involves a major problem.This is because most vulnerabilities that are identified are patched only for the latest version of the operating system,which leaves the majority of the users of the platform at risk.

Fragmentation in iOS

When it comes to iOS,this is not so extensive problem,because as soon as Apple launches a new version of operating system,then within a short period of time goes by before all the devices are upgraded with the latets version of operating system.

image2

The above image shows the version details of the iOS users.

Well it is also true that there can be devices for which new version is not available.Normally, these are items old enough to be considered as having reached the end of their user life,which is not the case of an Android devices.

The main reason for this fragmentation is that Google wanted Android to be present on the largest possible number of mobile devices. Hence, they made it open code, so that manufacturers could develop items incorporating the operating system, with responsibility for making new versions of the system available falling to them.This increase makes it highly unlikely that the objective of finding a solution for fragmentation is anywhere near being achieved.

As for Apple, since they are the only manufacturers of device with the iOS operating systems,they have more control both over physical equipment and over other software updates.

BEST PRACTICES FOR MOBILE USABILITY TESTING IN RETAIL APPLICATIONS.

In this technologically sound age, everyone uses a smartphone, and with the growing usage of mobile devices the use of retail applications in mobile has also grown rapidly. A huge population uses mobile devices to shop online. So it is very important to test the application for being user friendly while using in mobile devices, as there is a huge difference in layout in the mobile and desktop screens, and user basically has a mindset to use the application in the same way as they use them in the desktop screen, so from a tester’s point of view, here are some best practices that a QA should take into consideration while initiating testing for retail application in mobile devices.

1.HOME PAGE:
For an application homepage is the first thing that holds the user to explore or leave the application, hence it is the responsibility of both the QA and Developer to work on it to make it user friendly so that user can be able to access the same easily even in a mobile device.
a.Brand Experience:
Branding the homepage properly is the best way to attract users to use the application.For example,when we open an online retail page in our mobile say amazon.in, the most important aspect is that user gets comfortable and feels familiar while scrolling to and fro the home page.The most important thing is user relates to the application and doesnot feel that he/she has opened a page which was not out of intention.
b.Prominent Search Field:
When user gets into a retail site, they first search for the required products that they need, but as the application is used in a mobile device, and mostly the “search” field is present at the bottom or at the side, as a result of which user needs to scroll the screen to search for the product and in most cases user switches to a more easier application. So it is important to keep the “search” field at the top of the home page as user is acquainted in viewing the search field at the top of the screen in desktops and sticks to this behaviour of the application.So the best practice is to place the search field at a prominent and persistent position that is at the top.
c.Category Browsing:
Sometimes user donot get how to browse using categories as some sites have not designed the category browsing easy which makes user difficult to understand, So the user has to forcibly use the search field to find the products.some sites have the categories list and a navigation arrow, which when clicked navigates but that doesnot tells the average user that it can be browsed, hence the best practice is to place the categories under the header “browse categories” or make a dropdown list of “browse categories” and add all the categories to make user access the same easily.In this way a large number of categories can be included in the homepage itself.

2.NAVIGATIONAL BROWSING:
There are a lot of pros and cons of navigational browsing,let me give an example of the same.
1.In some applications there is a huge tree of categories and sub categories to choose from, like we have multiple categpries under the browse categories->cat1,cat2 namely. And cat1 say is clothing, when selected again shows more options->men,women,kids, women category when selected again shows tops,dresses, again when tops is selected it shows a list of all the varieties of tops available, hence it becomes very frustrating for the user to wait such a long time to get the results hence they close the browse category option and directly opt to use the search option.
We have another better option and the naviagtional browser should work in this way

2.Suppose we have in the browse categories say multiple categories cat1,cat2 and so on.when we select cat1 as clothing then it should show options as men,women,kids, selecting women wear should show all the images of the items alongwith the rest sub categories at the side so that user donot have to wait to find the product and showing image will keep the user engage and also help user understand what they are choosing .

3.RESULT LISTING:
This is quite important point that needs to be taken into account while using a retail site in a mobile device, as the screen size in mobile is different from that of desktop so the contents of the results listed should be satisfactory enough such that it provides details of the product in a glance.
a.Price:
Price is one of the most important thing that should be taken into account while shopping online.
The pricing details, discount% if any, the amount we save by purchasing from the site incase of sale, all should be mentioned clearly.The information should be precise, a one liner would be better so that more items fits into the mobile device.
b.Brief Description:
Brief description of the items filtered should be provided in one liners stating the product name, manufacturer and a short important description describing the product feature, so that the user gets an idea of his requirement and product available, and then if needed the user will view the product details page.
c.Ratings:
Ratings and reviews are important, while shopping online, users trust the products by the ratings and reviews, products having 2-3 good reviews and high ratings are always more preferred by user than products having low ratings.
d.Availability:
Product availability should also be shown in the result listing screen, like some sites show “in stock”, “out of stock”, “1 left in stock”, this informations make the user to decide to buy the required items quickly incase they get out of stock.

4.PRODUCT DETAILS PAGE:
The important aspect of product details page is the layout as the mobile device has a smaller screen than the desktop and also the screen sizes varies.
Here let me give various examples of the layouts of product details page:
1.In some of the sites we can find that the product image is too large and it takes most of the mobile screen,user have to scroll down to check the description, further scroll down to check the product options like colour,size, add to cart and then again when scrolled further the product reviews and ratings can be viewed.
2.In some of the sites we can find that the product image is present, with the product description and ratings at the top corner of the image, quantity and colour options are also present in the same screen,but user have to scroll down to check the reviews and ratings in detail as even if there is a link that navigates the user to the review details but that is not known to user as there is no such link shown that describes the same.
3.And the best practice option is that the product has multiple images from the required angles, there are various buttons for product description, product reviews as well as for optionshe and add to cart.In this way all the required information will be present in the same screen, and user doesnot have to scroll the page to and fro to check the details.

Thus these are the basic points that needs to be taken care of by a QA while testing a retail application on a mobile device, as user normally have a tendency to check the mobile application as per the functionality and usability of the desktop application.Hence the functionality is same through out only
the usability point should be taken care of due to versatility in screens.

SECURITY TESTING IN MOBILE APPLICATIONS IN THEORY (Part 1)

Mobile application security testing has recently obtained more attention with the introduction of iphone,ipad and andriod phones.With the growing consumer demands for smartphone applications, companies are in a rush to develop new applications or modify there existing application to fit into the smartphone world.

Compared to web and desktop application, mobile testing application are prone to risk and hence security testing is less done in this kind of applications.

There are more threats on mobile applications than the web and desktop application due to the following reasons:

->Location independent.

->Mobile applications are always online and hence traceable.

->Devices are built for personal uses.

->Mostly focus is done on functionality and design rather than securtiy.

->Hidden business cases for free application.

Challenges in mobile testing:

1.Identify differences to common penetration tests.

2.Application security also depends upon the device security(jailbreak,different platforms,versions,interfaces etc).

3.Different attackers(internal,external,network or device access).

Mobile Security Testing Overview:

->Intelligence gathering

->Threat Modeling

->Vulnerability Analysis

->Vulnerability Assessment

Intelligence Gathering:

Intelligence gathering consists of two analysis namely,

a)Environmental Analysis.

b)Architectural Analysis.

a)Environmental Analysis basically focuses on the company behind the the application and their business case and the relating stakeholders.

It analyses the internal processes and structures.

b)Architectural Analysis mainly deals with application network interfaces,used data,communication with other resources,session management,jailbreak/rooting detection,runtime environment,backend services.

Examples of architectural analysis:

->user session is not out until the user logs off manually from the page.

->When no financial transactions are involved.

->Provides operations on server side for creating,reading,updating,deleting records.

In my next blog I will be posting more about security testing as I learn more about the same in theory with some good examples.

PERFORMANCE TESTING IN MOBILE APPLICATIONS

The use of mobile application has increased tremendously in today’s world.

With new development and technologies the development of mobile application has increased as result of this there are a number of same type application that serves the same purpose, so if the user is not satisfied with the applciations’s performance, then they can easily switch to the next application available.

For quality assurance or mobile testing,the most important concern is the mobile user’s experience which basically depends on the performance of the application.Evaluating and testing the performance of the application is not easy as web application, there ar various criteria such as application structure(browser vs native), network used(3G,2G,WI-FI),payload structure etc.

When we do mobile performance testing, we should take the following points into notes:

a)Device application performance:

The device applications are of two types native and browser based.There are some native applications also that remotely access the browser server. Practically we can perform various device application testing,based on the application provided,like, buy a product using a native application that uses a browser(like the online shopping sites), check for the banking related things like check for your bank balance using the bank site that is installed,start an application,load a page which has multiple information like wikipedia or any other site that has a large number of images and text attached to it.This can be followed in various devices.

For example if we have a gaming application for testing, say a bowling game.

Then here we can check the following points:

a.Time taken to launch the game in various devices.

b.Time taken to throw the ball to the destination, whether it hangs if the ball is thrown at a high speed.

c.Play the game and also play the music at the same time, observe the behaviour of the application in various devices.

d.Play the game and simultaneously keeping the game on,delete a large number of messages, check the behaviour of the application in various devices.

e.Play the game and check for incoming calls/outgoing calls.

f.Play the game and simultaneously open various other applications.

.b)Network Performance:

The application may differ differently in variouse networks.QA needs to test the application in various networks to check the the variation in network latency. Factors like robustness of application,server capacity, battery life, do play an important part but the behaviour of the application withr espect to network is very important for a better user experience.

Below mentioned are some of the desired features that can be considered while testing an application over network.

a)Network disruption testing:

This can be explained as the ability to validate the mobile application functionality under network connections like connectivity loss.

For example, when a user is making a monetary transaction through a mobile application,and there is a connection loss in the middle of the transaction,even if the transaction is completed sometimes it shows a message “transaction is failed”, this is due to the inability of the application to identify the disconnection and hence is not handled properly.

b)Network Performance Testing:

This includes the real time network conditions like bandwidth fluctuation,network types and also validate the end user experience under these conditions. This can be tested when multiple user uses the same network.

For example, when we open a video, a slow bandwidth would have impacts on the video like buffering.

c)Network Congestion Testing:

In simple words, network congestion can be explained as the data loss that occurs when data packets sent by client/server over a network doesnot reach the desired destination.The data loss has a severe impact in the user experience of the application if error conditions are not handled correctly.

For example,data loss in the application may result in an application screen freeze,a sudden application closure,or some features might stop working for some time.

d)Multi Network Tesing:

It is to check the ability of the application to validate the mobile application’s behaviour and network performance during a switch in the network.

For example,sometimes user faces a number of network changes like from wifi at office or home to 3G/2G connection when there is no wi-fi enabled. Hence if the network switch is not handled properly then there might be a database corruption by the application.

e)Trace Testing:

The mobile network testing solution should be able to test the network traces collected from a live network environment.

For example, a huge delay in the network environment may cause slow data transfer, as a result of this the application can show an error quickly or the user interface of the mobile application might get unresponsive.

Today business using mobile applications consider the impact of both the network as well as device testing to ensure the functional performance and flexibility of the application under varied devices and networks.Application versatility in multiple device and network should be taken into account, as the performace of the application has tremendous influence on the brand image of the company that builts the mobile application.

In my next blog I will be writing more about the major aspect of each application that is taken into account alongwith the performance, the “security testing” of mobile application testing.

EXTERNAL FACTOR TESTING IN MOBILE APPLICATIONS

It has been rightly said that “almost anything that touches an application either improves or degrades performance of the application.” Determining whether that is infrastructure,code,data,the network,the application architecture, the end point user, or another application is the name of the game.

So it is important for a QA to consider all the points that affect the application performance when it is in use, to avoid unbearable situations. For this the real time scenarios should be taken into mind while testing the application.

Here are few external factors that should be taken care of while testing a mobile application.

a)Network Connection:

A mobile application is going to work in various networks connections.So it is important to check the application when the device is used in various network coverage mentioned below:

a.The application should be checked when the network is connected to WI-FI connection.

b.The application should be checked when the network is connected to 2G connection.

c.The application should be checked when the network is connected to a 3G connection.

d.We can check the application without entering any sim card in it and also by inserting sim card in it, to notice its affect in the application performance.

e.Check the functioning of the application when there is no network connection at all,by disconnecting all the mobile network connections(real time scenario, when the mobile has no connection at all)

f.Check the behaviour of the application when the mobile device uses the network through a USB connection into the PC.

g.Check in places where there is poor network feasibility, to check the applications behaviour in situations where the connection goes up and down.

h.Check by walking out of WI-FI range so the connection automatically switches to 2G/3G and being in this scenario check for the network’s behaviour.

b)SD Card Interactions:

Some application uses SD card to store and retrieve data, for this kind of application QA needs to

a. check the behaviour of the app when the SD card is available and when the same is removed.

b.check whether error messages are shown or not when the application is not able to connect to the SD card.

c.Also we can check the behaviour of the application by removing the SD card in the middle of the operation to check how the application responds to this malfunction.

c)Interrupt testing:

Normally when we use the application in a mobile device, and now a days even the tablets are able to receive calls. So in this case, the response of the application needs to be checked when there are device related interruptions.

Following are some of the device related interruptions which should be included in a QA’s testcase execution list to check the overall response of the application.

a.Application is interrupted by an incoming call, and the receiver hangs the call.

b.Application is interrupted by an incoming call, and the caller hangs the call.

c.Application is interrupted by an outgoing call, and the receiver hangs the call.

d.Application is interrupted by an outgoing call, and the caller hangs the call.

e.The application might be interrupted by a incoming message(both audio and text message),web notifications,low battery notifications,alarm clock,reminders are some of the mobile dependent interruptions.

d)Device Options:

There are some device related functionality that might be affect the application performance, namely:

a.If its a music related app or something related to sound, check whether changing the sound profile affects the application’s behaviour.

b.Sometimes devices have application unlock facility, so while installing an application it may prompt to provide password or unlock the screen, so this needs to be checked that whether this unlock screen feature affects the application flow.

c.Check by changing the font or theme of the mobile device, and check whether this affects the application’s performance.

d.If the device has a time out period provided, check whether it affects when an applciation is in use.

e.Check whether the application responds to the screen orientation aspect of the device, do it fit correctly when changes to landscape or portrait mode.

f.Check whether the application responds properly or not when there is some other connections like bluetooth or connected to some other device.

All these above external factors are not applicable in each scenario, based on the applications design, requirement and functionality we can perform our testing using this basic cases.

USER INTERFACE TESTING FOR MOBILE APPLICATIONS

In a mobile application, the first area for which test plan needs to be executed is the user interface. It is very important to have a good look and feel of the application that would attract consumers to use the application.

It is the duty of a QA to ensure that the application has a easy to use user interface.

The QA should have a proper knowledge about the flow of the devices in which the application is to be tested, as the application might have impact on the mobile device’s native application like phone,email,camera,contacts,calender etc.

Below are some of the important points that is to be considered in a user interface testing alongwith the some of the basic steps that a QA generally follows to test the various aspects.

a)Screen Resolution:

In today’s scenario, the mobile applications have become more versatile,they are designed to fit to various mobile devices, with different screen resolutions.

In this case it is wiser to start with the device with the smallest screen and then continue to the largest one. In this way, incase of the smallest screen, there are chances that the application doesnot fit into the device, and the fields and screen are cut off. Same is the case with the devices with various screen sizes.Hence we need to check the screen orientation both in landscape and potrait mode in different screen sizes using various devices available as per the requirement, and also all the pages in the application needs to be tested in both landscape as well as potrait mode.Any layout changes in future should also follow the above process to make sure that the application still looks good in the required screen sizes.

The second thing that is quite important while checking for the screen orientation is the use of the virtual keyboard while changing the screen modes.

Lets take a real time example,sometimes there are chances that when user makes frequent change in orientation and by mistake the virtual keypad opens, or user is in a hurry, and wants to search something, in this process if the screen orientation changes (which is very obvious in the smartphones that are very sensitive to the screen moves), and on opening the virtual keypad, the screen might crash or have a negative effect on the application which is very common, if developer has not provided exception handling. So this kind of scenarios should be handled.

b)Touchscreens and Trackballs:

Smartphones basically have a number of touch functionality to make the applciation look easier, like the pinch-to-zoom effect, sliding effect are some to include.

So QA should make it a point that the application is checked by zooming in some of the sections as per requirement of the application, like for a restaurant application or for a navigation application, we need this zooming effect extensively, to check whether when zoomed in it shows the result in more detailed way or not., similarly if the texts are too small, we can just zoom it and check that they are not distorted.

In the same way we need to check that the sliding effect is working in a single stroke or not.After we slide, the next screen must fit into the screen resolution without getting distorted.

The buttons used throughout the application should be big enough to be clicked in a large fingertip, and also sometimes user uses stylus to perform the functionality so this should be kept in mind that the buttons are sensitive to any kind of touch.

When user needs to enter text in any search field, or user entry fields, the virtual keypad should open automatically, and also user should be able to scroll throughout the page by using the up and down storke.

Sometimes,user donot use the touchscreen, and prefer to use the trackballs, and also not all mobile devices have touchscreens, so navigation through fields should be activated using trackballs, left right navigation, page scrolling, so that using the application is easy even without touchscreen.

c)Hard keys:

The application should also be tested, to make sure that they are well integrated with the mobile hard keys like start,home,menu and back buttons.

In general to make the user have a great experience, these hard keys should work the same way it works in mobile’s native application.

d)Shortcuts:

Discuss with the developers if there is any shortcuts present in the application that is similar to the device used for testing and check whether it functions correctly or not.

The above mentioned points are some few things that is to be considered in general while testing a mobile application for user interface. Various devices have different functionalities that is to be considered and testing should be done based on the application.

MOBILE APPLICATION TESTING STRATEGY:

As a beginner in mobile testing, I would like to share all my learnings in this blog.

Before we begin testing a mobile application, let us have an overview of the type of mobile applications present.

There are basically three types of mobile applciation, namely-native,web and hybrid.Native applications are speciffically designed to run on device operating system.

While web applications get the resource from the internet directly each time we run the application and hybrid applications have a native build and they are implemented using web technologies.

A tester needs to be aware of these things and think about test objectives, test approach, test design, and test execution specific to the type of application being tested.

Development of applications for mobile devices is a rapidly growing process.

The mobile users like iphone,ipad,android,windows phone 7, all these create a never ending demand for more and more applications.

Thus the user wants the mobile applications to be easy and faster, one small bug in the application can result in product dissatisfaction,losing the customer and hence monetary loss.

It is therefore important to prepare a proper strategy which is very much mobile specific, as there is much difference in testing a web application and a mobile application.

Below mentioned are some areas that are very much mobile specific, and can be considered as an initiate to mobile testing.

1.User Interface Testing.

2.External Factors Testing.

3.Stress Testing.

4.Security Testing.

Apart from this we have the functional and integration testing, which are basically same as we test any other application, very much requirement specific.

In my next few blogs I will be explaining each of these strategies in detail as I explore them more.

 

Foundation to Mobile Testing

In today’s rapidly growing world, the use of mobile application has become more and more common, than the desktop or web applications. Today starting from the youngsters to the middle age man, people from each age group prefer to use there mobile for the basic purpose to access their bank accounts,credit card access,travel itineraries to personal email to name a few.

So the mobile consumer are increasing due to its application usability and consumer satisfaction. With the rise of the consumption, the thirst for better user friendly application is also growing. So to reach the consumer level satisfaction, the client should always consider the real time user point of view and instead of checking for cost reduction should thoroughly insist on the testing effort. As the application might be developed in a very brilliant way but there are various situations both external as well as internal circumtances that affects the application performance,which might make the consumer not so easy to handle the application.As a result of this the consumption might descrease due to user dissatisfaction and hence a loss in business.

Hence, testing is time and money consuming, but at the same time it is an important aspect of mobile testing. As mobile testing is not a matter of single platform or single device.

Mobile testing involves various operating systems like Android,iOS,Windows, it deals with various versions of an operating system such as iOS 4.x, iOS 5.x,BB 4.x,BB 5.x,BB 6.x, and the multiple manufacturers such as Samsung, HTC,Nokia,Apple among others.

Types of Mobile Testing

1.Hardware Testing

This includes the mobile features like screen resolution, internet connectivity,screen sizes,resolutions,space or memory,camera, radio,bluetooth etc.

2.Software Testing

The applications that works on mobile devices, those are tested for its functionality and performance.Software applications can be divided into three types.

a)Native Application:

It is created to work in platforms like mobile and tablets, it can use the the device’s notification system and work offline.

b)Mobile Web Apps:

Mobile applications looks and feels like native application,but they are not implemented like the same.They run by a browser and typically written in HTML. Users first access them as they would access as any web page, and then they can be saved in the homepage if wished by making it bookmarked.

c)Hybrid Apps:

These applications are partly web application and partly native application.Like native applications, they are present in the mobile app store, and can take advantage of the many device features available and like web apps they depend upon the HTML that is used in the browsers.

Types of Mobile Application Testing:

a)Usability Testing:

It should be user friendly and easy to handle, and designed as per users requirement to reach user’s satisfaction.

b)Compatibility Testing:

As per the requirement, the application should be tested in different mobile devices, operating system versions,different screen sizes and resolutions.

c)Interface Testing:

Testing the navigation flow of the application including the options, buttons, bookmarks, history, setting.

d)Services Testing:

Testing the services of the applciation provided,and noticing its behaviour when online and offline.

e)Low Level Resource Testing:

Testing of memory usage,auto deletion of temporary files,local database growing issues known as low level resource testing.

d)Performance Testing:

Testing the application using various network connectinos such as 2G,3G,wifi.

Check the application’s behaviour when files are shared, check for the battery consumption when applciations are used.

e)Operational Testing:

Testing of backup’s and recovery plans if battery goes down or data loss while upgrading the application from store.

f)Installation Testing:

Checking validation of the applciation by installing or uninstalling the application on the device.

g)Security Testing:

Testing the application to check that the database information are secured or not.

These are just the initial knowledge required to know what actually mobile testing is all about.

There are more to come regarding mobile testing.