This is Part 2 of my prior post, Mobile Application Development Best Practices Part 1, that covered SDLC, Usability, and Security. In this post, I cover mobile app Testing and Deployment best practices.
Testing mobile apps presents a unique set of challenges not typically encountered on the more traditional desktop platform. Besides the considerable fragmentation of devices and operating systems, many additional factors contribute to the mobile ecosystem’s complexity: the variety of device hardware/form factors/screen resolutions, reliance on network bandwidth, as well as interference from background tasks/alerts/notifications. Multiple app-testing platforms exist, from virtual simulators to cloud solutions to the actual devices themselves. Knowing when to leverage each platform for testing will lead to significant cost savings and increase overall effectiveness.
- Simulators and On-Device Testing – To most-accurately measure a mobile app’s usability and performance, simulators can be leveraged early in the development process but any final testing must be conducted on the device itself.
- Test Coverage – Ensure adequate device/browser/OS coverage when testing to identify any unusual behaviors caused by nuances or edge-case scenarios.
- Continuous Testing – Making testing a part of continuous delivery will help identify defects sooner rather than later, making them easier and cheaper to correct.
- Automation – Scripts are an effective way to automate testing, thereby reducing the time and cost of the process.
Testing “in the wild” – Performing tests under real-world circumstances will paint a true picture of how the app will perform on a user’s device, allowing testing for scenarios such as multiple apps running at once, blotchy network, inadequate memory, busy processor, etc.
- Mobile Specific Scenarios – Never overlook testing for mobile-specific conditions such as memory leaks, battery performance, network variability (switching between 3G/4G/Wifi), interruptions from other apps (e.g. incoming phone call), walk-away, timeouts, etc.
Though several options for deploying mobile apps exist, it is critical that an organization picks the distribution channel appropriate to their target audience. The technology stack chosen to initially build the mobile application will also affect later deployment options. Organizations must understand the benefits and drawbacks associated with each deployment option.
- Release Cycles – A well-defined release cycle plan for deploying mobile apps is instrumental for smooth deployments.
- Hosting Environments – An explicit delineation of hosting environments (development, test, production, and a strategy for promoting code from one environment to the next) is also important. Additionally, it is crucial to maintain consistency across these environments.
- Continuous Deployment – Adopting continuous deployment as part of delivery will prevent massive deployments (large download files) and help minimize downtime for end users.
- Automation – Automating the process of installing, configuring, and provisioning mobile apps based on established policies and profiles will save time and ultimately result in significant cost savings.
- Developer Certifications – When deploying to commercial app stores, always ensure developer certificates are up-to-date to prevent any possible delays.
- App Properties – Delays may also be prevented by ensuring all properties of the mobile app have been updated (signature, version, compatibility, etc) prior to deployment.
Finally, I strongly encourage you to check out this webinar by Shahab Choudhry (Co-founder, Propelics) that highlights the many “gotchas” that stump organizations developing mobile apps, and describes ways to best avoid these common pitfalls.