The world of mobile applications is overcrowded. The number of applications in the App Store has increased to 2 billion, and the Google Play Store can boast 3 billion by 2017! Statista estimates that the number of downloads is only going to rise, and by the year 2021 will reach more than 350 billion in total. Here’s the bad news: the competition on the mobile app market is intense. The good news is that most of these applications are low quality and people tend to quit using them as soon as they face problems with the app.
Poor ratings in the app stores and uninstallments are the consequences. Quality is a must for a successful application, and it cannot be achieved without continuous and thorough testing.
There are three main goals of mobile app testing:
- Ensure easy-to-support code according to standards
- Ensure that functionality works as specified
- Spot bugs quickly and fix them immediately
This results in your application working smoother and your users being more satisfied. In this article, we’ll tell you all about different mobile testing techniques for mobile applications from the arsenal of a professional tester.
How Is Mobile Testing Different Than Desktop one?
Mobile devices are full of special features that make testing mobile apps more challenging than testing desktop web applications. Mobile apps are more difficult to test because:
- There are many kinds and models of mobile devices, each with different display sizes and hardware; your application has to work perfectly on all of them, or at least on those your target audience uses.
- A lot of mobile device manufacturers like Samsung, HTC, and Lenovo have their own slightly different versions of the same OS.
- Apps have to be specially built for different operating systems: Android, iOS, Windows.
- Versions of operating systems also differ and change rather often, forcing testers to react to those changes.
The differences between mobile and desktop testing are pretty big, and you should bear that in mind.
- On a desktop or a laptop, an app is tested on fewer machines. With mobile devices, you need many devices to test your product.
- The screens of mobile devices are smaller than those of desktops and laptops
- Mobile devices usually have less memory
- Network connections are different for computers and smartphones; smartphones use 4G or Wi-Fi, while computers use broadband connections.
- Not every tool for a desktop app will work on a mobile app
Testing mobile applications require lots of effort, and beginners often don’t know where to start. But it’s not only beginners who face issues when it comes to testing. Testing techniques for iOS and Android apps testing techniques are similar but equally challenging.
We’ll build up to explaining these techniques in more detail, and will begin by describing types of mobile application tests.
Types of Mobile Application Tests
In general, there are four types of tests for mobile applications:
1. Unit Tests
Unit tests are the first step developers make to a properly working application. As the name suggests, they’re used for small units of code such as functions or classes. Each time a developer finishes working on a small piece of code, he or she has to test it. Unit tests are written by developers themselves, and this kind of testing is surely worth the effort. It’s easier for developers to change the code they’ve written because they can see exactly where something went wrong.
All development environments have unit test frameworks – programs that facilitate the testing process. Testing frameworks allow developers to make tests for every single function. All bugs found at this stage are usually fixed in the code without describing them in the bug tracking system.
Of course, it’s impossible to test everything, but here’s a piece of advice: test as much as possible. Each unit test should be dedicated to a small part of a feature. All unit tests are connected, so you get a kind of chain. If one part of this chain fails, the whole test will fail.
Mobile app testing best practices include writing automated tests before you start the development process. This is called test-driven development or a test-first approach. If you use this technique, you first generate small pieces of code. Then you launch the tests that you wrote before coding. Development lasts until all tests are successfully passed.
At first this may seem too time consuming. Lack of time is mentioned as one of the most serious problems in testing, but performing unit tests can actually save a lot of time and improve development speed. In addition, it can serve as a kind of documentation for your library. Note that unit testing can take up to 30% of the estimated development time.
2. Auto Tests
Auto tests are more complex than unit tests, and are written by QA engineers using Java or Ruby. They are mainly used to test unexpected behavior of a user and check how the application copes. For example, a user may give incorrect data like wrong address or phone number or press a button three times.
Auto tests are created based on test cases, which include unexpected behaviors and some other circumstances such as
- low battery
- memory shortage
- device lag
- interruptions (e.g. incoming calls)
These things can be checked manually, but usually auto tests are used because many actions have to be repeatedly checked. Auto testing is the perfect instrument, as the QA engineer only has to write a test once and can then use it throughout the development process. While unit tests check only positive results, auto tests are interested in any outcome – positive, negative, or even odd.
The drawback of auto testing is that such tests are rather expensive and complex. If anything changes in the application – if new features are added or there are changes to an app’s logic – the QA will have to rewrite the auto test. That’s why such tests are usually used only for core features. For example, for an ecommerce application, features like search, ordering, and buying probably won’t change, so you can write auto tests for them. For minor changes, manual testing can be used.
Having a specialist in auto testing is a great plus for any company because auto testing is a powerful instrument for testing your mobile applications.
3. System Tests
System tests check a higher level of functionality. They’re much broader than unit tests and they test the whole application, comparing the real result to the expected result. It’s very important that the system stays the same during testing so the input is the only thing that can change the results of the test.
Of course, an application’s design may change many times before its release, that’s why each change to a system has to include a system test as well. Creating a test for your application and then trying to change your code so it passes the test is a big mistake.
System tests are basically manual tests, and are performed manually by QA engineers. Manual testing is the most important part of the testing process. During the design and development phases, QA professionals gather all the ideas developers and tech specialists had while coding and prepares a testing plan.
QA professionals must be able to check the app as thoroughly as possible with the program and test the application manually. During system testing, an engineer checks the whole application manually using different devices or emulators to see how exactly the app works.
4. Acceptance Tests
Acceptance tests are done at the very last stage of development. QA engineer is responsible for them, but the customer also takes part in the testing process. This testing is done on a ready-to-release product.
Acceptance tests also use some test cases and scenarios based on the app’s requirements. If it does, the customer accepts the application and releases it.
If the customer is satisfied with the quality, the product is ready to be installed on users’ devices. If not, acceptance testing will continue until the customer is ready to accept it.
Mobile App Testing Methods
Types of testing for mobile applications, unlike types of tests, are differentiated not only by levels of testing but by details of app’s working process. There are approximately 14 types of testing for mobile applications. No application testing methodology uses all of them, but here are the most common:
- Usability testing makes sure an application is convenient to use. A friendly user experience plays a crucial role in an app’s success. It’s very important to make your UX as good as possible across all devices. The size, placement, and functions of each interface detail have to be designed according to the peculiarities of each platform or device.
- Compatibility functional testing resembles usability testing, but is more focused on the proper working of the app on different mobile devices with varying screen sizes and OS versions. During compatibility testing, it’s important to make sure the app meets all the client’s requirements.
- Interface testing involves checking the work of menu options, history, settings, navigation flow and bookmarks.
- Performance testing tests the app under certain conditions: low battery, poor network signal, no free memory, and other factors that can disturb the app’s functionality. It’s important to check whether they do or not and avoid crashes. Performance problems can be caused by two sides: the server and the client. Performance testing checks both.
- Memory leakage testing is also used to check an app’s performance. In this case, the focus is memory use and the ability to manage it. When an app fails to manage memory, the result is poor and slow performance. All devices have certain memory limits, so the app has to be tested according to them.
- Installation testing checks whether the app installs and uninstalls properly and makes sure it doesn’t cause any difficulties for the user.
- Security testing is used to make sure the app protects data. It checks whether the app is vulnerable to hacking and validates security standards for authentication, authorization, session management, and so on.
- Interrupt testing deals with cases when the app’s working process is interrupted by incoming calls, notifications, battery removal or network problems.
- Load testing is used to find out if a solution is able to handle many users at the same time.
- Certification testing checks if the app is designed according to guidelines. Certification testing is necessary to put an app on the app stores.
For all of these kinds of testing, QA engineers use different testing tools and cloud services. The tools they use define their mobile testing methodology. Many developers experience problems with choosing a testing methodology that suits their project, and you can read about different testing tools in our article dedicated to the twenty best testing tools.
You can see how important testing is for the success of an application.
We at Mobindustry spend lots of our development time just on testing our products and following mobile testing best practices.
If you have any questions on testing techniques or you don’t know which strategy to choose, don’t hesitate to contact us for a consultation.