Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Testowanie w Androidzie

Testowanie w Androidzie

Testing in Android overview (in Polish)

Marek Defeciński

December 09, 2011
Tweet

More Decks by Marek Defeciński

Other Decks in Programming

Transcript

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  19. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    J2ME - przeszªo±¢
    Android - tera¹niejszo±¢
    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

    View full-size slide

  20. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    J2ME - przeszªo±¢
    Android - tera¹niejszo±¢
    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

    View full-size slide

  21. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    J2ME - przeszªo±¢
    Android - tera¹niejszo±¢
    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

    View full-size slide

  22. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    J2ME - przeszªo±¢
    Android - tera¹niejszo±¢
    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

    View full-size slide

  23. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    J2ME - przeszªo±¢
    Android - tera¹niejszo±¢
    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

    View full-size slide

  24. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    J2ME - przeszªo±¢
    Android - tera¹niejszo±¢
    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

    View full-size slide

  25. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    J2ME - przeszªo±¢
    Android - tera¹niejszo±¢
    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

    View full-size slide

  26. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    J2ME - przeszªo±¢
    Android - tera¹niejszo±¢
    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

    View full-size slide

  27. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    J2ME - przeszªo±¢
    Android - tera¹niejszo±¢
    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

    View full-size slide

  28. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    J2ME - przeszªo±¢
    Android - tera¹niejszo±¢
    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

    View full-size slide

  29. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    J2ME - przeszªo±¢
    Android - tera¹niejszo±¢
    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

    View full-size slide

  30. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    J2ME - przeszªo±¢
    Android - tera¹niejszo±¢
    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

    View full-size slide

  31. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    J2ME - przeszªo±¢
    Android - tera¹niejszo±¢
    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

    View full-size slide

  32. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    J2ME - przeszªo±¢
    Android - tera¹niejszo±¢
    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

    View full-size slide

  33. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    J2ME - przeszªo±¢
    Android - tera¹niejszo±¢
    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

    View full-size slide

  34. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    J2ME - przeszªo±¢
    Android - tera¹niejszo±¢
    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

    View full-size slide

  35. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  36. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  37. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  38. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  39. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  40. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  41. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  42. Instrumentacja
    Przykªad
    POJO Style - CommunicationTest
    Po co testowa¢ to na urz¡dzeniu?
    Instrumentation style -
    MobilizationScheduleActivityWithInstrumentationTest
    activity.runOnUiThread()
    instrumentation.waitForIdleSync()
    Nieczytelnie
    Wolno!

    View full-size slide

  43. Instrumentacja
    Przykªad
    POJO Style - CommunicationTest
    Po co testowa¢ to na urz¡dzeniu?
    Instrumentation style -
    MobilizationScheduleActivityWithInstrumentationTest
    activity.runOnUiThread()
    instrumentation.waitForIdleSync()
    Nieczytelnie
    Wolno!

    View full-size slide

  44. Instrumentacja
    Przykªad
    POJO Style - CommunicationTest
    Po co testowa¢ to na urz¡dzeniu?
    Instrumentation style -
    MobilizationScheduleActivityWithInstrumentationTest
    activity.runOnUiThread()
    instrumentation.waitForIdleSync()
    Nieczytelnie
    Wolno!

    View full-size slide

  45. Instrumentacja
    Przykªad
    POJO Style - CommunicationTest
    Po co testowa¢ to na urz¡dzeniu?
    Instrumentation style -
    MobilizationScheduleActivityWithInstrumentationTest
    activity.runOnUiThread()
    instrumentation.waitForIdleSync()
    Nieczytelnie
    Wolno!

    View full-size slide

  46. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  47. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  48. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  49. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  50. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  51. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  55. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  56. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  57. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  58. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  59. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  60. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  61. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  62. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  63. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  64. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  65. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  66. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  67. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  68. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  69. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  70. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  71. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  72. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  73. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  74. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    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

    View full-size slide

  75. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    Inne
    Pytania?
    [email protected]
    Dzi¦kuj¦ za uwag¦!
    Marek Defeci«ski Testowanie w systemie Android

    View full-size slide

  76. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    Inne
    Pytania?
    [email protected]
    Dzi¦kuj¦ za uwag¦!
    Marek Defeci«ski Testowanie w systemie Android

    View full-size slide

  77. O autorze
    Wst¦p
    Troch¦ (mojej) historii
    Testujemy
    Podej±cia
    Out of the box
    Robotium
    Robolectric
    Inne
    Pytania?
    [email protected]
    Dzi¦kuj¦ za uwag¦!
    Marek Defeci«ski Testowanie w systemie Android

    View full-size slide

  78. Bonus pack
    TestDroid recorder
    TestDroid recorder
    Bitbar
    «scy managerowie, polscy programi±ci
    plugin do eclipse
    nagrywanie do testów robotium lub monkeyrunner
    screenshoty

    View full-size slide

  79. Bonus pack
    logcat
    http://imgur.com/jacoj

    View full-size slide

  80. Bonus pack
    inne
    monkeyrunner recorder ($AN-
    DROID_SOURCE/sdk/monkeyrunner/scripts/monkey_recorder.py)
    monkeyrunner help
    ($ANDROID_SOURCE/sdk/monkeyrunner/scripts/help.py)
    adb completion
    ($ANDROID_SOURCE/sdk/bash_completion/adb.bash)
    screenshot2 ($ANDROID_SOURCE/out/host/linux-x86/bin)

    View full-size slide