Down the Rabbit Hole of Mobile Testing, part 1: Prelude

Imagine you are a tester. Suppose that there is something to be tested on a mobile device. Now ask yourself: how?
In this post, I touch on a plethora of mobile testing related topics. Let the fun begin!
Prologue
By way of disclaimer I’d like to note that this is just the beginning of our trip to the land of mobile apps. In this post, I touch on a plethora of mobile testing related topics. You’ll learn something, but not everything. It’s an introduction to mobile testing - nothing particularly technical, simply a general overview of the topic. So without further ado, let us begin...
Chapter I: Your mind is your best friend
Imagine you are a tester (easy if you’re actually a tester, if not - this blog post will catch you up). Suppose that there is something to be tested on a mobile device. Now ask yourself: how? Let the fun begin!
First you have to decide which platforms you are going to check. Android? iOS? Windows Phone? More exotic ones, like BlackBerry OS or Ubuntu Touch? A little slice of Tizen cake? Maybe a cup of Symbian? There are plenty of mobile platforms to choose from, so let’s focus on the two major ones - Android and iOS. These two combined cover 96,3% of the market. Seems large enough to make testing your app on these systems worthwhile...
Chapter II: The garden of the tiny green robot.
So let’s start with Android - it has 78% of the market share (including some variations like TouchWiz, Hydrogen or Miui). I won’t focus on automation testing for mobile platforms here - it warrants a post or two of its own. „Why didn’t he tell us this earlier!? I wanted to learn mobile automation!”. Not today, ha-ha! (But don’t worry - we’ll get to it next time.)
Theoretically, you can start testing right now. In practice - you have to wait until the Android Studio download finishes (including lot of additional packages. That’s a ton of internets). So, if you don’t have it - go download it. Are you downloading? Good.
Chapter III: Going the easy way
So let’s start testing on real devices (don’t cancel the download, we’ll need Android Studio soon!). It would be best to have at least two devices - a phone and a tablet. Also, some basic knowledge on ADB usage. Also… Relax - that’s all you need. (At least for now…)
Once you install the app (or launch it in a browser), you should start gathering logs. You can use DDMS to do it, but if your Android Studio download hasn’t finished yet - simply use any log gathering app available in the Play Store.

Hello, we are logs and you're going to see us a lot.
Logs are an important part of testing - developers can learn a lot from them, so you gotta collect ‘em all (guitar solo fades in). Another crucial thing is a crash dump - you can find them in the Tombstones folder located in the root of your device’s memory. Yeah, the name might seem creepy, but it’s one of your best friends. Which kinda sounds even creepier.
And now what? Something very familiar - just launch your app and start clicking. Use your imagination. Of course, you can take as many screenshots and videos as you need - it’s all available via button shortcuts or ADB commands (some basics are essential. I’ll write more about that in one of my upcoming posts.) When you find a bug, collect logs, screenshots, videos and as many info and repro steps as you can. Double check it on other devices and send it to developers. They will fix it (or not).

Chapter IV: Overcoming the obstacles
Has Android Studio finished downloading? Yes? Awesome.
Now launch it and run Android emulator - you can choose between a variety of Android versions and Nexus Devices or even create some custom ones. The emulated Android device should launch aaaaaaand… That’s it! Now you have your own virtual phone or tablet - you can test your app as though it were on the actual physical devices. Again, ADB is your best friend. Of course, it’s better to test on an actual device than an emulated one, but I realize that not all of you have a variety of equipment on board. There’s a lot more fun with automated tests, but, again, that’s a topic for another post.
Chapter V: Where fruit falls from trees
Now you know the very general basics of testing on Android devices, so let’s head to iOS. It would be best to have Mac for iOS testing, but if you use Windows, there’s a method, too - I’ll tell about it soon.
First of all, you have to distribute your app to test devices. You have plenty of options.You can use HockeyApp (it’s also available for Android and Windows Phone!) or iTunes Connect or you can simply beg your devs to include your device’s UDID in provisioning profiles ;).
Now, when your app is on the device, turn on Xcode. It lets you collect logs, crash dumps and even detailed info about memory usage, etc. - it’s worth mentioning that iOS generates more crash dumps than Android, so it can make your devs lives a lot easier (but only if you choose the right file). There are plenty of other crash dumps, so stay sharp. You can also capture screenshots using hardware buttons and videos using QuickTime player.
It’s good to know that Xcode has a built-in iOS emulator. It’s the best one you can use, perfectly imitating any available iOS device. Sadly, there are no iOS emulators for Windows or Linux machines.
Chapter VI: Looking through the window
If you don’t have a Mac, things get complicated. You can gather logs using console applications from AppStore (or iTools running on your PC) and collect crash dumps by syncing your device in iTunes. But what about the video? The only method I know is either jailbreaking your device (beware, it voids your warranty!) and using a screen recorder or mirroring your screen to a PC. You must choose wisely.
When you have familiarized yourself with the tools available, just head to your app and begin your daily routine, as discussed in the Android part.
Epilogue
These is a very general discussion - you can sift through tons of Internet sites with tutorials for these tools, or… Wait for the next blog post, which will detail testing processes for both platforms. It’s coming soon, as well as one about mobile automation, so stay tuned!
If you're curious what QA specialist's everyday life looks like, here's a post explaining what makes a software tester happy. If it sounds like you could be happy for the same reasons, check out our job offers - we're recruiting constantly, also for the QA team!