Greetings, Testers. Peter and I have been thinking, talking and writing these past few weeks about changes we've seen over the past few years in the application development and testing field. I suspect that the most visible change to computing and applications — the one that, if you asked the average person on the street they would be most likely to mention — is the rise of mobile computing. The numbers vary between analysts, but I've seen reports estimating that somewhere on the order of 500 million smartphones[i] will have been shipped by the end of next year and that smartphones and tablets are expected to be in use by over a billion people worldwide by the end of 2016. We've come a long way from having to be told that "there's an App for that," to the point that a mobile version of your app isn't just welcomed, it's expected.
Application development is an ever-changing arena — over the years we've seen the move from the client-server model to fat desktop applications to websites, lived through the browser wars and have evolved to standards-based browsers, web apps and responsive design. For a short while perhaps, the web was sufficient, but in many cases the result just isn't satisfying. Now we're seeing the next step as development teams adjust to the new paradigms of native mobile applications and hybrid apps.
Quality is extremely important in mobile apps, perhaps even more so than in other types of applications because of their distribution model. A small bug in a large application may not be as quickly noticed as in a small application, and most mobile apps are fairly small and single-purpose. Combine this with the easy review process of most app stores, and your sales could really feel the impact of a bug. As was pointed out at the SQuAD 2013 Conference in Denver this week, the initial reviews of a mobile app can make or break the product's long-term success; if your users find problems they're likely to leave a bad review. Later prospective purchasers will be discouraged from purchasing your app, if they can even find it; reviews/stars determine where your app comes up in many app store search results, so bad reviews can result in your app not showing up at all.
In the what-goes-around-comes-around refrain, there are challenges here the likes of which we've seen before. For example, similar to the browser war days (or the PC Compatible days of yore), we're challenged with multiple device types and operating systems, from different vendors, often with users spread across different releases. Device diversity is great for consumers but for developers and testers the situation can be frustrating. Mobile Browsers and OSs are relatively less mature and are being updated frequently, not all devices can run the newest version, and not all users will upgrade right away. Is it reasonable to believe that your team can test your app on every available device type and OS version — on actual devices, as emulators and simulators will always and have limitations — do you have the budget or time for that? Some companies have been able to limit their user base to a specific device, but with the rapid adoption of smartphones and tablets that's no longer a viable strategy.
We're also seeing the need to return to some expectations we've not seen in a few years. Good network programming practices, often learned the hard way during the days of the dial-up Internet, included checking for network resources' accessibility at some level before each operation. In recent years, that may have been ignored as always-on connections become more prevalent. As users and their applications switch over to mobile devices, and those devices are carried through train tunnels and along highways, we need to develop — and test — with intermittent connections in mind once again.
Today's devices bring a new set of challenges, both technical and human. Adding touch capabilities to applications means more than just a new alternative pointing device, it's a whole new paradigm. Multi-touch, swipes, and multi-finger gestures are gaining support by frameworks and need to be added to the testing repertoire. Not considered as often are more human factors — how easily-used is the application by a person who's fingers are larger than the norm, or has physical handicaps, or by someone with ketchup on their hands? Automation of appropriate confirmatory or regression tests will free your team to focus exploratory testing on the more difficult human-factors realm.
There is no single answer to all of these challenges. Testing from the cloud seems like a natural way to approach mobile device testing. Crowdsourced testing offers access to a greater range of devices and OSs, but there is a risk that the testing results may bias initial public reviews. It seems difficult to run tests directly on the device, but emulators may not give you the level of information you need to find bugs and make fixes. And you can no longer manage your testing matrix in a spreadsheet. Mobile testing organizations need to carefully analyze their unique testing and platform needs to determine the best strategy and tool support to get the information they need to make product decisions.
Is your shop just beginning to explore mobile application development and testing, or are you already deep in the trenches? In either case, you should see what Gartner has to say on the subject. Also, find out how to make key disruptors work for you by reading a whitepaper on "Four trends reshaping the software quality testing market".
[i] Global mobile statistics 2013 Part A
is an Evangelist for Telerik's Test Studio.
He has worked in software support and testing for the better part of two decades, and enjoys exploring ways to make software easier to use.
He is a fan of movies and music, and can often be found on Twitter as @StevenJV.