All tips mentioned in this article can be very useful not only for testers who just started working in this field since they will be able to understand what area is the most suitable for them; these recommendations can also help more experienced specialists to systematize the skills acquired during application testing.
Obviously, this article will come in handy for developers, project managers, and for everyone who strives to improve the quality of their software and strengthen technical cooperation between a development department and a testing department.
What is the best way to simplify software testing?
The first thing to think about is using the main rules of heuristics and mnemonics. They help to keep numerous aspects that should be taken into account in your mind while executing feature/software testing.
Then, don’t forget about logs, screenshots, and videos since they are the best “proof” from a tester!
It’s very sad that server interaction logs are not so good as the client’s logs.
They are commonly added more to make developer’s debugging of server interaction easier than to simplify a QA tester’s everyday activity.
- Try to ask developers to display all existing requests to servers and responses received from it in a clear interface, to have the possibility to look at logs. This method will help you to analyze requests and responses from a server, find duplicates, search for efficient ways to perform a software update;
- Try to create client’s logs yourself since numerous logs are very harmful and just litter a console.
Don’t forget to use UIAutoMonkey (https://developer.android.com/studio/test/monkey) to find freezes while performing application testing.
You should combine manual testers and tools for fixing telemetry, speeding up the process of bug catching, for example, on the basis of Testfairy software.
By the way, Testfairy is now available for iOS, though it has limited functionality.
To not worry before the releases, it’s highly recommended to use a safety net in a form of beta versions of a released product.
One or two testers can’t cover all combinations of test cases with tests on various devices (especially if a product is aimed at working even on the oldest versions of mobile operating systems).
So you’ll have the possibility to receive help from beta users all over the world and this will greatly simplify a software testing team’s work.
It’s great when there is a debugging menu with parameters that can simplify the work of developers and testers (especially, when we talk about automated testers).
For example, when there is the possibility to simulate the server’s responses, open several users, post necessary flags, clear cache.
Testing on emulators and simulators is the task of mobile software testers. It greatly simplifies the process of testing mobile software.
For example, a geolocation change and some location updates can be tested on iOS in such a way. You can easily configure various parameters of necessary hardware on Android: from screen resolution, pixel density to RAM capacity.
Also, remember that you should fill a device’s RAM before launching a program. This helps to perform, first, stress testing and test software speed, and second, validate the process of saving and restoring the product’s work (for example, after rapid minimizing/maximizing of an application).
Also, remember that you should always run a program under a debugger:
- This will give you the possibility to work slowly — sometimes this leads to new bugs appearing;
- If your product crashes, it will instantly stop, so you can ask a developer (if possible) to perform debugging at this moment, not leaving the device you are using.
Interacting with network
Software-in-test will work smoothly in case if:
- Internet connection is not stable;
- Internet connection is absent;
- Connection speed is very low;
- There is an incorrect response from a server;
- A connection type has been unexpectedly changed (from 4G to Wi-Fi and vice versa).
Use chains of “network issues” test cases and apply all possible methods:
- Randomly update router’s firmware, to easily correct necessary speed of Internet connection;
- Use a proxy server;
- Use a Network Link Conditioner (http://nshipster.com/network-link-conditioner/) – it helps to shape Internet traffic and distribute a network on the basis of a hotspot either on iOS or on Mac;
- Use Internet connection speed presets inside an emulator.
Interacting with software data, external and internal services
If there is a third-party service on your project, you should not completely rely on it.
In other words, the best method is finding the highest number of unexpected cases in advance and analyze the steps to fix them. Also, you should take into account the processing of unexpected responses beforehand (system errors, caches, empty responses, and so on) from the side of third-party services and show these issues to users.
If you work with third-party libraries, they will definitely lead to unexpected cases appearing.
For example, well-known PayPal, Twitter, and Facebook contain numerous bugs (libraries frequently crash and so an application does the same).
If your software-in-test updates data using static and simple URLs, you can try using Google Drive or Dropbox during the time when a server’s logic is not ready to work or is not simply deployed. Uploading or updating the files on a device is a very dubious process.
Always test the information migration and cache migration while a product is being updated. It’s crucial to understand that users can easily miss versions and use either a new software version or an old one.
A good example is a bug with LinkedIn when some users were not able to open the application until the developers rolled out a new version of the product (it took more than a day to fix this issue).
Optimization of the testing processes
The next tips will be useful not only during mobile software testing but will help to avoid the pitfalls during collaboration with a team of developers.
Create Pre-QA culture
Before giving a ticket for review, ask a developer to look at a functionality together and check a feature under a debugger on several devices – and you’ll find numerous obvious bugs.
It also helps to rapidly teach every development team member the basic software testing skills: they will, at least, repeat the actions you’ll show them and, at most, will study testing peculiarities and will be able to check software themselves more thoroughly before giving it for checking by a QA department.
It’s because nobody wants to show their honest errors to everyone.
Try asking developers as many leading questions as possible
This will help you not only to show your importance as a tester but will also help you to study software code and the fields affected by a testing feature.
Even today there is such a point that mobile software testers are the workers who simply click on buttons, mobile software links and do everything to not damage the software they are testing.
Try to study an application lifecycle
It’s necessary for understanding what will happen with an application screen during testing.
The better a tester knows a mobile software functionality, the more thoroughly he/she will check it and authorize a product’s release.
But you shouldn’t also forget that you should keep the balance between testing resources while performing testing of Android and iOS software versions since critical bugs will appear in production once again and this will cause time and cost losses for a client.
The list of analyzed tips, tools, and methods can be helpful not only for junior QAs but also for senior mobile QA engineers.
This article may be also helpful for developers and project managers.