The first software programs were native desktop applications that ran on Windows PCs, Apple Macintoshes, and Unix-based servers. In the 2000s, the World Wide Web became the most popular place to deploy applications since they could run on any internet-connected device. Smartphones later became a popular platform for many applications given their ability to reach consumers anywhere and access utilities like camera and GPS locations.
While all software is built with the same core logic, there are important differences in the way that it’s written and deployed across these various environments. The role of quality assurance engineers has evolved over time in response to these differences and the complexity of ensuring that everything is running smoothly has grown.
In this article, we will take a look at the important differences between these environments when quality assurance testing, as well as some common pitfalls to avoid.
What’s the Difference?
Let’s start by taking a closer look at each of these different environments:
- Native desktop applications are installed and run on an individual computer. For example, Microsoft Word and Adobe Photoshop are examples of native desktop applications. These applications may interact with other computers on a network, but the processing is handled locally on an individual computer.
- Web applications run on a server – or multiple servers – but can be accessed by many clients through the Internet. For example, Google Docs lives on Google’s servers but can be accessed via a laptop or smartphone. A server outage may affect many clients and each client can have an effect on other clients using the system.
- Native mobile applications run natively on a smartphone just like native desktop applications run on a computer. For example, the Mail app or Slack app are native mobile applications that run on an individual smartphone. These applications may interact with others on a network but they are installed on individual devices.
Quality assurance engineers must use different testing environments for each of these types of applications. For example, you cannot test a native desktop application on a smartphone and web applications must often be tested on both personal computers and smartphones. The upshot is that many testing automation suites – like Selenium – include support for automating tests across many different environments.
Unique Considerations for Each
There are many unique considerations for each environment when it comes to quality assurance testing. By understanding these differences, QA engineers can improve their testing and ensure that they’re not missing any major areas.
- Network Conditions – How does an application perform when a smartphone user loses a cellular connection or data? The application may need to function with slower speeds or higher latency, such as when a user is on an Edge versus LTE network.
- Data Usage – How much data does an application consume? How much would it cost the user to use the application?
- Device Types – How does an application look and perform across many different devices? Even in Apple’s ecosystem, device sizes range from the Apple iPhone 4 to the iPad Retina Air. There are also countless Android devices to consider.
- Security – Does the application adhere to mobile security standards? For instance, do you support Apple Touch ID or social media authentication via OAuth? Are there security measures in place if a user’s smartphone is stolen?
- Battery Life – How much power does the applications consume? Battery life is limited for many smartphone users, which means that a power-hungry application can have a negative impact on the user experience.
- Notifications – Are notifications are working properly? Are they occurring too frequently or infrequently?
- Syncing – Is the application properly syncing with smart watches or other Bluetooth connected devices? Is the smartphone sending the data to the server properly to update on other devices that might be using the same data?
- Storage – Is the binary file a reasonable size? Does that application use a reasonable amount of local storage? Storage space is a luxury for some users, which means that large apps can cause a negative user experience.
- Interactions – Are interactions with a given application uniform between devices – e.g. between iOS and Android – despite differences in the platforms?
- Browser Versions – Is the application compatible across browsers? There are many different types of web browsers and versions. It may be necessary to test for compatibility as far back as IE7 – such as when catering to enterprise users.
- API and External Reliability – Do external APIs or dependencies gracefully fail? For example, Amazon S3 is commonly used for storage and an outage should show a reasonable error message rather than crashing the application.
- Security – Are errors, viruses, or malicious activities conducted by one user causing issues for other users or the entire application?
- Operating Systems – Does the application work with different versions of an operating system? For example, it may be necessary to support different version of Windows based on the types of clients using the application.
- Different Hardware – Does the application work on different hardware configurations? For example, a game developer might have to ensure that various graphics cards are compatible with the game’s rendering engine.
- Conflicts – Do firewalls, antivirus, or other software applications cause any conflicts? If so, is there a simple way for the user to address these conflicts?
- Security and Permissions – Does the software have the right permissions to run on the operating system without any issues? If not, is there a simple way for the user to give the software permissions?
It’s important to note that these environments are also continuing to evolve over time. For example, the latest Google smartphones have unlimited cloud storage and Apple’s iPhone SE made smaller screen formats a lot more common. QA engineers must keep abreast of these trends to ensure that they’re addressing concerns for their application’s target market.
The Bottom Line
Quality assurance testing looks very different across desktop, web, and mobile applications. While the same core principles apply, there are many special use cases that must be considered depending on the environment. By keeping these use cases in mind, QA engineers can ensure that they’re on the right track.