The more we come to depend on mobile apps for taking care of business, the greater the need for reliability. Alas, many a user has seen many an app crash. Worst still, Murphy’s Law usually sees to it that the timing is never good.
One solution is to test performance beforehand. SOASTA is one of a number of services available for developers to test their apps under real-world and simulated conditions.
"Our customers are trying to serve consumers who expect that the app is just going to work. And when it doesn't, there are other options just a couple clicks away," says Tom Lounibos SOASTA's President and CEO, underlining the importance of providing the best mobile experience possible.
"Delivering performance through mobile applications is more challenging than anything else [for IT] in the last 30 years, because of all the different pieces."
It's all those different pieces that can cause problems for consumers—and problems for consumers translate into problems for developers in terms of lost sales and missed opportunities.
Of course, when apps crash, it's not always the developer who is at fault, as the recent DRM problems that plagued iTunes App Store purchases earlier this month showed.
Lounibos notes, "There are billions of potential points of failure in this environment, which leads to the anxiety of developers and all of us in this mobile rat race."
Using their automated testing platform CloudTest Mobile, SOASTA has identified what they say are the ten most common reasons apps fail (in no particular order).
Demand exceeding supply
A classic case of the dangers of success, the fact that millions of consumers can simultaneously discover your app at the same time.
Incorrect memory & CPU usage
Made more challenging by the vast array of different devices that can run apps. As Dave Murphy, SOASTA's Senior VP of Delivery puts it, "You can't just test on a 64-gig third generation iPad and expect that to work [like] an 8 gig first generation iPhone."
Whether it's inadequate bandwidth, or overly large data payloads, the pipe matters. Especially since mobile users expect quick response times.
Switching from cellular networks to WiFi and back can cause lost connections, which affects app stability. Murphy notes, "It's not necessarily a problem 'solved' by the OS, so it is something that the developers need to account for."
Fatal bugs in production
This can often come into play when a new feature is introduced that may have an impact on another part of the application.
Poor front-end optimization
Even for local apps that don't talk to a back-end server, using resources effectively is key. Image compression and other strategies can help, but devs need to be mindful of the relationship between what's happening on-screen and what the devices are capable of.
How all of the back-end systems come together to deliver content to the user can have a tremendous effect on app usability.
Bad queries & excessive sessions can quickly drag performance down. Murphy cautions, "If you haven't properly optimized and indexed your database, the database is going to perform poorly. But from the user's perspective, all they know is that the application isn't responding."
Browser problems aren't just a desktop phenomenon. According to SOASTA, Apple's done a good job of building a "walled garden" with the mobile version of Safari, but app interactions with Chrome and other third-party browsers often don't get tested, particularly on iOS.
It's impossible to test on every Android device, and even iOS has a fair amount of fragmentation. As Murphy puts it "something that runs on an iPod touch all the way [up] to an iPad—you'll start to see some differences [in performance]."