Mobile Device Testing for Cross-Platform Apps

Rate this content
Bookmark

Testing your React Native, Capacitor, or other cross-platform apps on mobile devices is a critical but complex step of deployment. If you’re used to web testing, navigating the options for iOS and Android can be daunting. This session will cover virtual & real device options, native build types for test deployments, how to deliver apps to testers, and even how to run automated tests against real devices.

This talk has been presented at TestJS Summit 2023, check out the latest edition of this JavaScript Conference.

FAQ

Cross-platform mobile app development faces challenges such as varying development and deployment processes across platforms, platform-specific test cases, and the need for expertise in nuances between different operating systems like Android and iOS. These factors can complicate testing and deployment, requiring specialized knowledge and strategies.

Mobile applications can be tested using virtual devices like emulators and simulators, which are provided with Android Studio and Xcode respectively. Real device testing, which offers higher fidelity of user experience, involves running tests on actual hardware but requires device registration and can be more complex and resource-intensive.

Virtual device testing uses software-based emulators and simulators to mimic real devices and is useful for initial testing phases. Real device testing involves testing on actual hardware, providing more accurate insights into user experience and performance but at a higher complexity and cost.

For Android, the primary build types are debug and release, while iOS requires several types including simulator, development, ad hoc, app store, and enterprise builds. Each build type serves different purposes, from testing to distribution, and involves specific configurations like code signing.

Manual testers can receive test versions of apps through various methods, such as downloading binaries from centralized storage like Google Drive or using platform-specific distribution tools like TestFlight for iOS and Google Play's internal testing tracks for Android.

Automated testing in mobile app development offers efficiency and consistency, enabling developers to perform repetitive tests accurately and quickly. It supports both virtual and real device testing, helping to catch bugs early and reduce manual testing efforts, ultimately speeding up the development process.

Yes, automated testing can be integrated into the CI/CD pipeline for mobile apps. Tools like Fastlane and mobile CI/CD platforms like Bitrise or AppFlow can automate various tasks including testing, building, and deploying mobile applications, streamlining the development and maintenance processes.

Mobile device testing for cross-platform apps involves verifying functionality, performance, and user experience across multiple mobile operating systems (like iOS and Android) and platforms (including web) using a single codebase. This ensures that the application delivers a consistent experience regardless of the device or platform.

Cecelia Martinez
Cecelia Martinez
28 min
07 Dec, 2023

Comments

Sign in or register to post your comment.
Video Summary and Transcription
This Talk discusses cross-platform mobile testing, including the challenges it presents and the types of devices and builds that can be used for testing. It explores manual testing, automated testing, and the use of tools like Appium and SOS Labs for running tests on real devices. The Talk also touches on PWA automation, the choice between mobile apps and PWAs, and different testing approaches and performance considerations.

1. Introduction to Cross-platform Mobile Testing

Short description:

This is mobile device testing for cross-platform apps. I am Cecilia Martinez, a developer advocate for AppFlow, a mobile CICD platform built by Ionic. Cross-platform apps are built with one code base and deployed to iOS, Android, and the web. Frameworks like React Native, Ionic with Capacitor, Flutter, .NET MAUI, and Kotlin Multiplatform enable this. The result is a faster development process and a consistent experience for developers and users.

So, yes, this is mobile device testing for cross-platform apps. As you probably have heard by now, I am Cecilia Martinez. I'm a developer advocate for AppFlow, which is a mobile CICD platform built by Ionic.

So, you're probably more familiar with Ionic or Capacitor than you are with AppFlow. But you can learn more about mobile deployments, mobile building, by following me on Twitter or GitHub at Cecilia Creates. Or feel free to contact me on LinkedIn as well at just LinkedIn.com slash in slash my name.

So, when we talk about cross-platform, what we're talking about specifically is apps that you build with one code base, but that you deploy anywhere. So, iOS, Android, and then also to the web. So, there's a lot of frameworks that you can use to do this. If you're thinking in the kind of the web ecosystem and web-based frameworks, the ones that are going to come to mind are React Native and then Ionic paired with Capacitor. But you can also use tools like Flutter, which is based in Dart, .NET MAUI, or Kotlin Multiplatform. But the idea is that you build ones to deploy anywhere. And this gives you not only a faster development process, but a more consistent developer and user experience across platforms.

2. Challenges of Cross-platform Mobile Testing

Short description:

Cross-platform development erases the problem of separate teams working on iOS and Android apps individually. However, it comes with its own challenges. The deployment processes for web, iOS, and Android are different, and testing native builds on real devices requires platform-specific expertise. Testing is crucial for mobile apps as deployments are high risk and users are picky. Therefore, thorough testing is necessary to ensure a positive user experience.

You've often seen something where, you know, the iOS version of the app has a feature that isn't available yet on Android, or maybe there's, you know, certain apps that are only on iOS. And that's because typically you may see separate teams working on those apps individually. With cross-platform, you erase that kind of problem. But cross-platform is not without its own challenges. So, while the dev processes are the same, the deployment processes are not. You have very, very different build, testing, and deployment processes across web, iOS, and Android. This creates really specific challenges when it comes to testing these applications, especially when you're testing the actual native builds on real devices. You have platform-specific test cases that you have to consider as well. So, even if you write the code the same, it will actually engage with the device differently, and you have to consider that. And that requires some expertise of each platform. So, if you are a web developer and you are building cross-platform for the first time, and it's the first time that you're dealing with mobile applications, you have to learn the nuances between Android and iOS to be able to effectively test those applications. And testing is really important for mobile applications. Deployments are high risk. They take a lot longer. You have to go through the app stores and deal with that approval process. So, the apps need to be very well tested before they are installed on a user's device. Users are also very picky about their mobile applications. They encounter one bug and they uninstall, or they never use it again. So, it's important that you are able to test these applications appropriately.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Limitless App Development with Expo and React Native
React Advanced 2021React Advanced 2021
27 min
Limitless App Development with Expo and React Native
Watch video: Limitless App Development with Expo and React Native
Today's Talk discussed building cross-platform apps with React Native and Expo, addressing challenges such as setting up the native runtime and managing dependencies. Expo provides a pre-built runtime, native APIs, fast iteration speed, and integrated cloud services. EAS build simplifies app deployment by handling native code signing and validation. Over-the-air updates allow instant updates to JS and assets. Custom native code can be added using auto-linking and config plugins, and Expo supports both Managed and Bare workflows.
Building a Mobile App with Expo, EAS, and React Native
React Summit Remote Edition 2021React Summit Remote Edition 2021
35 min
Building a Mobile App with Expo, EAS, and React Native
This talk provides an overview of building React Native apps with Expo and Xcode. It covers Expo managed projects, XO, Turtle, customizing runtime, Expo Development Client, and EAS. The talk also mentions the advantages of Expo Updates, the focus on a customizable runtime, and adding native libraries. Favorite React Native apps and libraries are recommended, and the future goals include enhancing performance and improving the development experience through EAS.
How to Share Code between React Web App and React Native Mobile App in Monorepo
React Summit 2022React Summit 2022
7 min
How to Share Code between React Web App and React Native Mobile App in Monorepo
This presentation focuses on sharing code between React web and React native mobile apps. The speaker demonstrates how to achieve feature parity using a Monorepo with NX. They highlight the importance of sharing non-UI code, such as business logic and state management, through shared libraries. This approach allows the apps to focus on UI code while keeping non-UI code separate. For more details, refer to the speaker's blog post.
React Native Architecture at Product Hunt
React Summit Remote Edition 2021React Summit Remote Edition 2021
18 min
React Native Architecture at Product Hunt
The speaker discusses their React Native architecture and how they structured their app, choosing React Native over native development due to limited resources and the need for UI experimentation. The architecture consists of support, components, and screens, with a focus on code organization and extensibility. The speaker explains the screen creation process, including the use of React Native Navigation and a state machine pattern. They also highlight the use of GraphQL for data retrieval and navigation between screens. The talk covers the structure of common components, utilities for styling, and support for dark mode. Overall, the speaker emphasizes the importance of isolating dependencies and utilizing a directory structure approach.
The New Architecture Is Here… What Now?
React Advanced 2022React Advanced 2022
22 min
The New Architecture Is Here… What Now?
The Talk discusses the new architecture in React Native, highlighting its benefits such as native interoperability, concurrency, faster startup, better memory management, and improved code quality. The migration process to the new architecture involves refactoring, codegen, and extending native interfaces. Challenges include typing, configuration, and migrating third-party libraries. React 18 introduces automatic batching and compatibility with the new architecture. Microsoft is expanding React Native to target desktop platforms and has a dedicated open-source tooling repository. The Talk emphasizes the importance of open-source contribution and setting healthy boundaries.
Mobile Deployments for Web Developers
JSNation 2023JSNation 2023
23 min
Mobile Deployments for Web Developers
Mobile deployments are crucial for web developers due to the increasing number of users on mobile devices. Cross-platform development and web to mobile migrations are on the rise with tools like React Native, Ionic, Capacitor, and Native Script. Mobile testing requires native binary compilation and testing on real devices. Google Play and iOS have specific methods for releasing apps to testers, while web development allows for dynamic updates and quick deployment. Mobile app building and deployment require specific infrastructure and code signing processes. App store approval guidelines and versioning updates pose challenges in mobile app deployment.

Workshops on related topic

Bringing Your Web App to Native With Capacitor
JSNation 2023JSNation 2023
111 min
Bringing Your Web App to Native With Capacitor
WorkshopFree
Mike Hartington
Mike Hartington
So, you have a killer web app you've built and want to take it from your web browser to the App Store. Sure, there are a lot of options here, but most will require you to maintain separate apps for each platform. You want your codebase to be as close as possible across Web, Android, and iOS. Thankfully, with Capacitor, you can take your existing web app and quickly create native iOS and Android apps for distribution on your favorite App Store!
Contents: This workshop is aimed at beginner developers that have an existing web application, or are interested in mobile development. We will go over:- What is Capacitor- How does it compare to other cross-platform solutions- Using Capacitor to build a native application using your existing web code- Tidying up our application for distribution on mobile app stores with naming conventions, icons, splash screens and more
Hands-On With SwiftUI, GraphQL, & Neo4j AuraDB
GraphQL Galaxy 2022GraphQL Galaxy 2022
156 min
Hands-On With SwiftUI, GraphQL, & Neo4j AuraDB
WorkshopFree
William Lyon
William Lyon
Bring the power of graphs to iOS mobile app development in this hands-on workshop. We will explore how to use the Neo4j GraphQL Library to build GraphQL APIs backed by Neo4j AuraDB and how to integrate GraphQL into an iOS app using SwiftUI and the Apollo iOS GraphQL library as we build a news reader mobile app.
Table of contents:- Intro to Neo4j AuraDB- Building GraphQL APIs with the Neo4j GraphQL Library- Intro to SwiftUI- SwiftUI + GraphQL
PrerequisitesTo follow along during the workshop attendees will need a Mac laptop with a recent version of Xcode installed. Some familiarity with Swift and iOS app development will be helpful, although not required.
Bringing your React Web App to native with Capacitor
React Summit 2022React Summit 2022
92 min
Bringing your React Web App to native with Capacitor
WorkshopFree
Mike Hartington
Mike Hartington
So, you have a killer React app you've built and want to take it from your web browser to the App Store. Sure, there are a lot of options here, but most will require you to maintain separate apps for each platform. You want your codebase to be as close as possible across Web, Android, and iOS. Thankfully, with Capacitor, you can take your existing web app and quickly create native iOS and Android apps for distribution on your favorite App Store!
This workshop is aimed at intermediate developers that have an existing React application, or are interested in mobile development with React. We will go over:
What is CapacitorHow does it compare to other cross-platform solutionsUsing Capacitor to build a native application using your existing web codeTidying up our application for distribution on mobile app stores with naming conventions, icons, splashscreens and more.