Hi we are going to share experiences and learning we had while working with Mobile Apps.
May 2012 comScore study reported that duringprev quarter more mobile subscribers used apps than browsed the web on their devices. 51.1% vs 49.8%There are various ways to categorize the mobile apps based on its genre. But we would like to present the categorization of mobile apps based on the development approach taken.
Apps that are specially designed to run on a devices OS & machine firmware & needs to be adapted for different devices.Apps which needs rich UI. Ex: Games, Social networking apps, Lifestyle and EntertainmentMulti touch – double taps, pinch spread, other compound ui gesturesFast graphics uiBuilt-in components
Mobile Web: It’s a web site which run on Mobile phones. - Write-once-run anywhere. Cross platform multiple devices.Many companies go for a mobile web instead of building an app as its platform independent.e.g. m.timesofindia.com, m.facebook.com
Hybrid: An app build using combination of HTML 5 with the native components.This approach helps in making the app platform independent in some way. Frameworks based on itCalatrava, PhoneGape.g. LinkedIn app, Facebook app
There are various factors that need to be thought before we start with mobile testing350 diff Android based devices +diff osversions+densityThere are numerous phones vendors with different OS’s and their custom implementation (specially Android)Also there are various versions of OS’s availableBrowsers -- Display Density IssuesThe various network connection types supported by the phone e.g. 3G, 4G, WiFi, which affects the user interaction depending on page load. We should strive for optimal load time on every N/WInstallation issues: Not obvious :Provisionong profile like size of app, if anti virus is running
There are many things that can happen while using the app like- When a call comes does the app pause and how it resumes after call completion?- When battery is low does the app pause and how it resumes after call completion?If multiple apps are running together and we go back to our app it should resume. Alert user if no network…
Apple HIG Compliance.. [Density,screen sizes]Customized and standardized UIGuide the userMake interactive objects obvious . Make tapple finger tip size. Target area 44*44 pts. Ex iphonecalcAvoid associating different actions with standard gestures user knowGive user’s feedback both the interacting and progressRecovery from unwanted statesMake modal tasks minimum and simpleError HandlingDefault values
With automation we always have questions:What to automate ?How much to automate ?Automation is also heavily dependent on the maturity of the tool.Effort v/s ValueNot all apps/projects really follow the standard practice of assigning ids/Accessibility labels to all objects on app making it time consuming to identify and do operations on it.
Performance testing: This is a very important aspect of Mobile apps and it has 2 components to it:Server sideClient side. How quick the UI loads, how easy the navigations are?Security Testing: Many apps specially android assign permissions. These can be used by hackers and get access to your phone.There are many more Non Functions things you can test if required like accessibility, efficiency,
The approach towards identifying the devices & Strategy to ensure coverage across the devicesSelected devices based on Screen size,density, OS versions, slide-in keyboardWherever device not available use Simulators and Emulators e.g we Emulator for Jellybeans. Simulator for IOS 5Simultors- Real life scenarios
People can use the phone in different ways ….Apps can behave erratically when multiple process run in background apps crashHardware incompatibilityMemory Limit
One practice that we followed always as to view the logs while testing the app it helped us uncover potential problems and identify exact problems.e.g. JS failing on iOS
Mention tool namesPeople can use the phone in different ways ….Apps can behave erratically when multiple process run in background apps crashHardware incmpatibility
Native Native: An app build purely using the components build using the underlying platform e.g. objective C, Java Native app examples: Calendar, Calculator
Mobile Web It’s a web site which run on Mobile phones. Many companies go for a mobile web instead of building an app as its platform independent. e.g. m.timesofindia.com, m.facebook.com
Hybrid Hybrid: An app build using combination of HTML 5 with the native components.This approach helps in making the app platform independent in some Way. Frameworks based on it Calatrava, PhoneGap e.g. LinkedIn app, Facebook app
Challenges in Testing Mobile apps Number of Devices & OS versions (Hardware configuration) Display density Different Browsers Network connections Installation issues
Key Learning’s Use simulators to get the breadth of devices tested. Testing on different Display density mobiles Keep an eye on smaller details as well Simulating real life scenarios Constant monitoring of device logs while testing Selective automation on Devices/simulators