Monday, 2 September 2013

Manual Testing for Mobile apps

This document focuses mainly on the majorly used testing methodologies that we use specifically for mobile applications.

  • Installation and uninstallation testing: - Installation testing is one of the most important part of mobile testing. This testing focuses on each steps of the installation process that a user has to follow. Usually the methods followed for downloading an application are:

      • Over the Air
      • Through Cable
      • Bluetooth
  This testing covers installation, upgrade, and uninstallation of the application.
  Before installing the application on Android device, allow installation of non-market applications on the device by selecting Settings -> Applications ->Unknown Sources. This path may vary depending on the device.

  • Installation testing of Mobile App: - Developers provide build for testing to the tester that can be an .apk file in case of android app. Tester should copy that .apk file to the mobile device and install the app.

  Verify the following points after installation is done:
      • App icon should be generated and shown.
      • The application should be listed under Settings > Applications > Manage Applications.
      • Verify that the app should consume sufficient amount of memory required by the application. The implications of this can be observed from various angles like battery, performance of the mobile as a whole etc.
      • The application should not run in background always on exit (Also depends on application functional specifications).
      • Verify the version of the application. This can be verified in the Manage Application section.
      • Verify the permissions required by the application and the permissions it uses. The application should not ask for unwanted permissions. This has an impact on the visibility of the application users on Google Play.
      • Verify the application installation both in device and on SD Card. Tester can verify the application installation in the Manage Application section.
  • Uninstallation testing of mobile App:-  For uninstalling the mobile app, go to Settings>Applications->Manage Applications-> App (this path can vary on different devices) of the mobile device and uninstall the app. It will take some time to uninstall. Also verify in –Applications section of the mobile device that the app should not be shown. Also the respective memory should be freed that was consumed by the app.

  • Mobile App Launch testing: - When mobile app is installed successfully, an app icon should be created. On tapping of App icon, splash screen should be displayed.
  Verify the following point during app launch:
      • Verify the company/App logo on the start screen.
      • If app is taking too much time to start, just re-installed the app and try again. If the problem exists, connect with developer or raise a defect.
      • With one click, the application should start. Based on the application specification, the application should continue functioning.

  • Testing of Android App on different resolution devices: - With diverse screen resolutions and screen sizes a number of Android mobiles devices are available in the market. Testers should cover all the different screen resolution mobile devices as described in requirement.
  Verify the following points while running the mobile app on different resolution devices:
      • Verify the correct button image should be shown as per the resolution.
      • Verify that the button images should be clickable in different resolution mobile devices.
      • Verify the font sizes
      • Verify the height and width of all the elements of the Activity should be in proportion.
      • All screen elements should be properly aligned and should cover the space as their ratio.
  There can be additional aspects which should be covered in this section depending on the application.

  • Touch Response Testing: - User usually get frustrated when they do not get a favorable touch screen response while running a mobile app, so it's quite necessary to test the touch screen response of your app.
  Verify the following points while testing touch screen response:
      • Install/load your mobile app and tap on different buttons of your mobile app and observe the touch screen response.
      • Do this for all the Android mobile devices covered in requirement.
      • Verify the touch screen response with screen guard and without screen guard mobile devices.
Note: If you are not getting a good touch screen response, it can be an issue with the mobile device only not with you mobile app. Notify the team or product manager about these devices.

  • UI & Functional Testing: - User interface is one of the most targeted areas on which any of the company work when it wants to launch any of the mobile app.
   During testing of any mobile app verify the following general check-list for a good User interface.
      • Make it possible for users to go back to a previous screen for instance by adding a back or cancel button
      • The main function of the app should be apparent immediately. It should speak for itself.
      • In an app, the user should not be able to store files locally
      • If there is a long list of data to scroll through, a search option should be provide above the list.
      • If performance is slow, a progress status icon ("Loading…") should be indicating, preferably with specific message.
      • In case of 'live' filtering of data while the user enters his search query, verify the performance.
      • The appearances of buttons that perform standard actions are not altered in the app (for instance: refresh, organize, trash, Reply, back, etc.)
      • Do not use standard buttons for other functions then that they are normally used for.
      • If the app is stopped at an unexpected time, user data should be saved locally and available at start-up.
      • Users should be warned of the consequences of deleting a document/record.
      • Keyboard should be adjusted to expected input (for instance numbers/letters when expected).
      • Inactive buttons should be clearly distinguished from active buttons.
   Key points during mobile App functional testing:
      • Verify that app should function as per the requirement.
      • If mobile app's web version also in running status then verify the data on mobile app and web app both.
      • Verify the time zone , if app is using local time zone
      • App should retain the default setting that user saved.

  • Mobile Database testing:-  Most of the mobile applications use SQLite database to store the application data locally. For example in the mobile games, game stats like High Score, Game levels scores, Time etc are save in the database locally. And to fulfill this requirement SQLite database is used. Tester needs to relaunch the application multiple times and needs to verify the High Score, Game levels scores, Time etc.

    Additionally tester can contact the developer to read the DB files created in SQLite.

  • Push Notification: - Push notifications let your application notify a user of new message even when the user is not actively using the application. On Android devices, when a device receives a push notification, the application's icon and a message appear in the status bar/system tray. When the user taps the notification, they are sent to the application.

  • Interrupt Testing: - Interrupt testing assures that the device native functionalities are intact and well functional even if the application is running. Interrupt testing also assures the application robustness with the device native features. Some of the major device interrupt tests are as per below:

      • Screen orientation: - This interrupt is applicable to the devices having both Landscape & Portrait views. It is also dependable if the application is developed in both the views or not.

      • Phone Call – Incoming Call, Missed call: - A call should be received while the application is running. The incoming call prompt should appear at any time while the application's running. This way, the user will be able to answer, decline or ignore the call. Device settings like ringtone, vibrate, silent mode should be followed on this interrupt. After the phone call interrupt, application should be resumed properly without any data loss and crash.
      • Incoming call with contact picture:- If the contact picture is enabled to a contact then on the phone call interrupt contact picture should be displayed.

      • Sound testing: - Selected ringtone, volume level, alert tone should be audible when respected interrupt is given when application is running.

      • SMS, MMS: - A call SMS/MMS should be received while the application is running. SMS/MMS alert sound should be audible.
      • Video Calls: - A video call should be received while the application is running. This way, the user will be able to answer, decline or ignore the call. After the video call interrupt, application should be resumed properly without any data loss and crash.
      • Power consumption or battery life testing: - Application should show the low battery alert when device battery is low. And on plugging in the charger, application should work as per expected.
      • Media key interrupt: - Media/Music key should be pressed when application is running. Application should be in the background when media key is pressed and no data loss should happen.
      • Lock key interrupt: - Lock key should be pressed when application is running. Device should be locked and on unlocking the device application should resume and no data loss should happen.
      • Volume key interrupt: - Volume keys should be pressed when application is running. Device ringing volume should be increased/decreased application should work as expected and no data loss should happen.
      • Camera interrupt: - Camera key should be pressed when application is running. Camera should get opened and after closing the camera application should resume and no data loss should happen.
      • Alarm interrupt: - Alarm interrupt should be given when application is running. Alarm prompt should appear at any time while the application's running. This way, the user will be able to close or snooze the alarm.
      • External incoming communication: - Bluetooth, infrared or LAN wire file transfer interrupt should be checked when application is running. A prompt message should be displayed to accept or decline the file.

  • Localization – Default, User region: - If the application is built for multiple regions and different types of end users then localization testing should also be performed along with the time zones testing for regionalization.

  • App setting + Device setting: - Device setting should be the master settings for the device. No application setting should override the application settings. Application should remember the last settings done at application level.
      • Device Settings – Ring volume, ringtone, volume level, language, time zone settings etc.
      • Application Settings – Application language, home location/region, themes etc.
  • Crash Logs: - While testing there will be some scenarios where application will crash but we can't reproduce that scenario again. In that case we can grab the crash logs and attach that with the bug in the defect tracking tool.

    To get the iPhone crash logs tester need to connect the iPhone to PC and sync the iPhone to iTunes. Now you can get the crash logs following the below path:
"C:\Users\<Login User>\AppData\Roaming\Apple Computer\Logs\CrashReporter+ MobileDevice\<Device Name>"
   To get the Android Phone crash logs tester need to connect the Android Phone to PC (with Eclipse environment and Android Installation) and start the emulator keeping the Eclipse Logs view on. Now you can get the crash logs following the below path:
 "Eclipse Menu Window>Show View>Other>Logcat"

  • Stress testing: - In mobile application as we know that mobile device have limited memory and that will cause issues like crashing or malfunctioning of app. So stress testing will play an important role in making our app stable. For this a tester need to test app by multiple tapping on the button/links/link images etc. By tapping multiple times you are making similar request at the same time and there will be very good number of chance to get defects. Another way to stress test is to browse app at a very high speed.  
  • Testing in various network type:- For better quality we need to test app on various platforms using different network types( 2G : GPRS, CDMA, EDGE) (3G : Wi-Fi, Different type of plans used on service provider)

  • Network Testing: – Verify the behavior of application when there is Network problem and user is performing operations for data call. User should get proper error message like "Network error. Please try after sometime". Verify that user is able to establish data call when Network is back in action.

NOTE:- The above mentioned testing methodologies are applicable for all types of mobile platforms. If any of the test is applicable  only for Android/iPhone then it is explicitly mentioned as and where required.