Testing each of these applications, whether it’s the same application on different platforms or a different application on different platforms, requires understanding the unique value of each platform, their functional and non-functional requirements, as well as the limitations and usability expectations from an end-user’s point of view.
Desktop applications are essentially designed for laptops and desktop computers so device compatibility is rarely a concern – although each application does come with storage, RAM, and CPU requirements.
Web applications are more dependent on the browser and therefore, offer a degree of device independence. Web apps that are supported on mobile browsers, can be easily tested with the browser’s own built-in testing tools for different screen sizes.
Mobile apps, both native and hybrid, need to be compatible with different devices. A good place to start is to pick the top three most used mobile phones and tablets (if the app is made for tablets) in the focus market. It’s worth remembering that as screen sizes change or as apps switch from portrait to landscape orientation, both the UI and the functional flow of the application can break.
Desktop and web applications are built with the premise that a steady wifi or ethernet connection is available. While major desktop apps can provide a large degree of functionality offline, web applications are entirely dependent on an internet connection being available. Mobile apps are somewhere in between – limited functionality can be provided offline e.g. in some games, and then synced with servers once internet connectivity is available. In this instance, testing scenarios to ensure acceptance criteria are met would include verifying that users are not able to:
- score extra game points by going offline and coming back online
- place successful orders in a closed cart
- crack software registrations by going offline, etc.
Furthermore, mobile applications have to be tested on both wifi internet and mobile data, often switching between the two, as well as exploring scenarios when the internet isn’t available for a span of time between connectivity.
OS compatibility vs. browser compatibility
For desktop apps and mobile apps, OS compatibility is a major factor in determining the app’s performance. However, in the case of desktop apps, since the desktop OS environment doesn’t receive updates with the same frequency as mobile OS, the OS update impact doesn’t necessarily come with every feature release. With mobile apps, whenever a new app or feature is released, good testing and development practices include subscribing to developer Beta programs so that development and testing can be done on the soon to be released mobile OS.
For web applications, cross-browser compatibility is a mandatory aspect to test. Not all browsers support the same level of functionality, though major browsers do behave similarly. Also, testing the application to validate the minimum supported browser version is important to ensure end-users are not frustrated with a broken user experience caused by an outdated/unsupported browser.
When testing client-server communication for desktop and mobile apps, proxy server tools like Postman and Charles are usually required to validate whether the server is sending correct responses to the clients. This can help in assigning bugs to either server developer teams or client developer teams.
For web applications, browsers come with built-in inspection tools. On any major browser, right-click and select ‘Inspect element’ to inspect network traffic, code console errors, web app security elements, etc.
Mobile devices are designed to be used on the move which adds several additional challenges for testing as compared to web and desktop apps. Many mobile apps are location-aware, using the geo-location of the device to provide interesting capabilities to the user. Testers need to know the interesting locations and have the ability to simulate the device being in various locations. Also, mobile devices started out as telephones, and are still used as such, which adds “interrupt” testing to the mix – where the tester sees how the app responds when the phone receives a call or text.
Desktop and web applications provide a lot of screen real estate. Generally, these applications offer a wide range of functionality, including user-role based functionality for Admin users. This increases both the scope of testing and the depth of testing. Both the UI and UX are designed keeping in mind that the user will have a physical keyboard and mouse to interact with the app. Similarly, the UI is designed for more activity and actions per screen.
Mobile applications are designed for single interface use with touch-based interactions on the smartphone or tablet screen, and an on-screen keyboard. As such, functionality per screen is not as comprehensive when compared to desktop or web apps – resulting in multiple screens being added to complete a functionality that could be achieved with one screen on the web app. Therefore, usability testing for mobile apps must consider the user’s experience of interacting with the elements on the screen to complete a process, as well as the number of screens the user needs to go through to complete a process. It also has to consider device and mobile OS supported gestures such as pinch, swipe, 3D touch, etc.
When an update to an existing application is released, it’s important to test it for backward compatibility and ensure that no regression defects are introduced by it –so thorough regression testing is needed. Desktop and mobile app update scenarios are important to validate not just on a single OS or device, but across a wide range of popular OS and device combinations. In the case of web apps, the application update normally happens via the server pushing changes to client browsers – more often than not, the update isn’t major nor does it require testing separately. Web app updates are tested in parallel during feature test cycles, sanity and regression test runs.
The world of desktop, mobile and web app testing is wide, and constantly evolving. New cross-platform capabilities such as deep linking web links to open mobile apps or optimizing battery usage of mobile apps are constantly being developed to enhance business value for end-users. To ensure high-quality testing of applications across platforms, it is important to understand how users will be using the app on each platform, what would be the most likely scenarios they would encounter, and then build these test points into the test cases from the beginning.