More information about mobile testing
This is the third part in a three-part series on mobile testing.
In the first part, you’ll find tips for testing mobile apps.
In the second part, Heusser covers testing iOS apps.
For newer versions of Android, you'll need to download developer tools.
The way you hook into developer tools with Android is tied directly to developer tools on the traditional Web browser, which I mentioned earlier. Basically you plug the Android device into your computer, have Chrome recognize the device -- thanks to some software you'll install -- and then use Chrome's debugger to debug your Android device.
Here's how to do it:
First, read the developers guide for debugging Chrome mobile. Note that if you are running on a Windows machine, you'll need USB drivers for your Android device. Most manufacturers have an easy shortcut to find the page for the drivers, but here's a link for Samsung Galaxy Nexus, and another for the Galaxy S3. Setting up the drivers is beyond the scope of this document and can be a bit tricky on devices outside the mainstream.
After the drivers are installed, load up the Android Debug Bridge (ADB) Chrome extension available in the Chrome Web store. Note that on Windows 8, the extension will need to be manually installed and updated; details on that can be found in the Chrome Web store. It is not as scary as it sounds. Simply download the extension and drag it into the Chrome Extension Manager tab. (Figure 1)
On your mobile device, launch the Chrome Browser App, open Settings > Advanced > Developer tools; then make sure "Enable USB Web debugging" is checked. (Figure 2)
Then, in the desktop browser, use the extension button to enable ADB and "View Inspection Targets"; a screen like the one in Figure 3 will show.
After everything is connected (including your physical connection), find the target device and click "Inspect". From here, debugging is much like developer tools on a desktop machine.
Figure 4 shows a list of the cookies on the phone.
Console, network and the rest of the usual suspects are there too. Poke around and see what is available; this really is a valuable tool for finding Web application problems. Note that while running the remote debugging tools, there were some issues with capturing screenshots. The screenshots would show up as zero byte files. Unplugging and re-plugging the USB allowed for normal retrieval of the screenshots.
For the "Browser" Andriod app, start an "incognito" tab from the app menu (Figure 5).
Chrome for Android is nearly the same. Note that Chrome has a button to switch between normal and incognito tabs (Figure 6).
Modern versions of Android (4.0+) have a screen capture feature – "power" and "volume down" at the same time. This has been standardizing in recent Android releases (4.0+). Older versions are very manufacturer- and model-specific and may require a third-party app. The screen capture goes to the device's images, which you can recover to your laptop with a USB cable.
Note that Windows XP and Windows 7 like to have the device presented on USB in different modes. When the device is connected, use the quick settings and select "Connected as media device" or "Connected as USB storage" to change the mode (Figure 7).
The easiest way to do this on an Android device is probably to set up your own wireless network, perhaps configuring your laptop as a wireless access point with a tool like Connectify. Once the laptop is an access point, you can use something like ipfw to throttle bandwidth on the laptop. You can read more about ipfw in this SSQ article.
For GPS-aware apps, fake your location
If your application uses the phone's GPS, you could take it for a drive, but you can also use an application to override the native GPS, replacing your actual location with values you select. Fake GPS for Android is one application that can do this. Ajay Balamurugadas, a software tester based in Bangaluru, India, uses Fake GPS extensively on location-aware applications to see if the application can recognize the data as "fake," to see how the map renders directions in different locations, and to do quick feature checks.