During the last few years, we can see that the software industry is going mobile, we can see it in the massive app releases where thousands of new applications are becoming available for us per week and enterprise users will use their phones to connect remotely to their company's services such as Mail and file sharing.
I created this checklist that should be used as a baseline when testers need to deal with the increasing challenge of testing mobile applications.
Preliminary Questions before starting the tests
What are the supported devices that we need to use in the testing process?
Do you have the hardware to support the tests (Real Device/Simulators)?
How do you think that people are going to use the application?
What is the code that was used to create the application?
What are the supported platforms that we need to use in the testing process (Symbian, iOS, Android, etc.)?
Do you need to support tablets?
What is the application design?
Validate that the application contains the company logo.
Validate that there are no spelling mistakes.
Validate all buttons and menus.
Validate all string and fonts.
Validate that you can uninstall the application.
Validate that you can reinstall the application.
Validate that you can install the application.
Validate that the application is not affected in a case of failure during the update process.
Validate that the user receives a notification when the application is going to be uninstalled.
Validate that the user will receive a warning when one of the predefined requirements (Disk Space, Permissions Etc.) is not fulfilled before the start of the installation process.
Validate that a new update will not affect the application performance.
Validate that the user receives only the relevant application updates.
Validate that the user is notified when a new update is available.
Validate that the application will support OS updates.
Can the user downgrade the System version?
Can the user manipulate the main functions using voice activation?
Validate that the color contrast can be changed.
Can the user use the Zoom in/out function?
Can the user change the size of the text?
What are the size screen buttons, will they allow the user to access the major functionalities?
Validate that the APP authentication process is secured (External Channels).
Validate that the default network that the application uses is secured.
How and where the application saves the user's personal information?
How many log-in attempts are permitted before locking the app?
Validate that the user cannot access/modify the application files.
Validate that the application uses the relevant permissions.
Validate the application certificates (If relevant).
Validate that Device ID is used as an identifier.
The applications should not get access to the device information without user approval.
Validate the user credentials before allowing him to access the App local information.
Validate that the user receives a notification when he changes to an unsecured network.
Validate that the APP is not storing any payment information (If it does, how well it's secured?).
Social and External connections
Can the user share the application data to external destinations (Files, Links, etc.)?
Can the application be integrated with 3rd applications?
Can the user use the App to Log into remote services?
Can the user control the notification that he receives?
Test the integration between the app and different social networks (Twitter, Facebook, etc.).
The Download Process
Can the user download the app at a reasonable time?
Is there any agreement/License that the user needs to sign/approve before downloading the application?
Validate that there is enough storage in the device before downloading the application.
Where is the source that the user can use to download the application (Website, AppStore, etc.)?
What happens if the application cannot save data due to low space?
How the application beehives when the date is not accessible?
How the application beehives when the date is corrupted?
How the application backup and restore the user data?
What is the storage that the application uses to store data (Cloud, Local memory, SD card, etc.)?
How the application handles interruptions?
Notifications from another application that is installed.
Connecting/Disconnecting the phone charger.
The User receives a Text message.
Music playing while using the app.
The User receives a phone call.
Switching between apps.
Voice mail notification.
Validate that the application performs as defined in the requirements doc.
Validate that the user can start, Restart, and close the application.
What is the expected behavior when the phone is locked?
Validate that the user can access all functions.
Validate that the user will follow the preliminary requirements before using the application (GPS, Wi-Fi, etc.).
Validate that the application functionality on different orientation (Landscape/Portrait).
Validate that all functions will behave the same as used in a desktop version (If any).
Validate that the application displays informative errors in any case of failure.
Test the application with different networks (3G,4G, 5G, etc.).
Does the Application interact with Device GPS?
Test the application with low connectivity.
Test the application with Airplane mode.
Test the application through a proxy.
Test the application with Wi-Fi.
Test the application with USB.
Test the application with NFS.
Test the application with BT.
Validate that the application can be used on different hardware versions.
Validate that the application supports different screen resolutions.
Validate that the application supports different time zones.
Validate that the application is multilingual.
Validate that the application can be used on different OS versions (Symbian, Android, Windows Mobile, etc.).
Validate that the app supports different devices (Based on the predefined supported device list).
Validate that the application behavior is not affected when the user changes the Device settings.
Validate that the application is not consuming more memory than it should.
Test the application behavior with low memory in the device.
Test the application behavior with low CPU resources.
Validate the response time of the application.
In any case of performance degradation, you should display a notification to the user.