System Testing with Robotium2. © mutualmobile
WHO AM I?
Elliott Chenger
Android Engineer @ Mutual Mobile
@echenger erchenger
• Likes
• Long walks on the
beach
• Everything Android
• Ice Hockey
• Auburn
• Cars
• Dislikes
• the F word
(fragmentation)
• when carriers delay
software updates
• King Joffery from
GOT
• I-35 traffic
3. © mutualmobile
AGENDA
• Brief overview of different types
ofTesting
• What value does system testing
add?
• Different tools for system testing
• What we chose and why.
• Do’s and Don’ts to system
testing
• How to write system tests
• Live Demo
• Q&A
4. © mutualmobile
DIFFERENTTYPES OFTESTING
White Box
• Tests code for precision and
correctness
• Tester understands and is testing
internal structure and design of
software
• Generally Unit and Integration testing
Black Box
• Software internal structure is not
known to the tester
• Mainly done through acceptance and
system testing
• Tests are based on requirements
10. © mutualmobile
WHY WE CHOSE ROBOTIUM?
• Written in Java and structured like JUnit
tests
• Bootstrapping was easy
• Allows us to write tests that mimic
what a human does
• Strong community support
11. © mutualmobile
PROCESS/ACTIVITIES
• The project kicks off and a full audit of all current system testing tools is performed.
• After a month of reviewing various tools Robotium becomes the clear selection among all of the
stakeholders.
• A machine was purchased to be used as our testing server.
• The script and boiler plate for testing was created.
• Through trial and error our script and the server became more stable.
• We switched from emulators to physical devices and we decided that Flow testing will be more
beneficial instead of screen testing.
12. © mutualmobile
• Worked with QA to identify how we are going to capture tests and
communicate what should and shouldn’t be tested.
• We started a pilot program for Robotium on two major projects.
• Much was learned about how we actually write these tests.
• Now we are going through the process of educating and advocating our
department to add system testing into our normal development process
16. © mutualmobile
WRITETESTSTHAT
MIMIC A HUMAN
Put yourself in the user’s shoes, don’t get
hung up testing pieces of the UI directly.
Thinking this way makes your tests more
stable and more valuable to QA and your
customer.
17. © mutualmobile
DON’T STRIVE FOR
100% COVERAGE
Strive for good tests, not a certain
quantity of test coverage. Beware of
writing tests just to have tests. Like most
things SystemTesting has a time and a
place.
25. © mutualmobile
SETTING UP ROBOTIUM GENERIC
• Download jar
https://code.google.com/p/robotium/
• Add the jar to your classpath
39. © mutualmobile
BEFORE WE START DO’S AND DON’TS
• DO write tests that mimic a human.
• DO write your tests to encompass the overall acceptance criteria
• Assert DO NOT assume (also follow assertions with detailed error
messages)
• DO NOT depend on time.
Example: Don’t assume a REST call will always take 2 seconds.
40. © mutualmobile
LET’STEST A STORY
• User Story:As a user I would like to be able to login to the app, so that I can see the next
screen
• Acceptance Criteria
• Button for logging in
• A place for the user to enter their name for logging in.
• Once they enter their name and click the log in button they go to the next screen.
• If they don’t enter a name they get an error dialog
53. © mutualmobile
SO FAR
• We have written tests for the happy
path for testing login.
• We have an Activity that has visuals but
nothing else in it.
65. © mutualmobile
NOW
• We have written happy path tests and
they are successful.
• We just finished writing our sad path
tests and they should not pass.
• We have an Activity that has visuals and
some of our interactions but we still
need to code the rest of the sad path
test.
68. © mutualmobile
WHATS NEXT?
• Go explore: https://code.google.com/p/robotium/
• Download the example app code for this presentation:
http://goo.gl/WPkwNE
• Have questions or feedback?
elliott.chenger@mutualmobile.com or @echenger