Total Pageviews

This blog is dedicated to knowledge about software testing.

Thursday, April 15, 2010

Types of Mobile Applications

Mobile Applications are increasingly advancing in the market in the current trend. More and more applications are being developed and launched in mobile versions to extend the market to this big set of users who are active stakeholders of mobile application domain. Mobile versions of a product differ in many ways from their other platform counter parts. This particular article deals with the different types of mobile applications which are commonly used by mobile users, and their specific attributes.


Browser Based Applications:


These are applications built for mobile browsing. They can be accessed by entering the particular URL in mobile browser. Often, the URL start with 'm' (Eg: m.google.com). For these type of applications, no install or uninstall, or even software upgrade is needed, as all the user has to do here is access the site URL on his mobile browser.

While building a mobile browser based website, certain aspects should be kept in mind such designing the layout, UI components and functions made available to user. Mobile browser would normally be a subset to the web browser, and as the screen on which user would view the mobile site will be much smaller as that of a desktop/ laptop system, hence cluttering the UI with lot of links, images, buttons and any other component, and providing a lot of functionality which may not really be needed when the user is on the move, would lead to depreciation in usage of that browser based application. This would be very unoptimal and non user friendly as the user will be lost while using this browser.

Additionally, since this would be a browser based application, the local system database cant be accessed to store much information, and hence a lot of time will be consumed when user would try to access any page which has a lot of UI components. This would again lead to reduction in usage of that application. For example, in case user wants to access mobile version of a financial site, he would definitely expect good performance speed, else he may not be able to perform the transactions at the desired price, for stock prices may vary any instant.


Pre Installed Applications



These are the mobile applications which are shipped as in built software with the mobile device. Some of the examples are applications without which one cannot imagine a mobile phone: Native phone book, SMS/Email Client and so on.



There is another category, which adds on to the device to accelerate device sales. They can be some specific application built for a mobile device manufacturer, for a particular handset model (For Eg: The yahoo messenger is pre shipped with many devices). In such case, if the device with which these applications are to be shipped are not ready yet, then a device prototype is used to develop and test these.

Normally the OS of the prototype is not very stable, which makes the testing and development difficult. Its critical to make sure these applications work fine and are of supreme quality before being shipped with handsets, as these can neither be installed, nor uninstalled. However, these applications can be upgraded, but this mostly is an auto upgrade. After being shipped with device, if the application has to be deleted, the device ROM would be needed to be erased. This would make it painful for user to go for that handset, and would definitely affect the sales of handsets negatively, instead of accelerating it.

Installable Applications


These are applications whose executable files/packages can be downloaded/received by wireless/wired media. How these executable files are received in device can be platform/device specific. They can be installed and uninstalled from the device. Upgrades for these applications can be done based on application/platform design.



The various sources from which the executable files can be received are:
1. Mobile App Store
2. Over The Air (OTA)
3. Transfer via wired media like USB cable from the system.
4. Transfer via wireless media like BlueTooth and InfraRed.

They can deal with local device database, can store information there, which can be helpful in faster execution of the application. However, one must be careful with file size of the application, if it consumes too much memory, then it may lead to user's dissatisfaction, and further to reduced usage of the application.

*Please Note: Contents of this article have been presented at Software Testing conference at indicThreads in March 2010

Creative Commons License
Software Testing by Indira Pai is licensed under a Creative Commons Attribution 3.0 Unported License.

Testing Techniques of Mobile Applications

When you use a mobile application, you may not realize the challenges which the team of developers and testers have dealt with before packaging this product for launch. Developing and Testing mobile applications is a complex and challenging task, and involves quite a few brainstorms to deal with many a cases, which are not normally encountered in other platforms like Web and Desktop.

The small screen, the compact device with lots of hidden mysteries around hardware inside it, the power supply, the network connection behavior and many such aspects make mobile application computing an interesting undertaking. This article deals with a few mobile testing generics, which can be applied to any mobile application type on any mobile application in any mobile platform.


Mobile Testing Generics :

Network Related cases
  • Testing in various Network Types
Some mobile applications which require network connection operate on different network types on different handsets.
Examples of such applications are:
  • Search Based applications
  • Financial transactions aiding applications
  • Email/IM based applications.
Such applications should be tested on all possible network types, that the devices for which they are being built for support.

Some network types on which applications can be tested in different devices are:
  • 2G
    • GPRS
    • CDMA
    • EDGE
  • 3G
  • Wi-Fi
  • Different types of plans based on service providers.
  • Testing in various Network Strengths
Mobile applications which operate on network connections should be tested in different network strengths.

Various measures of network strengths would be:
  • No Network
  • Low
  • Medium
  • High
Additionally, testing during network strength change should also be done. Some example of such cases would be:
  • Change of network strength from No Network/Low Network to high Network.
  • Change of network strength from High to No Network/Low Network.
  • Testing in various Network Speeds
Network speed affects rate of data transfer, and hence provides another important set of conditions in which the mobile application should be tested:
  • Low Speed
  • Medium Speed
  • High Speed
Change of network Speed can also cause the rate of data transfer to be affected, and hence form another set of test case criteria:
  • Low to high speed transition during data transfer
  • High to low speed transition during data transfer.

Memory Management Related cases
  • Monitoring Memory Usage patterns
Memory management and Garbage Collection have no specific test cases for them, but need a lot of observation while doing an action which requires memory like creating an object. Multiple combinations of such actions done in different sequences and under continuous monitoring is the key to test memory consumption patterns of the applications. If the application crashes during such cases, normally the reason is an out of memory exception. Monitoring for memory usage should be done on different times. One should observe memory usage pattern as the application is being:
  • Launched
  • Run in foreground
  • Run in background
  • Exit
  • Running continuously for a long time.
  • Monitor memory usage patterns for different number of third party applications installed in device
Free memory available for an application usage also depends upon other applications which are installed in the device. It may so happen that the application may manage memory very effectively when tested stand alone in a device which doesn't have many third party applications, but it may not be able to do so when there are multiple other applications installed in the device. It therefore becomes an important test scenario to observe memory usage of the application when it is running in a device which has multiple applications installed. One should check memory usage patterns when in device apart from the pre installed applications:
  • No other applications are installed. So a lot of free memory available in device.
  • Some third party applications are installed. So lesser free memory available in device.
  • Lot of third party applications are installed. Hence, very less free memory available in device.
  • Memory consumption pattern when applications are in different modes
One should also validate that when multiple applications run in the device, memory consumption of the application is not having any issues, or causing any issues to other application which are running in the device. This leads to another set of test scenarios where in one should check memory consumption pattern when multiple applications are running while the application is being:
  • Launched
  • Run in foreground
  • Run in background
  • Exit
  • Running continuously for a long time.
Battery Related cases
  • Testing in various Battery Strengths
Running of mobile applications in a mobile device gets affected in quite a few ways by the state of battery of the device. It may so happen when in low battery mode, the device automatically goes into silent mode as per setting. Also, during charging the incoming call alert might change from vibrate to ring as per setting. Cases as stated above and many more need to be observed when the application is running in foreground or background for the following device battery strengths:
  • Critical
  • Low
  • During Charging
  • High
  • Monitoring Battery Consumption patterns
Battery consumption rate is a very critical test scenario for mobile applications. No matter how good the application is, if while using it the device battery drains considerably, then the user would surely reduce or stop using the application. Therefore, the battery consumption rate of the application must be observed when its running in foreground or background for a long time. Also, if parallely some other applications are running along with the application in question, this should not affect the battery consumption rate adversely by that application.
Some Other cases
  • Interruptions
Interruptions are activities which can occur parallely in the device while the application is being:
  • Installed
  • Launched
  • Run
  • Exit
  • Upgraded
  • Uninstalled/Deleted
The impact of the interruption on the application needs to be monitored. Some examples
are:
  • Incoming call
  • Receiving incoming call
  • Receiving message
  • Device shutdown
  • Remove battery
  • Camera activated
  • Lose network connectivity and then regain.
Its important to validate that application handles interruptions and doesn't crash as the interruptions can occur in a normal use scenario frequently when the application is running.
  • Debug Build
This is a very important asset for reproducing difficult to reproduce bugs in mobile device. Debug build refers to a build released in Debug mode, which has logs enabled. The enabling of logs is based on a sequence of keys. Once the logs are enabled, all events and actions from the application are recorded when the application is running. This helps in retracing the issue.

*Please Note: Contents of this article have been presented at Software Testing conference at indicThreads in March 2010


Creative Commons License
Software Testing by Indira Pai is licensed under a Creative Commons Attribution 3.0 Unported License.