Suche senden
Hochladen
Introduction to Robotium
•
2 gefällt mir
•
2,938 views
A
alii abbb
Folgen
Melden
Teilen
Melden
Teilen
1 von 34
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Eclipse 40 Labs- Eclipse Summit Europe 2010
Eclipse 40 Labs- Eclipse Summit Europe 2010
Lars Vogel
2012 java one-con3648
2012 java one-con3648
Eing Ong
Engineering and Industrial Mobile Application (APP) Development
Engineering and Industrial Mobile Application (APP) Development
Living Online
Robotium Tutorial
Robotium Tutorial
Mobile March
Robotium - sampath
Robotium - sampath
Sampath Muddineni
Mobile Test Automation
Mobile Test Automation
Lee Barnes
Advanced Coded UI Testing
Advanced Coded UI Testing
Shai Raiten
Different Android Test Automation Frameworks - What Works You the Best?
Different Android Test Automation Frameworks - What Works You the Best?
Bitbar
Empfohlen
Eclipse 40 Labs- Eclipse Summit Europe 2010
Eclipse 40 Labs- Eclipse Summit Europe 2010
Lars Vogel
2012 java one-con3648
2012 java one-con3648
Eing Ong
Engineering and Industrial Mobile Application (APP) Development
Engineering and Industrial Mobile Application (APP) Development
Living Online
Robotium Tutorial
Robotium Tutorial
Mobile March
Robotium - sampath
Robotium - sampath
Sampath Muddineni
Mobile Test Automation
Mobile Test Automation
Lee Barnes
Advanced Coded UI Testing
Advanced Coded UI Testing
Shai Raiten
Different Android Test Automation Frameworks - What Works You the Best?
Different Android Test Automation Frameworks - What Works You the Best?
Bitbar
Modeveast Appcelerator Presentation
Modeveast Appcelerator Presentation
Aaron Saunders
Is TDD dead or alive?
Is TDD dead or alive?
Luca Milanesio
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
Bitbar
Getting Started with XCTest and XCUITest for iOS App Testing
Getting Started with XCTest and XCUITest for iOS App Testing
Bitbar
Rockstar Android Testing (Mobile TechCon Munich 2014)
Rockstar Android Testing (Mobile TechCon Munich 2014)
Danny Preussler
Guide to the jungle of testing frameworks
Guide to the jungle of testing frameworks
Tomáš Kypta
Utilizando expresso uiautomator na automacao de testes em apps android
Utilizando expresso uiautomator na automacao de testes em apps android
tdc-globalcode
YouTube APIs presentation at Facultad de Ciencias, Universidad Nacional Autón...
YouTube APIs presentation at Facultad de Ciencias, Universidad Nacional Autón...
Jarek Wilkiewicz
Android - Open Source Bridge 2011
Android - Open Source Bridge 2011
sullis
Mini training - Moving to xUnit.net
Mini training - Moving to xUnit.net
Betclic Everest Group Tech Team
Unit Test Android Without Going Bald
Unit Test Android Without Going Bald
David Carver
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
ICS
Test studio
Test studio
Khizra Sammad
Effective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and Dapper
Mike Melusky
Breaking Dependencies to Allow Unit Testing
Breaking Dependencies to Allow Unit Testing
Steven Smith
Best Practices in Widget Development - Examples and Counterexamples
Best Practices in Widget Development - Examples and Counterexamples
ROLE Project
Real World Asp.Net WebApi Applications
Real World Asp.Net WebApi Applications
Effie Arditi
Testing on Android
Testing on Android
Ari Lacenski
Mastering Mobile Test Automation with Appium
Mastering Mobile Test Automation with Appium
Perfecto by Perforce
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Applitools
Weitere ähnliche Inhalte
Ähnlich wie Introduction to Robotium
Modeveast Appcelerator Presentation
Modeveast Appcelerator Presentation
Aaron Saunders
Is TDD dead or alive?
Is TDD dead or alive?
Luca Milanesio
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
Bitbar
Getting Started with XCTest and XCUITest for iOS App Testing
Getting Started with XCTest and XCUITest for iOS App Testing
Bitbar
Rockstar Android Testing (Mobile TechCon Munich 2014)
Rockstar Android Testing (Mobile TechCon Munich 2014)
Danny Preussler
Guide to the jungle of testing frameworks
Guide to the jungle of testing frameworks
Tomáš Kypta
Utilizando expresso uiautomator na automacao de testes em apps android
Utilizando expresso uiautomator na automacao de testes em apps android
tdc-globalcode
YouTube APIs presentation at Facultad de Ciencias, Universidad Nacional Autón...
YouTube APIs presentation at Facultad de Ciencias, Universidad Nacional Autón...
Jarek Wilkiewicz
Android - Open Source Bridge 2011
Android - Open Source Bridge 2011
sullis
Mini training - Moving to xUnit.net
Mini training - Moving to xUnit.net
Betclic Everest Group Tech Team
Unit Test Android Without Going Bald
Unit Test Android Without Going Bald
David Carver
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
ICS
Test studio
Test studio
Khizra Sammad
Effective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and Dapper
Mike Melusky
Breaking Dependencies to Allow Unit Testing
Breaking Dependencies to Allow Unit Testing
Steven Smith
Best Practices in Widget Development - Examples and Counterexamples
Best Practices in Widget Development - Examples and Counterexamples
ROLE Project
Real World Asp.Net WebApi Applications
Real World Asp.Net WebApi Applications
Effie Arditi
Testing on Android
Testing on Android
Ari Lacenski
Mastering Mobile Test Automation with Appium
Mastering Mobile Test Automation with Appium
Perfecto by Perforce
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Applitools
Ähnlich wie Introduction to Robotium
(20)
Modeveast Appcelerator Presentation
Modeveast Appcelerator Presentation
Is TDD dead or alive?
Is TDD dead or alive?
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
LDNSE: Testdroid for Mobile App and Web Testing (London Selenium Meetup)
Getting Started with XCTest and XCUITest for iOS App Testing
Getting Started with XCTest and XCUITest for iOS App Testing
Rockstar Android Testing (Mobile TechCon Munich 2014)
Rockstar Android Testing (Mobile TechCon Munich 2014)
Guide to the jungle of testing frameworks
Guide to the jungle of testing frameworks
Utilizando expresso uiautomator na automacao de testes em apps android
Utilizando expresso uiautomator na automacao de testes em apps android
YouTube APIs presentation at Facultad de Ciencias, Universidad Nacional Autón...
YouTube APIs presentation at Facultad de Ciencias, Universidad Nacional Autón...
Android - Open Source Bridge 2011
Android - Open Source Bridge 2011
Mini training - Moving to xUnit.net
Mini training - Moving to xUnit.net
Unit Test Android Without Going Bald
Unit Test Android Without Going Bald
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
[Webinar] Qt Test-Driven Development Using Google Test and Google Mock
Test studio
Test studio
Effective .NET Core Unit Testing with SQLite and Dapper
Effective .NET Core Unit Testing with SQLite and Dapper
Breaking Dependencies to Allow Unit Testing
Breaking Dependencies to Allow Unit Testing
Best Practices in Widget Development - Examples and Counterexamples
Best Practices in Widget Development - Examples and Counterexamples
Real World Asp.Net WebApi Applications
Real World Asp.Net WebApi Applications
Testing on Android
Testing on Android
Mastering Mobile Test Automation with Appium
Mastering Mobile Test Automation with Appium
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Introduction to Robotium
1.
An Intertech Course Robotium
Tutorial Mobile March March 21, 2013 By Jim White, Intertech, Inc..
2.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 2 Stop by Intertech’s booth for a chance to win FREE Training. Or go to bit.ly.com/intertech-login Slides & demo code available at intertech.com/blog
3.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 3 Session Agenda • Robotium… • What is it? • Where to get it and how to set it up • “Normal” Android unit testing background • Why Robotium is needed • Using Robotium • Robotium Tips/Tricks/Issues • Complimentary tools • Further Resources • Q&A
4.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 4 Purpose • The main point/purpose to my talk… • There are wonderful test/QA tools available for Android! • There are no excuses for skipping unit testing in Android!
5.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 5 Jim White Intro • Intertech Partner, • Dir. of Training, • Instructor, • Consultant • Co-author, J2ME, Java in Small Things (Manning) • Device developer since before phones were “smart” • Java developer when “spring” and “struts” described your stride • Occasional beer drinker
6.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 6 Robotium – what is it? • An open source test framework • Used to write black or white box tests (emphasis is on black box) • White box testing – testing software that knows and tests the internal structures or workings of an application • Black box testing – testing software functionality without knowledge of an application (perhaps where the source code is not even available) • Tests can be executed on an Android Virtual Device (AVD) or real device • Built on Java (and Android) and JUnit (the Android Test Framework) • In fact, it may be more appropriate to call Robotium an extension to the Android test framework
7.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 7 Robotium Project Setup • Prerequisites • Install and setup JDK • Install and setup Eclipse (optional) • Install and setup Android Standard Development Kit (SDK) • Supports Android 1.6 (API level 4) and above • Install and setup Android Development Tools (ADT) for Eclipse (optional) • Create Android AVD or attach device by USB • Create an Android Test Project • Download Robotium JAR and add to project classpath • robotium-solo-X.X.jar (version 3.6 the latest as of this writing) • From code.google.com/p/robotium/downloads/list
8.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 8 Background - Android JUnit Testing • Android testing is based on JUnit • You create test suites, classes (test cases), methods • Organize tests into a Android Test project • Android API supports JUnit 3 code style – not JUnit 4! • No annotations • Old JUnit naming conventions • Test case classes can extend good-old-fashion JUnit3 TestCase • To call Android APIs, base class must extend AndroidTestCase • Use JUnit Assert class to check/display test results • Execute tests using an SDK provided InstrumentationTestRunner • android.test.InstrumentationTestRunner • Usually handled automatically via IDE
9.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 9 Android Test Architecture • Architecturally, the unit testing project and app project run on the same JVM (i.e. DVM). Test case classes, instrumentation, JUnit, mock objects, etc.
10.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 10 Robotium Project Setup • Add Robotium JAR to the Java Build Path • Put Robotium in the build path order.
11.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 11 Android JUnit Project Setup Demo
12.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 12 The “App” Used To Demo Today • Want to make sure data is entered. • Want to make sure data is valid. • Age is less than 122 • Zip has 5 characters • Make sure a role is clicked. • Make sure clear does clear the fields. • Etc.
13.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 13 Example JUnit Test (Continued) public class TestDataCollection extends ActivityInstrumentationTestCase2<DataCollectionActivity> { DataCollectionActivity activity; public TestDataCollection() { super(DataCollectionActivity.class); } @Override public void setUp() throws Exception { super.setUp(); activity = getActivity(); } @Override protected void tearDown() throws Exception { activity.finish(); super.tearDown(); } Extends AndroidTestCase – provides functionality for testing a single Activity. Need to associate it to an Activity type (like DataCollectionActivity) Test case initialization method (just like JUnit 3). Test case tear down method (just like JUnit 3).
14.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 14 Example JUnit Test (Continued) public void testCheckNameClear() { final EditText name = (EditText) activity.findViewById(R.id.nameEdit); activity.runOnUiThread(new Runnable() { public void run() { name.requestFocus(); } }); sendKeys("J I M"); Button button = (Button) activity.findViewById(R.id.clearButton); TouchUtils.clickView(this, button); assertTrue("First name field is not empty.", name.getText().toString().equals("")); } } Grab widgets by their Android ID. Test methods must begin with “test”. UI adjustments/ work must be done on UI thread TestCase, TouchUtils provide limited UI maneuvering, but again requires deep knowledge of the UI details Normal assert methods to check results.
15.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 15
16.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 16 Why Android JUnit Isn’t Enough • Requires deep knowledge of widgets • Widget IDs • Widget Properties • What has focus • Order of widgets • Etc. • Often requires deep knowledge of Android internals • Especially around menus, dialogs, etc. • Makes for brittle unit tests • As the UI changes, the test often must change dramatically. • Poor instrumentation • Instrumentation is a feature in which specific monitoring of the interactions between an application and the system are made possible. • Use of runOnUIThread to execute UI work that isn’t covered by TouchUtils or TestCase class.
17.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 17 Example Robotium • Use Robotium tests in JUnit test class • Same code as in TestDataCollectionActivity above… • With a few additions/changes. private Solo solo; @Override public void setUp() throws Exception { super.setUp(); activity = getActivity(); solo= new Solo(getInstrumentation(), getActivity()); } Add a Solo member variable and initialize it during setUp( ).
18.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 18 Example Robotium (Continued) • The new test method – greatly simplified via Robotium! public void testCheckNameClear() { solo.enterText(0, "Jim"); // 0 is the index of the EditText field solo.clickOnButton("Clear"); assertTrue("First name field is not empty.",solo.getEditText(0). getText().toString().equals("")); } Solo methods allow widgets to be selected and interacted with.
19.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 19
20.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 20 Robotium Solo API • Robotium is all baked into one class - Solo – with many methods: • clickX methods: clickOnButton, clickOnImage, clickOnText,… • clickLongX methods: clickLongInList, clickLongOnScreen, clickLongOnText,… • enterText • drag • getX methods: getButton, getCurrentActivity, getImage, getEditText, … • goBack • isX methods: isCheckBoxChecked, isRadioButtonChecked, isSpinnerTextSelected, isTextChecked,… • pressX methods: pressMenuItem, pressMenuItem, pressSpinnerItem, … • scrollX methods: scrollToTop, scrollToBottom, … • searchX methods: searchButton, searchEditText, searchText, … • waitForX methods: waitForActivity, waitForText, …
21.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 21 Android Robotium Demo Demo
22.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 22 Tips & Tricks • Robotium (and all JUnit tests) operate in the same process (DVM) as the original app • Robotium only works with the activities and views within the defined app • For example: Can’t use intent to launch another app and test activity work from that app • The popup keyboard is accomplished with a bitmap in Android • Robotium (or any unit test software) doesn’t see the “keys” as buttons or anything.
23.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 23 Tips & Tricks (Continued) • Use waitFor methods liberally. • Especially if new screen opens or changes to what is displayed are occurring. • The waitFor methods tell Robotium to wait for a condition to happen before the execution continues. public void testGoodLogin() { solo.enterText(0, “username"); solo.enterText(1, “password"); String label = res.getString(R.string.login_button_label); solo.clickOnButton(label); String title = res.getString(R.string.title_activity_systemv); solo.waitForText(title); solo.assertCurrentActivity("systemv", SystemVActivity.class); solo.getCurrentActivity().finish(); }
24.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 24 Tips & Tricks (Continued) • RadioButtons are Buttons, EditText are Text, etc… • Getting the proper widget by index can be more difficult • Use of index also makes the test case more brittle due to potential layout changes • Consider clickOnButton(“Clear”) vs. clickOnButton(6)
25.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 25 Tips & Tricks (Continued) • Resources in Android are at a premium (especially when test cases and App code are running in same DVM). • Use solo.finishOpenedActivities() in your tearDown method. • It closes all the opened activities. • Frees resources for the next tests • Robotium has some difficulty with animations • Robotium doesn’t work with status bar notifications
26.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 26 Tips & Tricks – Black Box Testing • Black Box Testing (when all you have is the APK file) is a little more tricky. • Recall in the demo, the test application wants the main activity name? public TestDataCollectionActivity() { super(DataCollectionActivity.class); } • You may not know this for a 3rd party/black box app. • You can get the activity name by loading the APK to an AVD or device, running it, and watching the logcat. • The APK file has to have the same certificate signature as the test project. • Probably have to delete the signature and then resign the APK with the Android debug key signature. • It’s easier than it sounds. See referenced document for help.
27.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 27 Android Robotium Black Box Demo Black Box Demo
28.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 28 Robotium Additional Features • Robotium can automatically take screenshots • solo.takeScreenshot( ) • Robotium can be run from the command line (using adb shell) • adb shell am instrument -w com.android.foo/android.test.InstrumentationTestRunner • Robotium can test with localized strings • solo.getString(localized_resource_string_id) • Code coverage is a bit lackluster at this time • Can be done with special ant task and command line tools • Robotium does not work on Flash or Web apps.
29.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 29 Complimentary Tools • Robotium Testroid Recorder • Record actions to generate Android JUnit/Robotium test cases • Run tests on 180 devices “in the cloud” • Testdroid.com • Commercial product (50 runs free, $99/month or ¢99/run) • Robotium Remote Control • Allows Robotium test cases to be executed from the JVM (on a PC) • This allows Robotium to work with JUnit 4. • code.google.com/p/robotium/wiki/RemoteControl
30.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 30 Resources • These slides and demo code: intertech.com/blog • Google Robotium site • code.google.com/p/robotium • code.google.com/p/robotium/wiki/RobotiumTutorials • Tutorial Articles/Blog Posts • devblog.xing.com/qa/robotium-atxing/ • www.netmagazine.com/tutorials/automate-your-android-app-testing • robotiumsolo.blogspot.com/2012/12/what-is-robotium.html • www.vogella.com/articles/AndroidTesting/article.html • robotium.googlecode.com/files/RobotiumForBeginners.pdf • excellent article for black box testing when all you have is the APK • Fundamentals of Android Unit Testing • developer.android.com/tools/testing/testing_android.html
31.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 31 Q&A • Questions – you got’em, I want’em
32.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 32 Award-Winning Training and Consulting. Visit www.Intertech.com for complete details.
33.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 33 Intertech offers Mobile Training On: • Android • HTML5 • iOS • Java ME • jQuery • Windows Phone Visit ww.Intertech.com for complete course schedule.
34.
Course Name Copyright ©
Intertech, Inc. • www.Intertech.com • 800-866-9884 Slide 34 Stop by Intertech’s booth for a chance to win FREE Training. Or go to bit.ly.com/intertech-login
Jetzt herunterladen