What is a web app (mobile-optimized websites), and what are its pros and cons?
There are several attributes of this type of apps that could be considered as the advantages:
- 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). Because they are accessible directly through the browser, such apps don’t consume storage or memory of the device.
There are disadvantagres as well:
- Their performance is slower than this of native apps and they have no access to embedded device sensors.
- The app icon is not installed on the device screen. As a result, they can be hard to find: they're not present in app stores and require user to enter URL to reach them.
- Mobile-optimized websites 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 that it is currently the most popular mobile application. Unlike web apps, native applications are dedicated to specific mobile platforms and are written in languages like Swift and Objective-C (for iOS) or Kotlin and Java (for Android). The mobile development process in this case, can be more expensive and risky, but eventually, we must remember that bespoke products always offer extra benefits.
Let’s look at the list of pros and cons of native solutions:
- Brilliant performance can 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 that offer additional benefits like apps ratings.
- They have access to device's features, which makes them more interactive and intuitive for users.
- In many cases, some native apps features can work in offline mode.
On the flip side:
- The product has at least two code bases, one for iOS and one for Android, so the software development process, as well as the maintenange stage, is more time-consuming and expensive.
- We should be aware of the app stores' specific requirements and the 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?
The main benefits of this approach include:
- A single code base for all mobile platforms and devices reduces the time and cost of the software development and maintenance phase.
- Some of the most commonly used hybrid app development frameworks like React Native and Flutter are constantly improved to be more flexible.
- Hybrid apps are available from app stores.
- Speed and performance are better than in the case of web apps.
- Developers can customize apps to follow some of the UI rules previously restricted to native.
- Apps have access to the phone camera and several other embedded features.
There are still some “buts”, however:
- Such apps often look different on different devices.
- Thay can't make the most of mobile sensors.
- Performance can lag behind that of the native apps.
Although it's not up to the mobile tester to decide 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 are we testing the web application on devices?
If the website on mobile is (often) the same like as on desktop, isn't testing the web application enough? No, it's not. We still should test the web application on real mobile devices for a couple of reasons:
- Mobile devices’ screens are significantly smaller compared to desktop screens, so as Quality Assurance specialists, we should remember to conduct UI tests and verify whether all user interface elements are fully visible and well-aligned. It is also vital to incorporate UI testing for different screen sizes and resolutions.
- Mobile devices have two types of connection with the Internet: WiFi and cellular network connection. The latter is usually limited and requires an additional fee after crossing the limit, so the tester should pay attention to whether 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 less uable or even cause it to crash. The software tester should ensure that switching between WiFi and cellular network is not problematic for the user and that ads don't cause bottlenecks.
- As mobile devices have less memory and storage than desktops, app performance tests are crucial. A Software Quality Assurance specialist should check, e.g., if using a cellular connection doesn't cause significant differences in performance.
Native and hybrid applications - what should be tested?
Native and hybrid apps are similar in terms of functionality (the main difference lies in the 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's 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 Quality Assurance specialist has to test if the other one is blocked. Wwhen an application has two types of views, they should verify if it works properly in both.
- Access to built-in device elements and folders - application should ask for permission if a user hasn't allowed it to access resources or folders before or the permit was revoked.
- Loading data from resources testing - a software tester should check if an application loads data correctly. For example, if the application uses GPS, a QA specialist tests if the application shows the correct location.
- Testing the application behavior when any other application will interrupts it works - a tester checks if phone calls, messages, or push notifications don't crash the app.
- Memory usage testing - a software tester verifies if an application doesn't take too much memory when it is downloaded and if it doesn't consume too much RAM when it is in use.
- Battery consumption testing - especially in the case of web applications, it’s important to test if they don't consume battery too fast.
- Compatibility testing - QA ishould also test the 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 mobile devices of with different sizes to ensure that there is no problem with displaying the app on screens with different resolutions.
- Compatibility (Updates) testing - for most applications, there will come the time to make an update, fix some bugs, or add new features. Testers should ensure that an app works well on the latest 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 vital to check their behavior 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 true for mobile apps – which is why Quality Assurance specialists ought to check how long running an app and loading its content takes and if there are any delays during the operation.
As we have shown in this article, when we are testing mobile applications, 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, and hybrid applications are quite similar, but looking behind the scenes, we will discover many differences that the average user doesn’t even notice. Every technology has specific bottlenecks which have to be closely recognized and examined. A 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: to ensure that the app works well and smooth, and the user doesn't give up on it too soon.