When talking about mobile testing tools, many people will think instantly about mobile automation frameworks such as Appium, Calabash, Robotium, Espresso or XCUITest just to name a view of the available tools. However, not everything can and should be automated for mobile apps. There are many use cases which are not worth investing the time in test automation. These might be deep integration into the mobile operating system such as push notifications or the usage of build in sensors like acceleration sensor. Cases like this must be tested in a real-world environment on the real device tested with real fingers.
Nevertheless, there are situations where tools can and will help the mobile tester to perform the normal testing work much faster to highlight possible quality problems. Therefore, this article will cover helpful tools that will extend the toolbox of every mobile tester.
IDE Monitoring Tools
Every native mobile app is developed in a specific programming language. For iOS it’s Swift or Objective-S. For Android it’s Kotlin or Java. Both platforms offer an Integrated Development Environment (in short IDE), where the app code gets compiled to a native app. For iOS the main IDE is XCode and for Android it’s Android Studio.
Depending on the platform a mobile tester must have installed the IDE that is used inside the team to take a look at the code and use the built-in features from each IDE. For example, there are code profiler inside the IDEs to check for performance issue. While using the app on a real device, a mobile tester must connect the test device via cable to the development system and should perform the testing activities. While performing the inputs on the screen, the mobile tester must check the IDE tools for inconsistencies like peaks in CPU, GPU or memory usage. For more information about the tool following the links – Android & iOS.
Android Command Line Interface
Mobile testers working mainly with Android apps, must know the following Android Debug Bridge (adb) commands. With the help of adb, testers are able to communicate with an Android emulator or connected device.
- adb devices: Will list all connected devices or running emulators on the console
- adb logcat -d > [path_to_file]: Will save all logs from the device or emulator to a given file
- adb bugreport > [path_to_file]: Will save all dumpstate, dumpsys logs to a given file
- adb shell screencrap -p /sdcard/screenshot.png: Will create a screenshot of the current screen on the device folder.
- adb shell screenrecord /sdcard/screencast.mp4: Will start a video recording of current screen. With crtl + c the recording can be stopped
- adb install -r [com.android.packagename]: Will install the given apk based on package name and will perform an update of the current app (option -r). Important command to simulate the update process of the app to see if the app update will work.
- adb install [com.android.packagename]: Will install an Android app based on the package name
- adb uninstall [com.android.packagename]: Will remove an Android app based on the package name
- adb shell monkey -p [com.android.packagename ] -v 10000: This command will execute 10000 random touch inputs on the given Android package name. This might be helpful to generate some chaos in the app to see how it reacts.
These are just some very useful for every Android mobile tester, this link more of the available adb commands.
Mirror the Test Device Screen
Next tools every mobile tester must have in his or her toolbox are tools to record or mirror the device screen. For device screen recording QuickTime can be used to record the connected iOS device screen. For Android the adb shell screenrecord command can be used. This is extremely helpful for bug reports or quick demos. If the mobile device screen should be mirrored to a big screen Vysor might the solution for Android devices. Vysor.io mirrors the device screen either with a desktop app or a browser extension. For iOS apps QuickTime or Airplay can be used to mirror the screen.
Being the Man in The Middle
Many mobile apps communicate with a backend system to retrieve data. The retrieved data will be transported over https with the help of an API. While requesting and retrieving the data from the backend many things can go wrong already on an API level and mobile testers must be aware of everything that will be send from and to the app. In order to take a look into the communication between the app and the backend a so-called proxy tool is needed to act like the man in the middle and to intercept the traffic. Mobile testers can check that the requests and response are e.g. encrypted with HTTPS, that the API delivers the right responses. Furthermore, the tools can throttle the communication speed between the app and backend to simulate slower connections.
Powerful Tools to Test Responsive Web Pages
Not every mobile app is a native or hybrid app. There are also responsive web applications optimized for mobile devices. There are 2 powerful web testing tools every mobile tester must be aware of. The first one is bugmagnet, a Google Chrome browser extension that provide a plethora of possible text inputs that might help identify potential bugs in the application interface. The next tool which is important to know and to use, are the Google Chrome Developer Tools. The tool is able to simulate different mobile devices, screen resolutions as well as network speeds. Furthermore, the visible HTML elements can be modified. However, there is one drawback while using bugmagnet an Google Chrome Developer tools, they only work on desktop systems. It’s not possible to use the power of the tools on real devices while testing the responsive web application.
As you can see, there are many more powerful tools on the market that supports the mobile testing activities without going straight into test automation. Before establishing a tool, every mobile tester should gather the requirements for a potential tool and how it fits into the current software development environment and lifecycle.
Daniel Knott for TestBench CloudServices