Android Test Pyramid - Ágiles 2013

30
Test Pyramid in an Android Agile Project How to balance your android test suite to have a good feedback, from units to functionals. Lima, 2013 PORTELA PAMELA

description

How to balance your android test suite to have a good feedback, from units to functionals.

Transcript of Android Test Pyramid - Ágiles 2013

Page 1: Android Test Pyramid - Ágiles 2013

Test Pyramidin an

AndroidAgile Project

How to balance your android test suite to have a good feedback, from units to functionals.

Lima, 2013

PORTELAPAMELA

Page 2: Android Test Pyramid - Ágiles 2013

Tests, seriously? It’s a mobile app..[ ]

Page 3: Android Test Pyramid - Ágiles 2013

Shared codebases

15+

Page 4: Android Test Pyramid - Ágiles 2013

Devs, QAs and Ops

40+

Page 5: Android Test Pyramid - Ágiles 2013

http://martinfowler.com/bliki/TestPyramid.html

Page 6: Android Test Pyramid - Ágiles 2013

6

Unit Test

Verify small pieces individually

Run fast

Run a lot of times during development

Feedback instantly

Page 7: Android Test Pyramid - Ágiles 2013

Feedback

Page 8: Android Test Pyramid - Ágiles 2013

Android? It’s Java, let’s TDD.

Page 9: Android Test Pyramid - Ágiles 2013

9

Android TDD

java.lang.RuntimeException: Stub!

Android SDK classes are not trivial

eyes on docs

huge API

Page 10: Android Test Pyramid - Ágiles 2013

test object

result()

assert(expected, obj.result())

Humm, I’ve seen that..

The ‘2 + 2 = 4’ example!

Page 11: Android Test Pyramid - Ágiles 2013

the object u’re looking at

dependencies

Page 12: Android Test Pyramid - Ágiles 2013

getData()

saveSomething()

verify(mock).saveSomething()

when(stub.getData()).thenReturn(data)

Page 13: Android Test Pyramid - Ágiles 2013

http://martinfowler.com/articles/mocksArentStubs.html

mockstub

double

Page 14: Android Test Pyramid - Ágiles 2013

Unit Testswith

Dependency injection

Roboguice

Robolectric

jUnit

DI

Mocks

Android Shadows

@Test

Page 15: Android Test Pyramid - Ágiles 2013

Functional Test

UI testing [with full stack]

Tests user flow

BDD, ATDD

Feedback after a coffee

business likes that ;)

sounds perfect

*not a strict definition

Page 16: Android Test Pyramid - Ágiles 2013

Cucumber

Honeydew

wraps UIAutomator

step definitions in Ruby

+=]

github.com/amplify-education/honeydew

Page 17: Android Test Pyramid - Ágiles 2013

Cucumber feature file

Page 18: Android Test Pyramid - Ágiles 2013

Honeydew steps

Page 19: Android Test Pyramid - Ágiles 2013

Cool.. write as much user-like tests as you can.. PERFECT!![ ]

Page 20: Android Test Pyramid - Ágiles 2013

Flaky

Slow

Costy

Page 21: Android Test Pyramid - Ágiles 2013

Feedback

Page 22: Android Test Pyramid - Ágiles 2013

some UI tests

Page 23: Android Test Pyramid - Ágiles 2013

Where are you?

Page 24: Android Test Pyramid - Ágiles 2013

http://fabiopereira.me/blog/2012/03/18/introducing-depth-of-test-dot/

Page 25: Android Test Pyramid - Ágiles 2013

external services

backend

libs

Page 26: Android Test Pyramid - Ágiles 2013

API contracts validation

PACTO

https://github.com/thoughtworks/pacto

Page 27: Android Test Pyramid - Ágiles 2013

Annnnd.. the manual tests?[ ]

Page 28: Android Test Pyramid - Ágiles 2013
Page 29: Android Test Pyramid - Ágiles 2013
Page 30: Android Test Pyramid - Ágiles 2013

Thank you! ;)

PORTELA@rafaelportela [email protected]

PAMELA@[email protected]

Questions?

Feedback?

A beer?