Developing a mobile or web app is uncharted territory for most researchers, making planning for the required time and resources challenging. In line with our mission of empowering health researchers to take on more leadership in developing health promotion apps, we’d like to shed some light on an often-overlooked development step: testing.
Proper testing is a crucial step in ensuring the functionality and usability of your mobile or web app. A good testing strategy can reduce costs and lost time by identifying issues early in development. On the other hand, apps that are not adequately tested are likely to frustrate and confuse users. Given the importance of user engagement in achieving positive outcomes in digital health interventions, investing sufficient time and resources towards testing is critical.
It’s crucial for researchers to be involved in the testing process rather than just relying on their developers. This blog provides a broad overview of what app testing entails and discusses opportunities for researchers to involve themselves in the process. We hope this overview can facilitate better communication between researchers and developers and equip researchers with the knowledge needed to allocate sufficient time and resources towards testing.
Planning for testing
Your developer will create an overarching testing strategy for your app, which describes the types of tests to be undertaken, the test cases that will be used, and how testing will be documented. The testing strategy should be systematic and tailored to the specific functional requirements of your app.
Be sure to ask questions about testing when seeking bids for developers. Ask what types of testing will be included in the scope of work and inquire into ‘warranty periods’ for bugs discovered after development. Let your developer know that you want your team to be involved in the process as much as possible.
A good testing strategy will include iterative cycles of functional testing, UI testing, performance testing, usability testing, security testing, and compatibility testing.
Functional Testing and UI Testing
Functional tests are the most foundational, as they test whether your app does what you expect it to. The process involves testing every component of your app against its specified requirements. Your developers will conduct functional testing from the start of development by incorporating automated tests into the codebase (e.g., unit testing).
On the other hand, UI testing looks at each feature from the user’s point of view (i.e., the user interface). This type of testing involves checking that all UI elements, such as buttons and menus, are working correctly. Researchers can get involved in UI testing as soon as there is a functional demo with a user interface. It’s important to check to ensure that features are working and that the app is returning helpful errors. For example, a registration form should not let users register if they provide two different passwords and should return a clear error message if they do. UI testing can also be automated using tools like Selenium or Appium.
Even a perfectly functional app will deliver a poor experience if users perceive it to be slow or laggy. Over the last 30 years, research has consistently shown that a delay of even one second causes users to lose focus and that they are likely to move on to other tasks after a 10-second delay. Ideally, your app should respond to user input in under 100 milliseconds.
The delay between user action and app reaction (i.e., latency) is influenced by internal factors (e.g., code optimisation and algorithm efficiency) and external factors (e.g., users’ internet quality, the number of users accessing your system, and the performance of external APIs). Therefore, your developer should undertake performance testing under a wide variety of circumstances.
Usability testing is often the most familiar to researchers, as it is increasingly becoming an expected study component when developing digital health interventions. The goal of usability testing is to identify any issues or roadblocks cause difficulties or frustration for users. This type of testing typically involves conducting user tests, where real users are asked to perform specific tasks within the app and provide feedback on their experience.
Developers do not typically undertake usability testing. Instead, the impetus is on the research team to conduct usability tests and provide feedback to developers. It’s important to conduct usability testing as early as possible, as making changes to an app in later development cycles is more costly and time intensive. Research teams tight on time could consider outsourcing usability testing but should still be deeply involved in test design and evaluation.
Security testing tests an app’s security measures and identifies potential vulnerabilities. We recommend engaging with a third party to perform security testing, as your digital health app will likely handle sensitive user data. Be sure to engage with security testing early on in development so that any issues uncovered can be addressed.
Some common types of security testing for apps include:
- Penetration testing: A cyber-security expert will attempt to hack into the app to identify any vulnerabilities that malicious actors could exploit.
- Vulnerability scanning: Automated tools scan the app for known vulnerabilities and security weaknesses.
- Code review: A manual review of the app’s source code to identify potential security issues.
- Authentication and authorisation testing: Testing the app’s authentication and access control mechanisms to ensure that only authorised users can access sensitive data or functionality.
- Encryption testing: Testing the app’s encryption methods to ensure that sensitive data is adequately protected.
- Network security testing: Testing the app’s network security measures, such as firewalls and intrusion detection systems, to ensure they effectively prevent unauthorised access.
Security testing is essential for app development. By identifying and addressing any security vulnerabilities early in the development process, you and your dev team can help feel more confident about ensuring the privacy and security of your participants’ information.
Compatibility testing examines how an app works across different devices, operating systems, and browsers. Your developer will likely conduct these tests using emulators. Be sure to ask for details on the types of devices and operating systems included in your developer’s compatibility tests. Tell your developer if you have reason to suspect that your target population will be using older phones or operating systems, as they may not typically include these in their routine testing.
You can get involved in compatibility testing by asking your research team, colleagues, and friends to test the app on their devices. It is also helpful to note the device and operating system used in all tests you undertake (e.g., UI testing, usability testing), as any issues you find may relate to compatibility.
The efficacy of digital health interventions is dependent on their functionality and usability, so testing should be a foundational component of their development. We hope this brief overview of testing can help researchers better understand testing and find ways to involve themselves in the process.