-
Notifications
You must be signed in to change notification settings - Fork 3
Added blog for mobile testing frameworks comparison #149
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 3 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,162 @@ | ||||||
| --- | ||||||
| title: Which Mobile Test Automation Framework Fits You? | ||||||
| authorName: Prarup Gurung (प्रारुप गुरुङ्ग) | ||||||
| authorAvatar: https://avatars.githubusercontent.com/u/8559121?v=4 | ||||||
| authorLink: https://github.com/grgprarup | ||||||
| createdAt: June 27, 2024 | ||||||
| tags: test automation, mobile testing, Android testing, iOS testing, testing frameworks | ||||||
| banner: https://blog.jankaritech.com/src/assets/MobileTestAutomation/images/banner.png | ||||||
| --- | ||||||
|
|
||||||
| ###### _Disclaimer: The views and opinions expressed in this blog post are solely my own. I am not receiving any funding or sponsorship for this content. This post is intended for informational and educational purposes only._ | ||||||
koebel marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
|
||||||
| Mobile applications are now an essential part of our daily routines. From shopping and banking to social networking, | ||||||
| there's an app for almost everything. As our reliance on these apps grows, ensuring their quality becomes increasingly | ||||||
| important. This is where mobile test automation frameworks play a key role. They automate the testing process, making | ||||||
| sure apps function correctly without needing manual checks. However, with | ||||||
| numerous [options available](https://www.google.com/search?q=test+automation+frameworks+for+mobile+applications), | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It seems like the end of this sentence got missing...
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That comma is intended and the following question will connect with that. I want to keep it like that.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I guess this is the introduction of the screenshot then? From a reader perspective and a grammar point of view it feels like something is missing because in English sentences usually have a subject and don't end with a comma.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What about something like
Suggested change
?
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The intended sentence is like this
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think it would be much clearer for the reader if your write that sentence as suggested above in one line. It's up to you to decide if it's better to have this line before or after the screenshot. And feel free to use or or similar tags if you want to highlight the second part of the sentence (how do you choose the right one?)
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I will keep the order of the sentence and image as it is. I have removed the use of H5.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That's fine. However, this line is still not a proper sentence... As a reader I find it very confusing that this sentence doesn't have a subject and is ending with the comma. |
||||||
|
|
||||||
|  | ||||||
grgprarup marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
|
||||||
| **_How do you choose the right one?_** | ||||||
|
|
||||||
| Among the available frameworks, I've picked these five for comparison: **_Appium_**, **_Calabash_**, **_XCUITest_**, * | ||||||
| *_Espresso_**, and **_Selendroid_**. Let's break them down in a straightforward manner. | ||||||
|
|
||||||
| ## [**Selendroid**](http://selendroid.io/) | ||||||
|
|
||||||
| Selendroid is a test automation framework for native or hybrid Android applications and the mobile web. It is an open | ||||||
| source tool with 433 forks and 880 stars on [GitHub](https://github.com/selendroid/selendroid). | ||||||
|
|
||||||
| ### Pros and Cons: | ||||||
|
|
||||||
| | **Pros 👍** | **Cons 👎** | | ||||||
| |-----------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------| | ||||||
| | **Environment:** Can be installed and run on various OS such as Windows, Linux, and macOS | **No Regular Updates:** Development has slowed down, which may limit its ability to support new Android features and devices | | ||||||
| | **Open-Source:** Free to use | **No Cross-Platform:** Limited to Android apps | | ||||||
| | **Hot Plugging** Selendroid supports hot plugging of hardware devices | **Limited Language Support:** Primarily supports Java for writing tests | | ||||||
| | **No App Modifications:** You don't need to recompile or modify your app | **Low Community Support:** Very little community support | | ||||||
| | **Inspector Tools:** Selendroid includes its own [UI inspector](http://selendroid.io/inspector.html) tool | | | ||||||
|
|
||||||
| ### When to use? | ||||||
|
|
||||||
| - When automating tests for Android applications across devices with varying screen sizes and resolutions | ||||||
| - For conducting cross-browser testing of Android apps, ensuring compatibility across a wide range of devices and | ||||||
| Android versions | ||||||
| - When you require simultaneous testing across multiple Android devices, enhancing overall test efficiency | ||||||
| - When testing scenarios that require intricate gestures and interactions, benefiting from its strong capabilities in | ||||||
| handling touch events | ||||||
| - If seamless integration with continuous integration tools is needed, enabling automated testing within a CI/CD | ||||||
| pipeline | ||||||
|
|
||||||
| ## [**Espresso**](https://developer.android.com/training/testing/espresso) | ||||||
|
|
||||||
| Espresso is an [open source](https://github.com/android/android-test/tree/main/espresso) Android applications test | ||||||
| automation framework developed by Google. It's known for its simplicity and integration with Android Studio. | ||||||
|
|
||||||
| ### Pros and Cons: | ||||||
|
|
||||||
| | **Pros 👍** | **Cons 👎** | | ||||||
| |-------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------| | ||||||
| | **Test Execution:** Enables quicker test execution by automatically synchronizing with the UI | **No Cross-Platform:** Limited to Android apps | | ||||||
| | **Easy to Setup:** Setting up Espresso is simple, as it integrates well within the Android Studio IDE | **Limited Language Support:** Primarily supports Java and Kotlin for writing tests | | ||||||
| | **Regular Updates:** The tool is up-to-date with the latest Android OS features | **IDE Dependent:** Android Studio IDE needs to be installed | | ||||||
| | **Community Support:** Owned by Google with large community | | | ||||||
|
|
||||||
| ### When to use? | ||||||
|
|
||||||
| - To validate each build after code changes | ||||||
| - To streamline processes by avoiding dependencies on remote servers and other workstations for testing | ||||||
| - To ensure unit and functional tests are easily executable from both IDEs and continuous integration setups | ||||||
| - To test apps using the latest Android OS APIs that support new platform features and OS versions | ||||||
| - To conduct testing on both emulators and real devices for comprehensive coverage | ||||||
|
|
||||||
| ## [**XCUITest**](https://developer.apple.com/documentation/xctest) | ||||||
|
|
||||||
| XCUITest is Apple's testing framework for iOS applications. Integrated with Xcode, it offers a straightforward way to | ||||||
| write and run tests for iOS apps. | ||||||
|
|
||||||
| ### Pros and Cons: | ||||||
|
|
||||||
| | **Pros 👍** | **Cons 👎** | | ||||||
| |------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------| | ||||||
| | **Test Execution:** Tests are stable, highly reliable, and performed faster | **No Cross-Platform:** Limited to iOS apps | | ||||||
| | **Easy to Setup:** Setting up XCUITest is straightforward as it integrates well with XCode IDE | **Limited Language Support:** It supports Swift and Objective-C for writing tests | | ||||||
| | **Community Support:** Built by Apple with large community | **Environment:** Only for macOS | | ||||||
| | | **IDE Dependent:** XCode IDE needs to be installed | | ||||||
|
|
||||||
| ### When to use? | ||||||
|
|
||||||
| - When developing iOS applications with stable, reliable, and fast testing | ||||||
| - When your team is focused on iOS development | ||||||
| - When you need to test iOS apps across various devices and screen sizes | ||||||
|
|
||||||
| ## [**Calabash**](https://github.com/calabash) | ||||||
|
|
||||||
| Calabash is an [open source](https://github.com/calabash) framework that allows you to write and execute tests for | ||||||
| Android and iOS apps. It uses | ||||||
| Cucumber, a tool that lets you write tests in plain language. | ||||||
|
|
||||||
| ### Pros and Cons: | ||||||
|
|
||||||
| | **Pros 👍** | **Cons 👎** | | ||||||
| |-------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ||||||
| | **Environment:** Can be installed and run on various OS such as Windows, Linux, and macOS | **Poor documentation:** Its documentation is quite minimal, making it challenging to set up the automation framework. To complete the setup, one often needs to rely on external resources | | ||||||
| | **Cross-Platform:** It supports writing tests for both iOS and Android | **Limited Language Support:** It supports only Ruby | | | ||||||
| | **User-Friendly:** Write tests in plain English, making it accessible for non-programmers | **No Regular Updates:** Active development has ceased, which might affect future compatibility | | ||||||
| | **Open-Source:** Free to use | **Low Community Support:** Very low community support as it is not used by many | | ||||||
|
|
||||||
| ### When to use? | ||||||
|
|
||||||
| - When your team includes non-technical members who need to write tests | ||||||
| - For projects that would benefit from [behavior-driven development](https://cucumber.io/docs/bdd/) (BDD) | ||||||
|
|
||||||
| ## [**Appium**](https://appium.io/docs/en/latest/) | ||||||
|
|
||||||
| Appium is a widely-used mobile test automation framework that supports UI automation of multiple platforms, including | ||||||
| mobile (Android, iOS, Tizen), web, desktop, TV. The popularity of this tool may stem | ||||||
| from its support for multiple programming languages for writing tests. Also, it is an open-source tool with 18.2k stars | ||||||
| and 6k forks on [GitHub](https://github.com/appium/appium). | ||||||
|
|
||||||
| ### Pros and Cons: | ||||||
|
|
||||||
| | **Pros 👍** | **Cons 👎** | | ||||||
| |--------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------| | ||||||
| | **Environment:** Can be installed and run on various OS such as Windows, Linux, and macOS | **Performance:** Can be slower compared to other tools because it uses a client-server architecture | | ||||||
| | **Cross-Platform:** You can use the same tests for both iOS and Android | **Setup Complexity:** Setting up Appium can be complex, especially when configuring it for both iOS and Android platforms | | ||||||
| | **Language Support:** Write tests in Java, Python, JavaScript, Ruby, C# and more | | | ||||||
| | **Open-Source:** Free to use with a large community for support | | | ||||||
| | **Regular Updates:** The tool is up-to-date with the latest mobile operating systems and features | | | ||||||
| | **No App Modifications:** You don't need to recompile or modify your app | | | ||||||
| | **Inspector Tools:** Appium includes its own [UI inspector](https://github.com/appium/appium-inspector) tool | | | ||||||
|
|
||||||
| ### When to use? | ||||||
|
|
||||||
| - When developing mobile applications across multiple platforms (iOS and Android) to guarantee seamless | ||||||
| cross-platform compatibility | ||||||
| - To automate tests for mobile apps, ensuring consistent and efficient testing across a variety of devices | ||||||
| and operating systems | ||||||
| - When you need a flexible and community-supported open-source framework for mobile automation | ||||||
| - When you can utilize a single codebase for both Android and iOS, minimizing development effort and | ||||||
| maximizing code reusability | ||||||
| - For mobile application testing that involves interacting with native, hybrid, or mobile web | ||||||
| applications, providing a versatile solution for various testing requirements | ||||||
|
|
||||||
| ## Conclusion | ||||||
|
|
||||||
| In conclusion, the choice of a mobile test automation framework should align with your project requirements, team | ||||||
| expertise, and the specific needs of your application. Whether you need cross-platform compatibility, ease of use, | ||||||
| native integration, or community support, understanding the strengths of each framework will help you make an informed | ||||||
| decision and ensure the success of your mobile testing strategy. | ||||||
|
|
||||||
| **_Keep Learning and Keep Practicing_** 👍 | ||||||
|
|
||||||
| **Stay tuned!!!** | ||||||
koebel marked this conversation as resolved.
Show resolved
Hide resolved
|
||||||
|
|
||||||
| ## References | ||||||
|
|
||||||
| - [Selendroid](http://selendroid.io/ "Selendroid") | ||||||
| - [Espresso](https://developer.android.com/training/testing/espresso "Espresso") | ||||||
| - [XCUITest](https://developer.apple.com/documentation/xctest "XCUITest") | ||||||
| - [Calabash](https://github.com/calabash "Calabash") | ||||||
| - [Appium](https://appium.io/docs/en/latest/ "Appium") | ||||||
Uh oh!
There was an error while loading. Please reload this page.