1. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
Testowanie w systemie Android
Marek Defeci«ski
Mobica oddziaª w Šodzi
Cracow.mobi Conference, 2011
Marek Defeci«ski Testowanie w systemie Android
2. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
Agenda
1 O autorze
2 Wst¦p
3 Troch¦ (mojej) historii
J2ME - przeszªo±¢
Android - tera¹niejszo±¢
4 Testujemy
Podej±cia
Out of the box
Robotium
Robolectric
Inne
Marek Defeci«ski Testowanie w systemie Android
3. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
Kim jestem?
Programista aplikacji mobilnych w rmie Mobica
Prawie 3 lata do±wiadczenia w j2me
Ponad 1 w Androidzie
Chciaªby pisa¢ bloga: Blog programisty Android
blogprogramistyandroid.blogspot.com
Animator JUG Šód¹ info.lodz.jug.pl
Organizator konferencji Mobilization.pl w Šodzi
Marek Defeci«ski Testowanie w systemie Android
4. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
Kim jestem?
Programista aplikacji mobilnych w rmie Mobica
Prawie 3 lata do±wiadczenia w j2me
Ponad 1 w Androidzie
Chciaªby pisa¢ bloga: Blog programisty Android
blogprogramistyandroid.blogspot.com
Animator JUG Šód¹ info.lodz.jug.pl
Organizator konferencji Mobilization.pl w Šodzi
Marek Defeci«ski Testowanie w systemie Android
5. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
Kim jestem?
Programista aplikacji mobilnych w rmie Mobica
Prawie 3 lata do±wiadczenia w j2me
Ponad 1 w Androidzie
Chciaªby pisa¢ bloga: Blog programisty Android
blogprogramistyandroid.blogspot.com
Animator JUG Šód¹ info.lodz.jug.pl
Organizator konferencji Mobilization.pl w Šodzi
Marek Defeci«ski Testowanie w systemie Android
6. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
Kim jestem?
Programista aplikacji mobilnych w rmie Mobica
Prawie 3 lata do±wiadczenia w j2me
Ponad 1 w Androidzie
Chciaªby pisa¢ bloga: Blog programisty Android
blogprogramistyandroid.blogspot.com
Animator JUG Šód¹ info.lodz.jug.pl
Organizator konferencji Mobilization.pl w Šodzi
Marek Defeci«ski Testowanie w systemie Android
7. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
Co teraz robi¦?
Projekt, w którym mnie nie ma
Urz¡dzenie oparte o Android
Dedykowany sprz¦t (nie telefon)
Wspóªpraca z zewn¦trznymi interfejsami (bluetooth, radio,
CAN, rozpoznawanie mowy)
Wspomaganie testowania
Automatyzacja testów (instrumentacja/robotium/junit)
Raportowanie (+timeline)
Integracja z zewn¦trznymi narz¦dziami
Biblioteki wspomagania testów
Marek Defeci«ski Testowanie w systemie Android
8. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
Co teraz robi¦?
Projekt, w którym mnie nie ma
Urz¡dzenie oparte o Android
Dedykowany sprz¦t (nie telefon)
Wspóªpraca z zewn¦trznymi interfejsami (bluetooth, radio,
CAN, rozpoznawanie mowy)
Wspomaganie testowania
Automatyzacja testów (instrumentacja/robotium/junit)
Raportowanie (+timeline)
Integracja z zewn¦trznymi narz¦dziami
Biblioteki wspomagania testów
Marek Defeci«ski Testowanie w systemie Android
9. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
Testowa¢ czy nie testowa¢, o to jest pytanie?
Jednostkowo/Funkcjonalnie/Integracyjne
Manualnie/Automatycznie
Wydajno±ciowo
Nie wa»ne jak, ale wa»ne »eby testowa¢
Marek Defeci«ski Testowanie w systemie Android
10. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
Testowa¢ czy nie testowa¢, o to jest pytanie?
Jednostkowo/Funkcjonalnie/Integracyjne
Manualnie/Automatycznie
Wydajno±ciowo
Nie wa»ne jak, ale wa»ne »eby testowa¢
Marek Defeci«ski Testowanie w systemie Android
11. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
Testowa¢ czy nie testowa¢, o to jest pytanie?
Jednostkowo/Funkcjonalnie/Integracyjne
Manualnie/Automatycznie
Wydajno±ciowo
Nie wa»ne jak, ale wa»ne »eby testowa¢
Marek Defeci«ski Testowanie w systemie Android
12. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
(Potencjalne) zalety
Sprawdzamy poprawno±¢ kodu
Czy robi to co chcemy?
Wykrywamy bª¦dy
Testy to kontrakt na pi±mie
rodzaj dokumentacji (samodokumentuj¡cy si¦ kod)
istniej¡ce testy pozwalaj¡ na wykrycie bª¦dów regresji
Zwi¦kszaj¡ jako±¢ kodu
czy kod jest u»ywalny (ªatwo go testowa¢)?
czy jest moduªowy?
ªatwo si¦ integruje
skutkuje lepszym designem
Marek Defeci«ski Testowanie w systemie Android
13. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
(Potencjalne) zalety
Sprawdzamy poprawno±¢ kodu
Czy robi to co chcemy?
Wykrywamy bª¦dy
Testy to kontrakt na pi±mie
rodzaj dokumentacji (samodokumentuj¡cy si¦ kod)
istniej¡ce testy pozwalaj¡ na wykrycie bª¦dów regresji
Zwi¦kszaj¡ jako±¢ kodu
czy kod jest u»ywalny (ªatwo go testowa¢)?
czy jest moduªowy?
ªatwo si¦ integruje
skutkuje lepszym designem
Marek Defeci«ski Testowanie w systemie Android
14. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
(Potencjalne) zalety
Sprawdzamy poprawno±¢ kodu
Czy robi to co chcemy?
Wykrywamy bª¦dy
Testy to kontrakt na pi±mie
rodzaj dokumentacji (samodokumentuj¡cy si¦ kod)
istniej¡ce testy pozwalaj¡ na wykrycie bª¦dów regresji
Zwi¦kszaj¡ jako±¢ kodu
czy kod jest u»ywalny (ªatwo go testowa¢)?
czy jest moduªowy?
ªatwo si¦ integruje
skutkuje lepszym designem
Marek Defeci«ski Testowanie w systemie Android
15. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
(Potencjalne) zalety
Sprawdzamy poprawno±¢ kodu
Czy robi to co chcemy?
Wykrywamy bª¦dy
Testy to kontrakt na pi±mie
rodzaj dokumentacji (samodokumentuj¡cy si¦ kod)
istniej¡ce testy pozwalaj¡ na wykrycie bª¦dów regresji
Zwi¦kszaj¡ jako±¢ kodu
czy kod jest u»ywalny (ªatwo go testowa¢)?
czy jest moduªowy?
ªatwo si¦ integruje
skutkuje lepszym designem
Marek Defeci«ski Testowanie w systemie Android
16. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
Wady (do wytrenowania)
Wymagaj¡ czasu
na napisanie
na utrzymanie
Wymagaj¡ wi¦cej od programisty
umiej¦tno±ci
dyscypliny
Marek Defeci«ski Testowanie w systemie Android
17. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
Wady (do wytrenowania)
Wymagaj¡ czasu
na napisanie
na utrzymanie
Wymagaj¡ wi¦cej od programisty
umiej¦tno±ci
dyscypliny
Marek Defeci«ski Testowanie w systemie Android
18. O autorze
Wst¦p
Troch¦ (mojej) historii
Testujemy
Wady (do wytrenowania)
Wymagaj¡ czasu
na napisanie
na utrzymanie
Wymagaj¡ wi¦cej od programisty
umiej¦tno±ci
dyscypliny
Marek Defeci«ski Testowanie w systemie Android
19. O autorze
Wst¦p J2ME - przeszªo±¢
Troch¦ (mojej) historii Android - tera¹niejszo±¢
Testujemy
Agenda
1 O autorze
2 Wst¦p
3 Troch¦ (mojej) historii
J2ME - przeszªo±¢
Android - tera¹niejszo±¢
4 Testujemy
Podej±cia
Out of the box
Robotium
Robolectric
Inne
Marek Defeci«ski Testowanie w systemie Android
20. O autorze
Wst¦p J2ME - przeszªo±¢
Troch¦ (mojej) historii Android - tera¹niejszo±¢
Testujemy
Dlaczego byªo tak trudno?
Nie my±lano o testowaniu projektuj¡c technologi¦
brak narz¦dzi
Brak reeksji (java.lang.reect)
Trudno±¢ w automatyzacji
brak narz¦dzi commandline
niestandardowy deployment
Brak klas JAVA SE
Brak mo»liwo±ci komunikacji z urz¡dzeniem
Debugging
wsz¦dzie inaczej
albo w ogóle
Marek Defeci«ski Testowanie w systemie Android
21. O autorze
Wst¦p J2ME - przeszªo±¢
Troch¦ (mojej) historii Android - tera¹niejszo±¢
Testujemy
Dlaczego byªo tak trudno?
Nie my±lano o testowaniu projektuj¡c technologi¦
brak narz¦dzi
Brak reeksji (java.lang.reect)
Trudno±¢ w automatyzacji
brak narz¦dzi commandline
niestandardowy deployment
Brak klas JAVA SE
Brak mo»liwo±ci komunikacji z urz¡dzeniem
Debugging
wsz¦dzie inaczej
albo w ogóle
Marek Defeci«ski Testowanie w systemie Android
22. O autorze
Wst¦p J2ME - przeszªo±¢
Troch¦ (mojej) historii Android - tera¹niejszo±¢
Testujemy
Dlaczego byªo tak trudno?
Nie my±lano o testowaniu projektuj¡c technologi¦
brak narz¦dzi
Brak reeksji (java.lang.reect)
Trudno±¢ w automatyzacji
brak narz¦dzi commandline
niestandardowy deployment
Brak klas JAVA SE
Brak mo»liwo±ci komunikacji z urz¡dzeniem
Debugging
wsz¦dzie inaczej
albo w ogóle
Marek Defeci«ski Testowanie w systemie Android
23. O autorze
Wst¦p J2ME - przeszªo±¢
Troch¦ (mojej) historii Android - tera¹niejszo±¢
Testujemy
Dlaczego byªo tak trudno?
Nie my±lano o testowaniu projektuj¡c technologi¦
brak narz¦dzi
Brak reeksji (java.lang.reect)
Trudno±¢ w automatyzacji
brak narz¦dzi commandline
niestandardowy deployment
Brak klas JAVA SE
Brak mo»liwo±ci komunikacji z urz¡dzeniem
Debugging
wsz¦dzie inaczej
albo w ogóle
Marek Defeci«ski Testowanie w systemie Android
24. O autorze
Wst¦p J2ME - przeszªo±¢
Troch¦ (mojej) historii Android - tera¹niejszo±¢
Testujemy
Dlaczego byªo tak trudno?
Nie my±lano o testowaniu projektuj¡c technologi¦
brak narz¦dzi
Brak reeksji (java.lang.reect)
Trudno±¢ w automatyzacji
brak narz¦dzi commandline
niestandardowy deployment
Brak klas JAVA SE
Brak mo»liwo±ci komunikacji z urz¡dzeniem
Debugging
wsz¦dzie inaczej
albo w ogóle
Marek Defeci«ski Testowanie w systemie Android
25. O autorze
Wst¦p J2ME - przeszªo±¢
Troch¦ (mojej) historii Android - tera¹niejszo±¢
Testujemy
Dlaczego byªo tak trudno?
Nie my±lano o testowaniu projektuj¡c technologi¦
brak narz¦dzi
Brak reeksji (java.lang.reect)
Trudno±¢ w automatyzacji
brak narz¦dzi commandline
niestandardowy deployment
Brak klas JAVA SE
Brak mo»liwo±ci komunikacji z urz¡dzeniem
Debugging
wsz¦dzie inaczej
albo w ogóle
Marek Defeci«ski Testowanie w systemie Android
26. O autorze
Wst¦p J2ME - przeszªo±¢
Troch¦ (mojej) historii Android - tera¹niejszo±¢
Testujemy
Agenda
1 O autorze
2 Wst¦p
3 Troch¦ (mojej) historii
J2ME - przeszªo±¢
Android - tera¹niejszo±¢
4 Testujemy
Podej±cia
Out of the box
Robotium
Robolectric
Inne
Marek Defeci«ski Testowanie w systemie Android
27. O autorze
Wst¦p J2ME - przeszªo±¢
Troch¦ (mojej) historii Android - tera¹niejszo±¢
Testujemy
Dlaczego ªatwiej.
Testowanie byªo wzi¦te pod uwag¦ na etapie projektowania
zintegrowany junit 3
annotacje
Wspólne metody na ró»nych urz¡dzeniach
instalacja (adb)
uruchamianie testów (am instrument)
Marek Defeci«ski Testowanie w systemie Android
28. O autorze
Wst¦p J2ME - przeszªo±¢
Troch¦ (mojej) historii Android - tera¹niejszo±¢
Testujemy
Dlaczego ªatwiej.
Testowanie byªo wzi¦te pod uwag¦ na etapie projektowania
zintegrowany junit 3
annotacje
Wspólne metody na ró»nych urz¡dzeniach
instalacja (adb)
uruchamianie testów (am instrument)
Marek Defeci«ski Testowanie w systemie Android
29. O autorze
Wst¦p J2ME - przeszªo±¢
Troch¦ (mojej) historii Android - tera¹niejszo±¢
Testujemy
Co przychodzi z Androidem?
Narz¦dzia (SDK lub kod)
logcat
hierarchyviewer
monkey
monkeyrunner
google test runner
Otwarty kod
mo»na odnale¹¢ nieudokumentowane narz¦dzia
mo»na czyta¢ kod i patrze¢ jak dziaªaj¡ narz¦dzia
mo»na wybiera¢ kawaªki kodu i u»ywa¢ ponownie
Debugging przewa»nie dziaªa
tak»e na urz¡dzeniu
Marek Defeci«ski Testowanie w systemie Android
30. O autorze
Wst¦p J2ME - przeszªo±¢
Troch¦ (mojej) historii Android - tera¹niejszo±¢
Testujemy
Co przychodzi z Androidem?
Narz¦dzia (SDK lub kod)
logcat
hierarchyviewer
monkey
monkeyrunner
google test runner
Otwarty kod
mo»na odnale¹¢ nieudokumentowane narz¦dzia
mo»na czyta¢ kod i patrze¢ jak dziaªaj¡ narz¦dzia
mo»na wybiera¢ kawaªki kodu i u»ywa¢ ponownie
Debugging przewa»nie dziaªa
tak»e na urz¡dzeniu
Marek Defeci«ski Testowanie w systemie Android
31. O autorze
Wst¦p J2ME - przeszªo±¢
Troch¦ (mojej) historii Android - tera¹niejszo±¢
Testujemy
Co przychodzi z Androidem?
Narz¦dzia (SDK lub kod)
logcat
hierarchyviewer
monkey
monkeyrunner
google test runner
Otwarty kod
mo»na odnale¹¢ nieudokumentowane narz¦dzia
mo»na czyta¢ kod i patrze¢ jak dziaªaj¡ narz¦dzia
mo»na wybiera¢ kawaªki kodu i u»ywa¢ ponownie
Debugging przewa»nie dziaªa
tak»e na urz¡dzeniu
Marek Defeci«ski Testowanie w systemie Android
32. O autorze
Wst¦p J2ME - przeszªo±¢
Troch¦ (mojej) historii Android - tera¹niejszo±¢
Testujemy
Anatomia testowania
Aplikacje w androidzie zorganizowane s¡ w paczki (Android
PacKage)
Test w Androidzie to te» paczka (apk)
Paczki w Androidzie nie maj¡ dost¦pu do swojego kodu
(security)
Testowanie u»ywa instrumentacji
Dzi¦ki instrumentacji test i aplikacja testowana pracuj¡ w tym
samym procesie
warunek: podpisane s¡ tym samym kluczem
Marek Defeci«ski Testowanie w systemie Android
33. O autorze
Wst¦p J2ME - przeszªo±¢
Troch¦ (mojej) historii Android - tera¹niejszo±¢
Testujemy
Anatomia testowania
Aplikacje w androidzie zorganizowane s¡ w paczki (Android
PacKage)
Test w Androidzie to te» paczka (apk)
Paczki w Androidzie nie maj¡ dost¦pu do swojego kodu
(security)
Testowanie u»ywa instrumentacji
Dzi¦ki instrumentacji test i aplikacja testowana pracuj¡ w tym
samym procesie
warunek: podpisane s¡ tym samym kluczem
Marek Defeci«ski Testowanie w systemie Android
34. O autorze
Wst¦p J2ME - przeszªo±¢
Troch¦ (mojej) historii Android - tera¹niejszo±¢
Testujemy
Anatomia testowania
Aplikacje w androidzie zorganizowane s¡ w paczki (Android
PacKage)
Test w Androidzie to te» paczka (apk)
Paczki w Androidzie nie maj¡ dost¦pu do swojego kodu
(security)
Testowanie u»ywa instrumentacji
Dzi¦ki instrumentacji test i aplikacja testowana pracuj¡ w tym
samym procesie
warunek: podpisane s¡ tym samym kluczem
Marek Defeci«ski Testowanie w systemie Android
35. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Agenda
1 O autorze
2 Wst¦p
3 Troch¦ (mojej) historii
J2ME - przeszªo±¢
Android - tera¹niejszo±¢
4 Testujemy
Podej±cia
Out of the box
Robotium
Robolectric
Inne
Marek Defeci«ski Testowanie w systemie Android
36. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Sposoby testowania na urz¡dzeniach mobilnych
Brak testów
nie ma czasu
nie umiemy
Testy funkcjonalne (instrumentacja/robotium)
wolne (kompilacja, dex, adb install)
jeszcze wolniej (emulator)
Marek Defeci«ski Testowanie w systemie Android
37. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Sposoby testowania na urz¡dzeniach mobilnych
Brak testów
nie ma czasu
nie umiemy
Testy funkcjonalne (instrumentacja/robotium)
wolne (kompilacja, dex, adb install)
jeszcze wolniej (emulator)
Marek Defeci«ski Testowanie w systemie Android
38. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Sposoby testowania c.d.
Mocki
Reverse engineering istniej¡cego kodu
Ci¦»ko si¦ czyta
Nie pomagaj¡ w refaktoryzacji
Tworzenie bilbiotek POJO - niezale»nych od systemu i dobrze
przetestowanych
Dobra idea, ale
Za du»o kodu
Za du»o implementacji
Za du»o adapterów
Marek Defeci«ski Testowanie w systemie Android
39. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Sposoby testowania c.d.
Mocki
Reverse engineering istniej¡cego kodu
Ci¦»ko si¦ czyta
Nie pomagaj¡ w refaktoryzacji
Tworzenie bilbiotek POJO - niezale»nych od systemu i dobrze
przetestowanych
Dobra idea, ale
Za du»o kodu
Za du»o implementacji
Za du»o adapterów
Marek Defeci«ski Testowanie w systemie Android
40. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Sposoby testowania c.d.
Mocki
Reverse engineering istniej¡cego kodu
Ci¦»ko si¦ czyta
Nie pomagaj¡ w refaktoryzacji
Tworzenie bilbiotek POJO - niezale»nych od systemu i dobrze
przetestowanych
Dobra idea, ale
Za du»o kodu
Za du»o implementacji
Za du»o adapterów
Marek Defeci«ski Testowanie w systemie Android
41. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Agenda
1 O autorze
2 Wst¦p
3 Troch¦ (mojej) historii
J2ME - przeszªo±¢
Android - tera¹niejszo±¢
4 Testujemy
Podej±cia
Out of the box
Robotium
Robolectric
Inne
Marek Defeci«ski Testowanie w systemie Android
42. Instrumentacja
Przykªad
POJO Style - CommunicationTest
Po co testowa¢ to na urz¡dzeniu?
Instrumentation style -
MobilizationScheduleActivityWithInstrumentationTest
activity.runOnUiThread()
instrumentation.waitForIdleSync()
Nieczytelnie
Wolno!
43. Instrumentacja
Przykªad
POJO Style - CommunicationTest
Po co testowa¢ to na urz¡dzeniu?
Instrumentation style -
MobilizationScheduleActivityWithInstrumentationTest
activity.runOnUiThread()
instrumentation.waitForIdleSync()
Nieczytelnie
Wolno!
44. Instrumentacja
Przykªad
POJO Style - CommunicationTest
Po co testowa¢ to na urz¡dzeniu?
Instrumentation style -
MobilizationScheduleActivityWithInstrumentationTest
activity.runOnUiThread()
instrumentation.waitForIdleSync()
Nieczytelnie
Wolno!
45. Instrumentacja
Przykªad
POJO Style - CommunicationTest
Po co testowa¢ to na urz¡dzeniu?
Instrumentation style -
MobilizationScheduleActivityWithInstrumentationTest
activity.runOnUiThread()
instrumentation.waitForIdleSync()
Nieczytelnie
Wolno!
46. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Agenda
1 O autorze
2 Wst¦p
3 Troch¦ (mojej) historii
J2ME - przeszªo±¢
Android - tera¹niejszo±¢
4 Testujemy
Podej±cia
Out of the box
Robotium
Robolectric
Inne
Marek Defeci«ski Testowanie w systemie Android
47. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Robotium
Selenium dla Android
Testy typu black box
nie wymagaj¡ kodu aplikacji testowanej
Testy przyjazne w dotyku
ªatwo si¦ pisz¦
ªatwo si¦ czyta
Du»e i aktywne community
Regularne release-y (3.0 w listopadzie)
Marek Defeci«ski Testowanie w systemie Android
48. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Robotium
Selenium dla Android
Testy typu black box
nie wymagaj¡ kodu aplikacji testowanej
Testy przyjazne w dotyku
ªatwo si¦ pisz¦
ªatwo si¦ czyta
Du»e i aktywne community
Regularne release-y (3.0 w listopadzie)
Marek Defeci«ski Testowanie w systemie Android
49. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Robotium
Selenium dla Android
Testy typu black box
nie wymagaj¡ kodu aplikacji testowanej
Testy przyjazne w dotyku
ªatwo si¦ pisz¦
ªatwo si¦ czyta
Du»e i aktywne community
Regularne release-y (3.0 w listopadzie)
Marek Defeci«ski Testowanie w systemie Android
50. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Robotium
Selenium dla Android
Testy typu black box
nie wymagaj¡ kodu aplikacji testowanej
Testy przyjazne w dotyku
ªatwo si¦ pisz¦
ªatwo si¦ czyta
Du»e i aktywne community
Regularne release-y (3.0 w listopadzie)
Marek Defeci«ski Testowanie w systemie Android
51. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Robotium
Selenium dla Android
Testy typu black box
nie wymagaj¡ kodu aplikacji testowanej
Testy przyjazne w dotyku
ªatwo si¦ pisz¦
ªatwo si¦ czyta
Du»e i aktywne community
Regularne release-y (3.0 w listopadzie)
Marek Defeci«ski Testowanie w systemie Android
52. Robotium
Przykªad
MobilizationScheduleActivityWithRobotiumTest
pro±ciej ni» instrumentacja
EventDetailsActivityWithRobotiumTest
Wi¦cej sposobów na szukanie tekstu
Przyjazne API
MobilizationScheduleActivityTest
rozbudowane scenariusze
Mo»e ªadnie, ale nadal wolno
53. Robotium
Przykªad
MobilizationScheduleActivityWithRobotiumTest
pro±ciej ni» instrumentacja
EventDetailsActivityWithRobotiumTest
Wi¦cej sposobów na szukanie tekstu
Przyjazne API
MobilizationScheduleActivityTest
rozbudowane scenariusze
Mo»e ªadnie, ale nadal wolno
54. Robotium
Przykªad
MobilizationScheduleActivityWithRobotiumTest
pro±ciej ni» instrumentacja
EventDetailsActivityWithRobotiumTest
Wi¦cej sposobów na szukanie tekstu
Przyjazne API
MobilizationScheduleActivityTest
rozbudowane scenariusze
Mo»e ªadnie, ale nadal wolno
55. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Agenda
1 O autorze
2 Wst¦p
3 Troch¦ (mojej) historii
J2ME - przeszªo±¢
Android - tera¹niejszo±¢
4 Testujemy
Podej±cia
Out of the box
Robotium
Robolectric
Inne
Marek Defeci«ski Testowanie w systemie Android
56. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Robolectric
java.lang.RuntimeException: Stub!
android.jar - fasada potrzebna do kompilacji
Testy uruchamiane w zwykªej Javie
Szybkie!
Typu black-box
Šatwo zrefaktorowa¢
Testuj¡ zachowanie a nie implementacje (vs Mock)
Šatwo osi¡gn¡¢ du»e pokrycie testami
bo szybko si¦ pisze
i szybko uruchamia
Marek Defeci«ski Testowanie w systemie Android
57. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Robolectric
java.lang.RuntimeException: Stub!
android.jar - fasada potrzebna do kompilacji
Testy uruchamiane w zwykªej Javie
Szybkie!
Typu black-box
Šatwo zrefaktorowa¢
Testuj¡ zachowanie a nie implementacje (vs Mock)
Šatwo osi¡gn¡¢ du»e pokrycie testami
bo szybko si¦ pisze
i szybko uruchamia
Marek Defeci«ski Testowanie w systemie Android
58. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Robolectric
java.lang.RuntimeException: Stub!
android.jar - fasada potrzebna do kompilacji
Testy uruchamiane w zwykªej Javie
Szybkie!
Typu black-box
Šatwo zrefaktorowa¢
Testuj¡ zachowanie a nie implementacje (vs Mock)
Šatwo osi¡gn¡¢ du»e pokrycie testami
bo szybko si¦ pisze
i szybko uruchamia
Marek Defeci«ski Testowanie w systemie Android
59. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Robolectric
java.lang.RuntimeException: Stub!
android.jar - fasada potrzebna do kompilacji
Testy uruchamiane w zwykªej Javie
Szybkie!
Typu black-box
Šatwo zrefaktorowa¢
Testuj¡ zachowanie a nie implementacje (vs Mock)
Šatwo osi¡gn¡¢ du»e pokrycie testami
bo szybko si¦ pisze
i szybko uruchamia
Marek Defeci«ski Testowanie w systemie Android
60. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Robolectric
java.lang.RuntimeException: Stub!
android.jar - fasada potrzebna do kompilacji
Testy uruchamiane w zwykªej Javie
Szybkie!
Typu black-box
Šatwo zrefaktorowa¢
Testuj¡ zachowanie a nie implementacje (vs Mock)
Šatwo osi¡gn¡¢ du»e pokrycie testami
bo szybko si¦ pisze
i szybko uruchamia
Marek Defeci«ski Testowanie w systemie Android
61. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Robolectric
java.lang.RuntimeException: Stub!
android.jar - fasada potrzebna do kompilacji
Testy uruchamiane w zwykªej Javie
Szybkie!
Typu black-box
Šatwo zrefaktorowa¢
Testuj¡ zachowanie a nie implementacje (vs Mock)
Šatwo osi¡gn¡¢ du»e pokrycie testami
bo szybko si¦ pisze
i szybko uruchamia
Marek Defeci«ski Testowanie w systemie Android
62. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Robolectric
java.lang.RuntimeException: Stub!
android.jar - fasada potrzebna do kompilacji
Testy uruchamiane w zwykªej Javie
Szybkie!
Typu black-box
Šatwo zrefaktorowa¢
Testuj¡ zachowanie a nie implementacje (vs Mock)
Šatwo osi¡gn¡¢ du»e pokrycie testami
bo szybko si¦ pisze
i szybko uruchamia
Marek Defeci«ski Testowanie w systemie Android
63. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Robolectric
Shadow objects
Przechwytuje ªadowanie klas z android.jar i zamienia kod na
u»ywalny (javassist) - podstawowe zachowanie
Podpina obiekty shadow do klas androida
Klasy androida sªu»¡ jako proxy do shadow
Obiekty zapami¦tuj¡ stan (mo»na sprawdza¢ w testach)
Dodaje troch¦ nowych metod
Marek Defeci«ski Testowanie w systemie Android
64. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Robolectric
Widoki i resource-y
Tworzy map¦ widoków na podstawie resourców (res!)
Tworzy map¦ obiektów cieni
Przetwarza layouty - cz¦±¢ atrybutów jest przepisywana do
cieni
Marek Defeci«ski Testowanie w systemie Android
65. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Robolectric
przykªad
EventDetailsActivityWithRoboelectric
Test typu JUnit4 @Test
@RunWith(RobolectricTestRunner.class)
Maven
Szybko!
Robolectric.shadowOf(...)
CommunicationWithRobolectricTest
Šatwe mockowanie http
I znowu szybko!
Robolectric.addPendingHttpResponse(...)
Marek Defeci«ski Testowanie w systemie Android
66. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Agenda
1 O autorze
2 Wst¦p
3 Troch¦ (mojej) historii
J2ME - przeszªo±¢
Android - tera¹niejszo±¢
4 Testujemy
Podej±cia
Out of the box
Robotium
Robolectric
Inne
Marek Defeci«ski Testowanie w systemie Android
67. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
android.test.mock - a co to?
To nie jest mocking framework typu mockito lub easymock
Bardziej zbli»one do denicji stubów (M. Fowler)
To klasy których:
metody rzucaj¡ wyj¡tkami
nadpisujemy metody które chcemy u»y¢
Sªu»¡ izolacji od ±rodowiska
MockContext
MockContentProvider (baza danych)
MockContentResolver (j.w.)
Šatwiej co± wstrzykn¡¢
Przykªad: EventListAdapterTest
Marek Defeci«ski Testowanie w systemie Android
68. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
android.test.mock - a co to?
To nie jest mocking framework typu mockito lub easymock
Bardziej zbli»one do denicji stubów (M. Fowler)
To klasy których:
metody rzucaj¡ wyj¡tkami
nadpisujemy metody które chcemy u»y¢
Sªu»¡ izolacji od ±rodowiska
MockContext
MockContentProvider (baza danych)
MockContentResolver (j.w.)
Šatwiej co± wstrzykn¡¢
Przykªad: EventListAdapterTest
Marek Defeci«ski Testowanie w systemie Android
69. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
android.test.mock - a co to?
To nie jest mocking framework typu mockito lub easymock
Bardziej zbli»one do denicji stubów (M. Fowler)
To klasy których:
metody rzucaj¡ wyj¡tkami
nadpisujemy metody które chcemy u»y¢
Sªu»¡ izolacji od ±rodowiska
MockContext
MockContentProvider (baza danych)
MockContentResolver (j.w.)
Šatwiej co± wstrzykn¡¢
Przykªad: EventListAdapterTest
Marek Defeci«ski Testowanie w systemie Android
70. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
android.test.mock - a co to?
To nie jest mocking framework typu mockito lub easymock
Bardziej zbli»one do denicji stubów (M. Fowler)
To klasy których:
metody rzucaj¡ wyj¡tkami
nadpisujemy metody które chcemy u»y¢
Sªu»¡ izolacji od ±rodowiska
MockContext
MockContentProvider (baza danych)
MockContentResolver (j.w.)
Šatwiej co± wstrzykn¡¢
Przykªad: EventListAdapterTest
Marek Defeci«ski Testowanie w systemie Android
71. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
android.test.mock - a co to?
To nie jest mocking framework typu mockito lub easymock
Bardziej zbli»one do denicji stubów (M. Fowler)
To klasy których:
metody rzucaj¡ wyj¡tkami
nadpisujemy metody które chcemy u»y¢
Sªu»¡ izolacji od ±rodowiska
MockContext
MockContentProvider (baza danych)
MockContentResolver (j.w.)
Šatwiej co± wstrzykn¡¢
Przykªad: EventListAdapterTest
Marek Defeci«ski Testowanie w systemie Android
72. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
android.test.mock - a co to?
To nie jest mocking framework typu mockito lub easymock
Bardziej zbli»one do denicji stubów (M. Fowler)
To klasy których:
metody rzucaj¡ wyj¡tkami
nadpisujemy metody które chcemy u»y¢
Sªu»¡ izolacji od ±rodowiska
MockContext
MockContentProvider (baza danych)
MockContentResolver (j.w.)
Šatwiej co± wstrzykn¡¢
Przykªad: EventListAdapterTest
Marek Defeci«ski Testowanie w systemie Android
73. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Co jeszcze mo»na u»y¢?
Android-mock
u»ywa annotacji
tworzy klasy mock podczas kompilacji
record and replay (easy mock)
mocki s¡ pakowane do apk
Powermock
oparty o mockito lub easymocka
wspiera TestNG i JUnit
testy w JVM
Calculon
DSL dla Androida
czytelne testy
assertThat(R.id.button_2).isVisible();
assertThat(R.id.button_2).click().implies(R.id.launch_bar_button).is
Marek Defeci«ski Testowanie w systemie Android
74. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Co jeszcze mo»na u»y¢?
RenamingDelegatingContext
zmiany w systemie plików s¡ przekierowywane do innego
miejsca (prex)
IsolatedContext
pozwala na rozmawianie z innymi pakietami ale nie z
urz¡dzeniem
android.test.*
Marek Defeci«ski Testowanie w systemie Android
75. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Pytania?
marekdef+cracow.mobi@gmail.com
Dzi¦kuj¦ za uwag¦!
Marek Defeci«ski Testowanie w systemie Android
76. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Pytania?
marekdef+cracow.mobi@gmail.com
Dzi¦kuj¦ za uwag¦!
Marek Defeci«ski Testowanie w systemie Android
77. Podej±cia
O autorze
Out of the box
Wst¦p
Robotium
Troch¦ (mojej) historii
Robolectric
Testujemy
Inne
Pytania?
marekdef+cracow.mobi@gmail.com
Dzi¦kuj¦ za uwag¦!
Marek Defeci«ski Testowanie w systemie Android
78. Bonus pack
TestDroid recorder
TestDroid recorder
Bitbar
«scy managerowie, polscy programi±ci
plugin do eclipse
nagrywanie do testów robotium lub monkeyrunner
screenshoty