SlideShare a Scribd company logo
1 of 34
Android Application Testing
TANJINA ISLAM
linkedin.com/in/tanjinaislam
Agenda/Outline/Overview
 Testing Approach
 Android testing framework
 Android The Testing API
 Android testing tools
 Different automated testing frameworks
Testing Approach
 UNIT TESTING
 INTEGRATION TESTING
 MANUAL TESTING
 AUTOMATED TESTING
Unit Testing
 tests only the functionality of a certain component such as a method
(function) in a class, with all dependencies mocked up
 tests tend to be simpler and faster than integration tests
 also known as local tests
 run on a local JVM on the development machine instead of the
Android Runtime
 the execution speed of the unit test is very fast compared to tests
which require the Android system
 unit tests are executed against a modified version of the android.jar
which allows you to mocking libraries, like Mockito
Unit Testing
 Tools : JUnit
Integration Testing
 tests more than one component and how different pieces of the
system work together
 requires resources like database instances and hardware to be
allocated for them
 test many methods and may interact with dependencies like
Databases or Web Services
Unit Testing Vs. Integration Testing
 Let's, for example, assume a button in an Android activity is used to
start another activity. A unit test would determine if the corresponding
intent was issued, not if the second activity was started.
 An integration test would also check if the activity was correctly
started.
Manual Testing
 Requires Human interaction
 Tool : Human being
Automated Testing Frameworks
 Robotium
 Espresso
 uiautomator
 Robolectric
 Calabash
 Appium
 No Human Interactions
 Lots of Frameworks to automate testing
Automated Testing Frameworks
 most popular approaches used for automated Android testing:
 Google’s Android Testing Framework- This is the framework included as part of
the platform
 Robotium - Black box integration testing for Android
 Robolectric - Unit tests that run outside the emulator making the tests very fast
Android Testing Framework
 An Integral part of the development environment
 Assist on testing every aspect of application from unit testing to framework
Categories of Android Tests
 Testing for Android can be classified into:
 Local tests - tests which can run on the JVM
 Instrumented tests - tests which require the
Android system
 If possible, you should prefer to use local tests as
the test execution is much faster compared to the
time required to deploy and run the test on an
Android device
Android The Testing API
 The Android testing API is based on the JUnit API and extended with a
instrumentation framework and Android-specific testing classes.
 Junit
 Instrumentation
 TestCase Classes
 AndroidTestCase
 Component-specific test cases
 ApplicationTestCase
 InstrumentationTestCase
 Assertion classes
 Mock object classes
 Contexts for testing
Android Testing Framework
 Key Features of Testing Framework
 test suites are based on Junit
 test suites are contained in test packages similar to main application packages
 The SDK also provides
 monkeyrunner, an API for testing devices with Python programs
 UI/Application Exerciser Monkey, a command-line tool for stress-testing UIs
by sending pseudo-random events to a device
 use plain JUnit to test a class that doesn't call the Android API
 use Android's JUnit extensions to test Android components
Android Testing Tools
 Testing Support Library
 This library provides a set of APIs that helps to build and run test code for app
 The Android Testing Support Library includes the following test automation tools:
 AndroidJUnitRunner: JUnit 4-compatible test runner for Android
 Espresso: UI testing framework; suitable for functional UI testing within an app
 UI Automator: UI testing framework; suitable for cross-app functional UI testing
across system and installed apps
Android Testing Tools
 Testing Support Library
 Monkey
 is a command-line tool
 a program that runs on emulator or device
 generates pseudo-random streams of user events (such as clicks, touches, or
gestures, as well as a number of system-level events) and sends them into system
 acts as a stress test on the application, in a random yet repeatable manner
 watches the system under test
Android Testing Tools
 Testing Support Library
 monkeyrunner
 provides an API for writing programs that control an Android device or emulator
from outside of Android code
 monkeyrunner tool provides these unique features for Android testing: Multiple
device control, Functional testing, Regression testing, Extensible automation
 The monkeyrunner tool uses Jython
 Jython allows the monkeyrunner API to interact easily with the Android framework
Android Testing Tools
 Testing Support Library
 monkeyrunner
 monkeyrunner API is contained in three modules : MonkeyRunner, MonkeyDevice
and MonkeyImage
 it does not import these modules automatically
 To import a module, use the Python from statement:
from com.android.monkeyrunner import <module>
How does Android Test Framework
works
 is based on JUnit
 test tools are used to load the test
package and the application under test
 after loading package and application
test tools execute an Android-specific
test runner
 Test cases are run by a test runner class
that loads the test case class, setups,
runs, and tears down each test.
 InstrumentationTestRunner is the primary
Android test runner class.
Robotium
 is an open source library extending JUnit with plenty
of useful methods for Android UI testing
 require the application to be running on
emulator/device
 provides powerful and robust automatic black-box
test cases for Android apps (native and hybrid)
 Inherit from extension of Android class:
ActivityInstrumentationTestCase2
 Uses “Solo” class to interact with your UI
 Robotium Recorder for capturing test output and
screenshots
Robotium
 The framework handles multiple Android activities automatically.
 Minimal time needed to write solid test cases.
 Readability of test cases is greatly improved, compared to standard
instrumentation tests.
 Test cases are more robust due to the run-time binding to UI
components.
 Integrates smoothly with Maven, Gradle or Ant to run tests as part of
continuous integration.
 Relatively slow
Robotium
Espresso
 latest Android test automation framework of Google
 API is small, predictable, easy to learn and built on top of the Android instrumentation
framework
 Espresso tests can run on devices running Android 2.2 (API level 8) and higher
 we can write concise and reliable Android UI tests within a single target app
 is an instrumentation-based API and works with the AndroidJUnitRunner test runner
 Safer synchronization and thread handling
 The syntax is also a lot cleaner
 tests run optimally fast! Leave your waits, syncs, sleeps, and polls behind
 does not have support for webviews
Espresso
 Espresso is built up from 3 major components :
 ViewMatchers – allows you to locate a view in
the current view hierarchy [“find something“]
 ViewActions – allows you to interact with views
[“do something“]
 ViewAssertions – allows you to assert the state of
a view [“check something“]
 To avoid flakiness Turn off animations on testing
device
Espresso
Robotium Vs. Espresso
 The major advances in Espresso over Robotium:
1. Synchronization.
2. API.
3. Clear failure information.
Espresso Vs. Robotium
 Espresso test run is in sync with the UI
thread and does not rely on sleep/poll
mechanisms but is rather event driven
 Espresso is much faster than Robotium,
but only works on some SDK versions.
 More robust and extendable
 Tightly coupled with Android
 Example: ViewMatcher
 Custom Exception Handling
 Espresso has a small, well-defined and
predictable API, which is open to
customization
 Robotium attempts to address thread
safety with sleep/retry mechanisms, which
makes it unreliable and slower than
necessary
 Easier to use, Very stable
 prior versions of Robotium suffered from
inconsistent failure handling
 In Robotium's API, it is expected to choose
from 30+ click methods
 Robotium exposes dangerous methods like
getCurrentActivity and getView, which
allow you to operate on objects outside of
the main thread
uiautomator
 Can Test UI of native Android apps on one or more devices
 perform interactions on user apps and system apps
 is an instrumentation-based API and works with the AndroidJUnitRunner test
runner
 Requires Android 4.3 (API level 18) or higher
 is well-suited for writing black box-style automated tests
 APIs interact with visible elements on a device, regardless of which Activity is in
focus
 runs JUnit test cases with special privileges, which means test cases can span
across different processes.
 doesn’t support webview, with no way to directly access Android objects.
uiautomator
Espresso Vs. uiautomotor
 Testing UI for a Single App:
 checks that the target app returns the correct UI output in response to user
interactions in the app’s activities.
 Espresso framework is used to simulate user actions programmatically and test
complex intra-app user interactions.
 Testing UI for Multiple Apps:
 verifies the correct behavior of interactions between different user apps or
between user apps and system apps.
 UI Automator framework is used to support cross-app interactions.
Robolectric
 Robolectric is a unit test framework
 lets you run your tests inside the JVM
 Doesn’t require emulator/Device to run test
 Fastest testing suite; reduces test cycles from minutes to seconds
 No Mocking Framework is needed
 does not work for every case and only supports unit tests
 When tests fall outside its scope then we need to rely on Robotium for
complete integration testing
Robolectric
Other 3rd Party Frameworks
 Selendroid
http://selendroid.io/
 Testdroid
http://testdroid.com/
 Appium
 Calabash
References
http://developer.android.com/tools/testing/testing_android.html
https://code.google.com/p/robotium/
http://robolectric.org/
https://github.com/codepath/android_guides/wiki/Android-Unit-and-Integration-testing
http://developer.android.com/training/testing/ui-testing/espresso-testing.html
https://code.google.com/p/android-test-kit/wiki/Espresso
http://developer.android.com/tools/testing-support-library/index.html#UIAutomator
http://testdroid.com/tech/top-5-android-testing-frameworks-with-examples
https://www.youtube.com/watch?v=TGU0B4qRlHY
https://androidresearch.wordpress.com/2015/04/04/an-introduction-to-espresso/
http://www.vogella.com/tutorials/AndroidTestingEspresso/article.html
http://www.vogella.com/tutorials/AndroidTesting/article.html

More Related Content

What's hot

Introduction to Android and Android Studio
Introduction to Android and Android StudioIntroduction to Android and Android Studio
Introduction to Android and Android StudioSuyash Srijan
 
Introduction to Automation Testing
Introduction to Automation TestingIntroduction to Automation Testing
Introduction to Automation TestingArchana Krushnan
 
Automation Testing With Appium
Automation Testing With AppiumAutomation Testing With Appium
Automation Testing With AppiumKnoldus Inc.
 
Introduction to Android development - Presentation
Introduction to Android development - PresentationIntroduction to Android development - Presentation
Introduction to Android development - PresentationAtul Panjwani
 
Android Architecture.pptx
Android Architecture.pptxAndroid Architecture.pptx
Android Architecture.pptxpriya Nithya
 
architecture of mobile software applications
architecture of mobile software applicationsarchitecture of mobile software applications
architecture of mobile software applicationsHassan Dar
 
Mobile Application Testing
Mobile Application TestingMobile Application Testing
Mobile Application TestingNoor Orfahly
 
Mobile testing practices
Mobile testing practicesMobile testing practices
Mobile testing practicesRakesh Jha
 
Unit Testing Android Applications
Unit Testing Android ApplicationsUnit Testing Android Applications
Unit Testing Android ApplicationsRody Middelkoop
 
Basic android-ppt
Basic android-pptBasic android-ppt
Basic android-pptSrijib Roy
 
Mobile Application Development With Android
Mobile Application Development With AndroidMobile Application Development With Android
Mobile Application Development With Androidguest213e237
 
What is Integration Testing? | Edureka
What is Integration Testing? | EdurekaWhat is Integration Testing? | Edureka
What is Integration Testing? | EdurekaEdureka!
 
Mobile application testing tutorial
Mobile application testing tutorialMobile application testing tutorial
Mobile application testing tutorialLokesh Agrawal
 
Presentation on mobile app testing
Presentation on mobile app testingPresentation on mobile app testing
Presentation on mobile app testingUttam Shrestha
 
Performance testing presentation
Performance testing presentationPerformance testing presentation
Performance testing presentationBelatrix Software
 

What's hot (20)

Android User Interface
Android User InterfaceAndroid User Interface
Android User Interface
 
Introduction to Android and Android Studio
Introduction to Android and Android StudioIntroduction to Android and Android Studio
Introduction to Android and Android Studio
 
Introduction to Automation Testing
Introduction to Automation TestingIntroduction to Automation Testing
Introduction to Automation Testing
 
Automation Testing With Appium
Automation Testing With AppiumAutomation Testing With Appium
Automation Testing With Appium
 
Introduction to Android development - Presentation
Introduction to Android development - PresentationIntroduction to Android development - Presentation
Introduction to Android development - Presentation
 
Mobile Application Testing
Mobile Application TestingMobile Application Testing
Mobile Application Testing
 
Android Architecture.pptx
Android Architecture.pptxAndroid Architecture.pptx
Android Architecture.pptx
 
architecture of mobile software applications
architecture of mobile software applicationsarchitecture of mobile software applications
architecture of mobile software applications
 
Mobile Application Testing
Mobile Application TestingMobile Application Testing
Mobile Application Testing
 
Mobile testing practices
Mobile testing practicesMobile testing practices
Mobile testing practices
 
Unit Testing Android Applications
Unit Testing Android ApplicationsUnit Testing Android Applications
Unit Testing Android Applications
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
Software Testing
Software TestingSoftware Testing
Software Testing
 
Basic android-ppt
Basic android-pptBasic android-ppt
Basic android-ppt
 
Testing fundamentals
Testing fundamentalsTesting fundamentals
Testing fundamentals
 
Mobile Application Development With Android
Mobile Application Development With AndroidMobile Application Development With Android
Mobile Application Development With Android
 
What is Integration Testing? | Edureka
What is Integration Testing? | EdurekaWhat is Integration Testing? | Edureka
What is Integration Testing? | Edureka
 
Mobile application testing tutorial
Mobile application testing tutorialMobile application testing tutorial
Mobile application testing tutorial
 
Presentation on mobile app testing
Presentation on mobile app testingPresentation on mobile app testing
Presentation on mobile app testing
 
Performance testing presentation
Performance testing presentationPerformance testing presentation
Performance testing presentation
 

Similar to Android testing

Testing Android Application, Droidcon Torino
Testing Android Application, Droidcon TorinoTesting Android Application, Droidcon Torino
Testing Android Application, Droidcon TorinoPietro Alberto Rossi
 
2.Android App Development_ Types of Automated Unit Tests.pdf
2.Android App Development_ Types of Automated Unit Tests.pdf2.Android App Development_ Types of Automated Unit Tests.pdf
2.Android App Development_ Types of Automated Unit Tests.pdfBelayet Hossain
 
Test automationslides
Test automationslidesTest automationslides
Test automationslidesUMA MAHESWARI
 
DEPLOYMENT OF CALABASH AUTOMATION FRAMEWORK TO ANALYZE THE PERFORMANCE OF AN ...
DEPLOYMENT OF CALABASH AUTOMATION FRAMEWORK TO ANALYZE THE PERFORMANCE OF AN ...DEPLOYMENT OF CALABASH AUTOMATION FRAMEWORK TO ANALYZE THE PERFORMANCE OF AN ...
DEPLOYMENT OF CALABASH AUTOMATION FRAMEWORK TO ANALYZE THE PERFORMANCE OF AN ...Journal For Research
 
A guide to Android automated testing
A guide to Android automated testingA guide to Android automated testing
A guide to Android automated testingjotaemepereira
 
Automation Proposal_V1.0
Automation Proposal_V1.0Automation Proposal_V1.0
Automation Proposal_V1.0Dao Nhỏ
 
Building And Executing Test Cases with Appium and Various Test Frameworks.pdf
Building And Executing Test Cases with Appium and Various Test Frameworks.pdfBuilding And Executing Test Cases with Appium and Various Test Frameworks.pdf
Building And Executing Test Cases with Appium and Various Test Frameworks.pdfpCloudy
 
Android automation tools
Android automation toolsAndroid automation tools
Android automation toolsSSGMCE SHEGAON
 
Android testing
Android testingAndroid testing
Android testingBitbar
 
Mobile automation testing with selenium and appium
Mobile automation testing with selenium and appiumMobile automation testing with selenium and appium
Mobile automation testing with selenium and appiumBugRaptors
 
Open Source Software Testing Tools
Open Source Software Testing ToolsOpen Source Software Testing Tools
Open Source Software Testing ToolsVaruna Harshana
 
Honeydew: a Ruby driver for UIAutomator which enables automated testing of An...
Honeydew: a Ruby driver for UIAutomator which enables automated testing of An...Honeydew: a Ruby driver for UIAutomator which enables automated testing of An...
Honeydew: a Ruby driver for UIAutomator which enables automated testing of An...Thiago Ghisi
 
Automated Testing: An Edge Over Manual Software Testing
Automated Testing: An Edge Over Manual Software TestingAutomated Testing: An Edge Over Manual Software Testing
Automated Testing: An Edge Over Manual Software Testingijtsrd
 
Lijie xia lx223809 monkeyrunner
Lijie xia lx223809 monkeyrunnerLijie xia lx223809 monkeyrunner
Lijie xia lx223809 monkeyrunnerLijie Xia
 
Ian Sommerville, Software Engineering, 9th EditionCh 8
Ian Sommerville,  Software Engineering, 9th EditionCh 8Ian Sommerville,  Software Engineering, 9th EditionCh 8
Ian Sommerville, Software Engineering, 9th EditionCh 8Mohammed Romi
 

Similar to Android testing (20)

Testing Android Application, Droidcon Torino
Testing Android Application, Droidcon TorinoTesting Android Application, Droidcon Torino
Testing Android Application, Droidcon Torino
 
2.Android App Development_ Types of Automated Unit Tests.pdf
2.Android App Development_ Types of Automated Unit Tests.pdf2.Android App Development_ Types of Automated Unit Tests.pdf
2.Android App Development_ Types of Automated Unit Tests.pdf
 
Test automationslides
Test automationslidesTest automationslides
Test automationslides
 
DEPLOYMENT OF CALABASH AUTOMATION FRAMEWORK TO ANALYZE THE PERFORMANCE OF AN ...
DEPLOYMENT OF CALABASH AUTOMATION FRAMEWORK TO ANALYZE THE PERFORMANCE OF AN ...DEPLOYMENT OF CALABASH AUTOMATION FRAMEWORK TO ANALYZE THE PERFORMANCE OF AN ...
DEPLOYMENT OF CALABASH AUTOMATION FRAMEWORK TO ANALYZE THE PERFORMANCE OF AN ...
 
A guide to Android automated testing
A guide to Android automated testingA guide to Android automated testing
A guide to Android automated testing
 
Testing concepts
Testing conceptsTesting concepts
Testing concepts
 
Automation Proposal_V1.0
Automation Proposal_V1.0Automation Proposal_V1.0
Automation Proposal_V1.0
 
Building And Executing Test Cases with Appium and Various Test Frameworks.pdf
Building And Executing Test Cases with Appium and Various Test Frameworks.pdfBuilding And Executing Test Cases with Appium and Various Test Frameworks.pdf
Building And Executing Test Cases with Appium and Various Test Frameworks.pdf
 
Android automation tools
Android automation toolsAndroid automation tools
Android automation tools
 
Android testing
Android testingAndroid testing
Android testing
 
Mobile automation testing with selenium and appium
Mobile automation testing with selenium and appiumMobile automation testing with selenium and appium
Mobile automation testing with selenium and appium
 
Open Source Software Testing Tools
Open Source Software Testing ToolsOpen Source Software Testing Tools
Open Source Software Testing Tools
 
SDET UNIT 4.pptx
SDET UNIT 4.pptxSDET UNIT 4.pptx
SDET UNIT 4.pptx
 
Honeydew: a Ruby driver for UIAutomator which enables automated testing of An...
Honeydew: a Ruby driver for UIAutomator which enables automated testing of An...Honeydew: a Ruby driver for UIAutomator which enables automated testing of An...
Honeydew: a Ruby driver for UIAutomator which enables automated testing of An...
 
Robotium
RobotiumRobotium
Robotium
 
Automated Testing: An Edge Over Manual Software Testing
Automated Testing: An Edge Over Manual Software TestingAutomated Testing: An Edge Over Manual Software Testing
Automated Testing: An Edge Over Manual Software Testing
 
Espresso
EspressoEspresso
Espresso
 
Lijie xia lx223809 monkeyrunner
Lijie xia lx223809 monkeyrunnerLijie xia lx223809 monkeyrunner
Lijie xia lx223809 monkeyrunner
 
Ian Sommerville, Software Engineering, 9th EditionCh 8
Ian Sommerville,  Software Engineering, 9th EditionCh 8Ian Sommerville,  Software Engineering, 9th EditionCh 8
Ian Sommerville, Software Engineering, 9th EditionCh 8
 
Automation using Appium
Automation using AppiumAutomation using Appium
Automation using Appium
 

Recently uploaded

Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 

Recently uploaded (20)

Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 

Android testing

  • 1. Android Application Testing TANJINA ISLAM linkedin.com/in/tanjinaislam
  • 2. Agenda/Outline/Overview  Testing Approach  Android testing framework  Android The Testing API  Android testing tools  Different automated testing frameworks
  • 3. Testing Approach  UNIT TESTING  INTEGRATION TESTING  MANUAL TESTING  AUTOMATED TESTING
  • 4. Unit Testing  tests only the functionality of a certain component such as a method (function) in a class, with all dependencies mocked up  tests tend to be simpler and faster than integration tests  also known as local tests  run on a local JVM on the development machine instead of the Android Runtime  the execution speed of the unit test is very fast compared to tests which require the Android system  unit tests are executed against a modified version of the android.jar which allows you to mocking libraries, like Mockito
  • 6. Integration Testing  tests more than one component and how different pieces of the system work together  requires resources like database instances and hardware to be allocated for them  test many methods and may interact with dependencies like Databases or Web Services
  • 7. Unit Testing Vs. Integration Testing  Let's, for example, assume a button in an Android activity is used to start another activity. A unit test would determine if the corresponding intent was issued, not if the second activity was started.  An integration test would also check if the activity was correctly started.
  • 8. Manual Testing  Requires Human interaction  Tool : Human being
  • 9. Automated Testing Frameworks  Robotium  Espresso  uiautomator  Robolectric  Calabash  Appium  No Human Interactions  Lots of Frameworks to automate testing
  • 10. Automated Testing Frameworks  most popular approaches used for automated Android testing:  Google’s Android Testing Framework- This is the framework included as part of the platform  Robotium - Black box integration testing for Android  Robolectric - Unit tests that run outside the emulator making the tests very fast
  • 11. Android Testing Framework  An Integral part of the development environment  Assist on testing every aspect of application from unit testing to framework
  • 12. Categories of Android Tests  Testing for Android can be classified into:  Local tests - tests which can run on the JVM  Instrumented tests - tests which require the Android system  If possible, you should prefer to use local tests as the test execution is much faster compared to the time required to deploy and run the test on an Android device
  • 13. Android The Testing API  The Android testing API is based on the JUnit API and extended with a instrumentation framework and Android-specific testing classes.  Junit  Instrumentation  TestCase Classes  AndroidTestCase  Component-specific test cases  ApplicationTestCase  InstrumentationTestCase  Assertion classes  Mock object classes  Contexts for testing
  • 14. Android Testing Framework  Key Features of Testing Framework  test suites are based on Junit  test suites are contained in test packages similar to main application packages  The SDK also provides  monkeyrunner, an API for testing devices with Python programs  UI/Application Exerciser Monkey, a command-line tool for stress-testing UIs by sending pseudo-random events to a device  use plain JUnit to test a class that doesn't call the Android API  use Android's JUnit extensions to test Android components
  • 15. Android Testing Tools  Testing Support Library  This library provides a set of APIs that helps to build and run test code for app  The Android Testing Support Library includes the following test automation tools:  AndroidJUnitRunner: JUnit 4-compatible test runner for Android  Espresso: UI testing framework; suitable for functional UI testing within an app  UI Automator: UI testing framework; suitable for cross-app functional UI testing across system and installed apps
  • 16. Android Testing Tools  Testing Support Library  Monkey  is a command-line tool  a program that runs on emulator or device  generates pseudo-random streams of user events (such as clicks, touches, or gestures, as well as a number of system-level events) and sends them into system  acts as a stress test on the application, in a random yet repeatable manner  watches the system under test
  • 17. Android Testing Tools  Testing Support Library  monkeyrunner  provides an API for writing programs that control an Android device or emulator from outside of Android code  monkeyrunner tool provides these unique features for Android testing: Multiple device control, Functional testing, Regression testing, Extensible automation  The monkeyrunner tool uses Jython  Jython allows the monkeyrunner API to interact easily with the Android framework
  • 18. Android Testing Tools  Testing Support Library  monkeyrunner  monkeyrunner API is contained in three modules : MonkeyRunner, MonkeyDevice and MonkeyImage  it does not import these modules automatically  To import a module, use the Python from statement: from com.android.monkeyrunner import <module>
  • 19. How does Android Test Framework works  is based on JUnit  test tools are used to load the test package and the application under test  after loading package and application test tools execute an Android-specific test runner  Test cases are run by a test runner class that loads the test case class, setups, runs, and tears down each test.  InstrumentationTestRunner is the primary Android test runner class.
  • 20. Robotium  is an open source library extending JUnit with plenty of useful methods for Android UI testing  require the application to be running on emulator/device  provides powerful and robust automatic black-box test cases for Android apps (native and hybrid)  Inherit from extension of Android class: ActivityInstrumentationTestCase2  Uses “Solo” class to interact with your UI  Robotium Recorder for capturing test output and screenshots
  • 21. Robotium  The framework handles multiple Android activities automatically.  Minimal time needed to write solid test cases.  Readability of test cases is greatly improved, compared to standard instrumentation tests.  Test cases are more robust due to the run-time binding to UI components.  Integrates smoothly with Maven, Gradle or Ant to run tests as part of continuous integration.  Relatively slow
  • 23. Espresso  latest Android test automation framework of Google  API is small, predictable, easy to learn and built on top of the Android instrumentation framework  Espresso tests can run on devices running Android 2.2 (API level 8) and higher  we can write concise and reliable Android UI tests within a single target app  is an instrumentation-based API and works with the AndroidJUnitRunner test runner  Safer synchronization and thread handling  The syntax is also a lot cleaner  tests run optimally fast! Leave your waits, syncs, sleeps, and polls behind  does not have support for webviews
  • 24. Espresso  Espresso is built up from 3 major components :  ViewMatchers – allows you to locate a view in the current view hierarchy [“find something“]  ViewActions – allows you to interact with views [“do something“]  ViewAssertions – allows you to assert the state of a view [“check something“]  To avoid flakiness Turn off animations on testing device
  • 26. Robotium Vs. Espresso  The major advances in Espresso over Robotium: 1. Synchronization. 2. API. 3. Clear failure information.
  • 27. Espresso Vs. Robotium  Espresso test run is in sync with the UI thread and does not rely on sleep/poll mechanisms but is rather event driven  Espresso is much faster than Robotium, but only works on some SDK versions.  More robust and extendable  Tightly coupled with Android  Example: ViewMatcher  Custom Exception Handling  Espresso has a small, well-defined and predictable API, which is open to customization  Robotium attempts to address thread safety with sleep/retry mechanisms, which makes it unreliable and slower than necessary  Easier to use, Very stable  prior versions of Robotium suffered from inconsistent failure handling  In Robotium's API, it is expected to choose from 30+ click methods  Robotium exposes dangerous methods like getCurrentActivity and getView, which allow you to operate on objects outside of the main thread
  • 28. uiautomator  Can Test UI of native Android apps on one or more devices  perform interactions on user apps and system apps  is an instrumentation-based API and works with the AndroidJUnitRunner test runner  Requires Android 4.3 (API level 18) or higher  is well-suited for writing black box-style automated tests  APIs interact with visible elements on a device, regardless of which Activity is in focus  runs JUnit test cases with special privileges, which means test cases can span across different processes.  doesn’t support webview, with no way to directly access Android objects.
  • 30. Espresso Vs. uiautomotor  Testing UI for a Single App:  checks that the target app returns the correct UI output in response to user interactions in the app’s activities.  Espresso framework is used to simulate user actions programmatically and test complex intra-app user interactions.  Testing UI for Multiple Apps:  verifies the correct behavior of interactions between different user apps or between user apps and system apps.  UI Automator framework is used to support cross-app interactions.
  • 31. Robolectric  Robolectric is a unit test framework  lets you run your tests inside the JVM  Doesn’t require emulator/Device to run test  Fastest testing suite; reduces test cycles from minutes to seconds  No Mocking Framework is needed  does not work for every case and only supports unit tests  When tests fall outside its scope then we need to rely on Robotium for complete integration testing
  • 33. Other 3rd Party Frameworks  Selendroid http://selendroid.io/  Testdroid http://testdroid.com/  Appium  Calabash