System Testing with Robotium

69
© mutualmobile SYSTEM TESTING WITH ROBOTIUM Why, What, When, Where and How

description

While Unit and Integration testing in mobile software is a great way to help maintain quality and produce stable software, testing user interaction until more recently has been done solely by humans. System testing for Mobile isn't a new concept and yet is very hard to accomplish. System Testing with Robotium can help Android Developers shorten the feedback loop between QA and will help developers to start thinking the way users will actually use their software. My presentation discusses the why, what, when, where and how of System Testing with Robotium.

Transcript of System Testing with Robotium

Page 1: System Testing with Robotium

© mutualmobile

SYSTEM TESTING WITH ROBOTIUMWhy, What, When, Where and How

Page 2: System Testing with Robotium

© 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

Page 3: System Testing with Robotium

© mutualmobile

AGENDA• Brief overview of different types

of Testing

• 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

Page 4: System Testing with Robotium

© mutualmobile

DIFFERENT TYPES OF TESTINGWhite 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

Page 5: System Testing with Robotium

© mutualmobile

WHAT IS SYSTEM TESTING?

Page 6: System Testing with Robotium

© mutualmobile

SYSTEM TESTING • Subset of Black Box Testing

• Tests software as a whole to make sure it meets specified requirements

• Defined by acceptance criteria

• Mimics the human

Page 7: System Testing with Robotium

© mutualmobile

WHY SHOULD A DEVELOPER WRITE SYSTEM TESTS?

Page 8: System Testing with Robotium

© mutualmobile

Page 9: System Testing with Robotium

© mutualmobile

SYSTEM TESTING TOOLS

• Robotium

• Espresso

• Monkey Talk

• UIAutomator

Page 10: System Testing with Robotium

© 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

Page 11: System Testing with Robotium

© 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.

Page 12: System Testing with Robotium

© 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

Page 13: System Testing with Robotium

© mutualmobile

LESSONS LEARNED

Page 14: System Testing with Robotium

© mutualmobile

AUTOMATELet Continuous Integration systems do

the heavy lifting for you. This will help you catch issues before it gets into QA’s

hands.

Page 15: System Testing with Robotium

© mutualmobile

USE PHYSICAL DEVICES

We have found through testing that Android emulators are simply slow and unreliable. Another benefit is being able

to test on different device subsets.

Page 16: System Testing with Robotium

© mutualmobile

WRITE TESTS THAT 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.

Page 17: System Testing with Robotium

© mutualmobile

DON’T STRIVE FOR 100% COVERAGEStrive for good tests, not a certain

quantity of test coverage. Beware of writing tests just to have tests. Like most things System Testing has a time and a

place.

Page 18: System Testing with Robotium

© mutualmobile

SCREEN TESTING VS

FLOW TESTING

Page 19: System Testing with Robotium

© mutualmobile

SCREEN TESTING

Page 20: System Testing with Robotium

© mutualmobile

FLOW TESTING

Page 21: System Testing with Robotium

© mutualmobile

CODEThe fun part

Page 22: System Testing with Robotium

© mutualmobile

OUR EXAMPLE APP

Page 23: System Testing with Robotium

© mutualmobile

AGENDA• Setting up Robotium in a project

• Organizing your tests

• Boilerplate code

• Writing tests

• Running Tests

• Live Demo

Page 24: System Testing with Robotium

© mutualmobile

SETTING UP ROBOTIUM WITH ECLIPSE• Download jar

https://code.google.com/p/robotium/

Page 25: System Testing with Robotium

© mutualmobile

SETTING UP ROBOTIUM GENERIC

• Download jarhttps://code.google.com/p/robotium/

• Add the jar to your classpath

Page 26: System Testing with Robotium

© mutualmobile

SETTING UP THE MANIFEST

Page 27: System Testing with Robotium
Page 28: System Testing with Robotium
Page 29: System Testing with Robotium
Page 30: System Testing with Robotium

© mutualmobile

BOILER PLATE

Page 31: System Testing with Robotium
Page 32: System Testing with Robotium
Page 33: System Testing with Robotium
Page 34: System Testing with Robotium
Page 35: System Testing with Robotium
Page 36: System Testing with Robotium
Page 37: System Testing with Robotium
Page 38: System Testing with Robotium

© mutualmobile

WRITING YOU FIRST TEST

Page 39: System Testing with Robotium

© 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.

Page 40: System Testing with Robotium

© mutualmobile

LET’S TEST 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

Page 41: System Testing with Robotium
Page 42: System Testing with Robotium
Page 43: System Testing with Robotium
Page 44: System Testing with Robotium
Page 45: System Testing with Robotium
Page 46: System Testing with Robotium
Page 47: System Testing with Robotium
Page 48: System Testing with Robotium
Page 49: System Testing with Robotium
Page 50: System Testing with Robotium
Page 51: System Testing with Robotium
Page 52: System Testing with Robotium
Page 53: System Testing with Robotium

© 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.

Page 54: System Testing with Robotium

© mutualmobile

LET’S NOW RUN THE TESTS

Page 55: System Testing with Robotium
Page 56: System Testing with Robotium
Page 57: System Testing with Robotium
Page 58: System Testing with Robotium

© mutualmobile

NOW CODE YOUR FEATURE TO MAKE THE TESTS GO GREEN

Page 59: System Testing with Robotium
Page 60: System Testing with Robotium
Page 61: System Testing with Robotium

© mutualmobile

NOW WE CAN WRITE SOME SAD PATH TESTS

Page 62: System Testing with Robotium
Page 63: System Testing with Robotium
Page 64: System Testing with Robotium
Page 65: System Testing with Robotium

© 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.

Page 66: System Testing with Robotium

© mutualmobile

NOW CODE YOUR TESTS TO GO GREEN AND YOU ARE DONE!

Page 67: System Testing with Robotium

© mutualmobile

LIVE DEMO

Page 68: System Testing with Robotium

© 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? [email protected] or @echenger

Page 69: System Testing with Robotium

© mutualmobile

Q&A