You and your company have invested months of hard work into a new version of your mobile app. Your team has put numerous hours in testing the app to make sure the new version is performing at its best. Marketing, backed up by a nice sum of cash, has started executing the perfect plan on promoting the new release of the app.
Within minutes of the release you start getting comments from your existing users that your app is crashing, followed by numerous low ratings in the app store. It's your worst nightmare. Not only put your reputation on the line, but you have wasted valuable marketing investment, lost existing customers and potential users, and damaged your company's brand image – issues that can take years to overcome.
With mobile apps continuing to thrive and enterprise apps being on the rise, flawless performance is critical. If your app crashes, users will quickly abandon it and find another way to go about their business. According to Crittercism your goal should be to build an app that is stable more than 99% of the time, especially if you sell a service or a product through your app:
To achieve this goal, there is only one route to go: you need to catch and fix as many issues as possible before the app (or its new version) is released. There are numerous tactics you can employ to ensure that your app is in perfect order when it reaches your demanding (and very often vocal) users, so let's explore them.
Manual testing alone is far from enough these days. Pre-production automated testing matters more than ever and a new breed of automated mobile testing tools are emerging to help developers test their apps - be them native, hybrid or web-based. As with QA-targeted testing tools, these allow you to discover and address functional issues with your app before they impact your users, however you can write tests in your programming language of choice instead of using screen recorders. Some mobile testing solutions offer cross-platform test execution which will test your iOS, Android and Windows Phone 8 apps at the same time (such as Telerik Mobile Testing). Some even offer collaboration features, which allow you to assign failed tests to developers in your team for fixing.
If you are working on a cross-platform mobile application and you are targeting a large user base, you have to test your app on a countless mix of devices, screen sizes and OSs (especially for Android) to make sure that your app works everywhere. Surprisingly, this is easier than you think.
You can start by using simulators and emulators until you are confident with your app's look and feel. After that, since emulators are not perfect, test the app on few physical devices which you own by running your automated tests. This will give you further insight on how your app behaves and what you need to improve.
Once you are satisfied with the results from these initial tests, test your app in a device lab. These are cloud-based hardware labs for rent which provide you with remote access to hundreds of real smartphones, feature phones and tablets on any operating system. Most vendors allow you to run manual and automated tests on these devices and review the results online. It is an easy and cost-efficient way to test your native, hybrid or web-based mobile applications without the need for you to buy and manage the devices.
Your users are your best testers. The testers will go through all possible use cases for you, even though the ones you didn't think existed. They will even help you verify/validate that your app addresses their needs.
If you have a large-enough user base to push a beta version to, do it (if you don't have enough beta testers already, consider "crowdsourcing" beta testers). There are several services which make beta testing easier by allowing you to distribute your mobile apps outside the public app stores (such as Telerik AppManager). These services will allow you to create groups of testers and selectively deploy your mobile to these groups. For example you can separate iOS users from Android and Windows Phone users, or C-level executives from business folks in order to test different app usage patterns.
Coupling these beta-testing services with in-app feedback forms and crash report forms will help you get contextual and actionable feedback from your users about their experience. Your beta users can supply feedback from within your mobile app by simply opening a form, describing their issue and commenting on how it can be improved. Some feedback forms come with services which will extract details about the device and its software and even take screenshots of the app which the user can use to pinpoint the problem to you (such as Telerik AppFeedback).
Auto-enabled crash reports with integrated feedback forms will give you detailed information about a crash, what user actions led to the crash plus any additional info the user adds to the report. These reports are invaluable during beta testing and will help you develop a more polished and better performing app.
We've seen that this is a frequently omitted step, yet this one alone can give you much information on how your users are using your app. If you instrument your app early on, during the beta testing you will collect valuable insights about the devices and OSs your app is used under (you'll know what devices and OS configurations you'll need to rent from the device lab), the features used most (and the ones used least), how long user actions take, and where to focus your final development efforts. Some Analytics services (such as Telerik Analytics) also offer run-time exception tracking - a feature which many developers find invaluable. Basically the service monitors your app at run-time, captures the stack trace in an event of a crash and sends you an error report. This makes it easier to address issues before your users report them and push a fixed version to your beta users for further testing.
If you don't have time to instrument the app for the best test (which is often the case), it is becoming mandatory to use an analytics service for the official release. Your goal is to have 99+% uptime and a good analytics service will give you insights into what's wrong so that you can address it and reach that goal.
The best way to know whether your app's uptime is more than 99% is to use a performance monitoring service. It will track how long screens are taking to load, trace what is slowing down your app (is it a background service or the network carrier?), as well as how your web services and API requests are performing. With this information at your disposal, you will know whether you have to further optimize the app's performance.
Don't learn about problems from poor reviews, low ratings and bug reports. The trick to a successful mobile app is to test it as much as possible before it is released, and to constantly monitor its performance. There are numerous tools which will allow you to do this and usually their implementation is not that time-consuming. Just be pro-active in understanding how your app is used and improve it. Your users will love you for that.
Vassil Petev is a Product Manager at Telerik. Loves gadgets, sailing, skiing and DJing.