Android Application Testing: An Overview
Android testing is a topic that is not discussed enough, in our opinions. So today we thought we'd start a dialogue about this much-overlooked topic: part of mobile app development is mobile app quality assurance (QA).
How Important Is QA to a Mobile App Development Project?
Mobile development teams are quite small compared to traditional software teams, so dedicated testing is often limited or non-existent. Mobile apps are still perceived as "simpler" and "more straightforward" than traditional large software packages. When you envision the stereotypical mobile software developer, isn't he working in his garage, wearing his pajamas and making millions so he can play World of Warcraft in his spare time? Sure, these types exist, but the truth is most Android developers these days sit in cubicles like other engineers.
Unfortunately, these perceptions lead companies and individuals just jumping into mobile development to underestimate the myriad of resources they will need to truly launch a successful application. Smartphone computing power rivals that of desktop computers only a handful of years ago. Smartphone and device developers work in a resource-constrained environment, and need to use those powers and resources efficiently in order to develop responsive applications. Applications are highly networked and chock full of private user information that must be protected and secured. And, still, they run on little screens with more input methods than your average desktop application--different kinds of touch screens, hardware buttons, keyboards, trackballs, voice control, etc. They are generally being used not for your app, but rather for the features of the phone, such as, well, being a phone, SMS device, and so on. Your app will be interrupted frequently. Finally, just because those screens tend to be small and need to be simple doesn't mean that good user interfaces are easy to design. In fact, a really elegant, high-performance user interface is a real challenge and not something to be taken lightly.
Then there are the users. They are so diverse! They speak different languages, live in different places--places with good and bad network coverage. They're constantly moving around. They go through tunnels and fly on airplanes. They drop their phones into hot tubs and answer calls in the middle of playing games. They forget to charge their batteries. They don't read license agreements and blindly dismiss dialogs. They make mistakes and do things that the developer would never dream anyone sane would try to do with their application. They cannot spell! They don't grok your awesome, intuitive user interface! And worst of all, users are generally not patient, kind, or understanding when your app fails on them. No, it's your fault as the developer. Your app gets uninstalled, eviscerated on the market, and who suffers? You do.
We think the answer to the question "How important is QA, really?" can be summed up by your answer to other, more pointed questions:
- "Who will make sure your app is the best it can be, before it is put in users' hands?"
- "Who will make sure you haven't missed some obvious, glaring detail that required a second (or third, fourth or tenth) pair of eyes to see?"
- "How important is it to you to make your users happy, or at least not angry?"
- "How important is it to you to have a thriving user community loyal to your app and therefore to you?"
- "How important is it to you that your app reviews are positive?"
- "Who thinks like, and advocates for, the users, as opposed to the developers?" (Yes, it's annoying, but being challenged makes we developers create better apps-there's no denying it.)
Who makes these questions a priority? That's right, QA does.
How Do I Test a Mobile App?
Generally speaking, you test a mobile app just like you'd test any software application. You come up with a test plan based on the features of the application. You take into account the requirements of the platform. For Android, we're talking about stability, responsiveness, accessibility, performance, elegance, security, and so on. Once you have your test plan, you execute it. Bugs are filed, fixed, verified. The process, the lingo… sure, it varies by company as it always has, but the fundamentals are the same. It requires a budget, personnel, hardware, and will.