What is a web app (mobile-optimized websites) and what are its pros and cons??
- One code base and popular technology - it’s easy and fast to develop and maintain them, costs are relatively the lowest (which could be great value for the investors).
- Access from the browser on any kind of platform - Android, iOs, and others.
- Users don't have to download the apps from the app store (no store restrictions), cause they are accessible directly through the browser, it doesn’t consume storage or memory of the device.
- Their performance factor is lower than in native apps, they have no access to embedded device sensors
- The app icon is not installed on the device screen and sometimes they are hard to find since are not on the app stores and require entering URL every time to reach them
- Not follow particular UI rules, so it’s harder to achieve a user-friendly design in web app development.
What is a native app and what are its pros and cons?
It’s the best solution from the user perspective, so it’s not a surprise it’s the most popular type of mobile application currently. Unlike web apps, native applications are dedicated to specific mobile platforms and are written in such languages as Swift and Objective-C (for iOS) or Kotlin and Java (for Android). The mobile development process, in that case, could be definitely more expensive and risky, but eventually, we must remember that tailored products always offer extra benefits. Let’s look at the list of pros and cons of native solutions:
- High performance could be achieved by optimizing the apps for a specific platform/device brand.
- It’s easy to find the native app since they are available in the app stores, which also offer additional benefits like apps ratings.
- They use all the advantages of the device's features, so they are more interactive and intuitive for users.
- In most cases, some native apps features could work in offline mode.
- The product will have at least two code bases - separately for iOS and Android, so the software development process takes more time and quite a lot of money, also for the maintenance phase.
- We should be aware of the app stores' specific requirements and time it takes to accept adding the application to the store.
- Native apps consume device memory, require the installation and the updates, which always take some time and is usually postponed by the user till the very last moment.
What is a hybrid app and what are its pros and cons?
- A single code base for all mobile platforms and devices reduces the time and cost of the software development and maintenance phase as well.
- Most commonly used hybrid app development framework - React Native - is rapidly improved to be more flexible.
- Hybrid apps are available from app stores.
- Speed and performance are better than in the web apps.
- Developers can customize apps to follow some of the UI rules previously restricted only to native.
- Apps have access to the phone camera and several other embedded features.
There are still some “buts”:
- It often looks different on different devices.
- Not take all advantages of mobile sensors.
- Performance is still not that great compared with native apps.
Although the mobile tester does not take into consideration which technology to choose - such decisions are made mainly by investors or application developers, knowledge about them should set directions for further work.
The mobile testing approach - Web vs Native vs Hybrid
Why we are testing the web application on devices?
If the website on mobile is (often) the same like on desktop, then testing the web application on the desktop is not enough? No, it's not. We still should test the web application on real devices for a few reasons:
- Mobile devices’ screens are significantly smaller compared to desktop screens, so as a Software Quality Assurance specialists we should remember to make UI test and verify that all user interface elements are fully visible and well aligned. It is also important to make UI testing for different screen sizes and resolutions.
- Mobile devices have two types of connection with the Internet: WiFi and cellular network connection. The second one is usually limited and requires an additional fee after using the limit so tester should pay attention if the amount of data isn't excessive. Considering the fact that web applications rely on transferring data from a server, an excessive amount of data can make our application unusable or can be a case of a crash it. The software tester should be aware if there are no problems when the user switching between WiFi and cellular network or vice versa and if the web application use of ads if they don't cause bottlenecks.
- As mobile devices have less memory and storage than desktops the app performance tests are crucial here and so a Software Quality Assurance specialist should check e.g. if the app doesn't cause significant differences in performance when using a cellular connection.
Native and hybrid applications - what should be tested?
Native and hybrid apps are similar in terms of the functionality (the main difference is used technologies) so the mobile testing approach will be the same for both types of applications:
- Functional testing - check if all of the app's features work correctly.
- Install testing - an application is downloaded on a user mobile device so a tester should check if an application will install properly.
- Uninstall testing - a tester should test if the uninstallation process runs correctly.
- Screen orientation testing - in the case when an application has one view, oriented vertically or horizontally, a Software Quality Assurance specialist has to test if the other one is blocked and in the case when an application has two types of views, he should verify if it works properly in both of them.
- Access to built-in device elements and folders - application should ask for permission if a user didn't allow it to access to resources or folder before or permit wasn't revoked.
- Loading data from resources testing - a software tester should check if an application load data correctly. For example, if the application uses GPS, QA specialist tests if the application shows the correct location.
- Testing the application behavior when any other application will interrupt it works - a tester checks if phone calls, SMS, messages or push notifications, etc. don't crash an app and all functions still work.
- Memory usage testing - a software tester verify if an application doesn't take too much memory when it is downloaded and if it doesn't consume too much RAM when is in use.
- Battery consumption testing - especially in web application it’s important to test if it doesn't consume battery too fast.
- Compatibility testing - QA is also obligated to test application on different devices and systems if it is designed for iOS and Android or another operating system. It's also necessary to test it on mobiles with different sizes, to be sure that there is no problem with the displaying app on the screens with different resolution.
- Compatibility (Updates) testing - for most of the applications there will come a moment to make some update and fix some bugs or add some features, so tester should ensure that an app works well on the new and previous version of that software and doesn't remove any data saved by an older version.
- Offline, online and different types of connection - some applications are designed to work offline, so it is important to check how they behave without the network connection. Also, the application should be tested on how it works in terms of different connection types and how it responds to switching between them.
- Performance testing - mobile users are extremely impatient nowadays and usually they will not wait more than 3 seconds for the website to load. The same is with apps so it is crucial for Software Quality Assurance specialist to check how long does it take for running an app and loading its content, and also if there are any delays during the operation.
As we have shown in this article, when we are testing mobile application, we should learn how our product is built and then consider what exactly our test strategy will look like. At first glance, the web, native or hybrid applications are quite similar, but looking behind the scene we will discover many differences which the average user doesn’t even notice. Every technology has specific bottlenecks which have to be closely recognized and examined. Dedicated mobile testing approach will save our time and it will protect the process from omitting significant problems. In the end, no matter which application type we are dealing with, the goal is always one and clear - ensure that the app is working well and smooth and a user doesn't give up using it after the first experience with our product.