Cracowmobi

593 views

Published on

Presentation deliverd for cracow.mobi.
Again on android testing, includes robotium, robolectric and mention about testdroid

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
593
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Cracowmobi

  1. 1. O autorze Wst¦p Troch¦ (mojej) historii TestujemyTestowanie w systemie Android Marek Defeci«ski Mobica oddziaª w Šodzi Cracow.mobi Conference, 2011 Marek Defeci«ski Testowanie w systemie Android
  2. 2. O autorze Wst¦p Troch¦ (mojej) historii TestujemyAgenda 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. 3. O autorze Wst¦p Troch¦ (mojej) historii TestujemyKim 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. 4. O autorze Wst¦p Troch¦ (mojej) historii TestujemyKim 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. 5. O autorze Wst¦p Troch¦ (mojej) historii TestujemyKim 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. 6. O autorze Wst¦p Troch¦ (mojej) historii TestujemyKim 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. 7. O autorze Wst¦p Troch¦ (mojej) historii TestujemyCo 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. 8. O autorze Wst¦p Troch¦ (mojej) historii TestujemyCo 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. 9. O autorze Wst¦p Troch¦ (mojej) historii TestujemyTestowa¢ 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. 10. O autorze Wst¦p Troch¦ (mojej) historii TestujemyTestowa¢ 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. 11. O autorze Wst¦p Troch¦ (mojej) historii TestujemyTestowa¢ 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. 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. 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. 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. 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. 16. O autorze Wst¦p Troch¦ (mojej) historii TestujemyWady (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. 17. O autorze Wst¦p Troch¦ (mojej) historii TestujemyWady (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. 18. O autorze Wst¦p Troch¦ (mojej) historii TestujemyWady (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. 19. O autorze Wst¦p J2ME - przeszªo±¢ Troch¦ (mojej) historii Android - tera¹niejszo±¢ TestujemyAgenda 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. 20. O autorze Wst¦p J2ME - przeszªo±¢ Troch¦ (mojej) historii Android - tera¹niejszo±¢ TestujemyDlaczego 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. 21. O autorze Wst¦p J2ME - przeszªo±¢ Troch¦ (mojej) historii Android - tera¹niejszo±¢ TestujemyDlaczego 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. 22. O autorze Wst¦p J2ME - przeszªo±¢ Troch¦ (mojej) historii Android - tera¹niejszo±¢ TestujemyDlaczego 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. 23. O autorze Wst¦p J2ME - przeszªo±¢ Troch¦ (mojej) historii Android - tera¹niejszo±¢ TestujemyDlaczego 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. 24. O autorze Wst¦p J2ME - przeszªo±¢ Troch¦ (mojej) historii Android - tera¹niejszo±¢ TestujemyDlaczego 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. 25. O autorze Wst¦p J2ME - przeszªo±¢ Troch¦ (mojej) historii Android - tera¹niejszo±¢ TestujemyDlaczego 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. 26. O autorze Wst¦p J2ME - przeszªo±¢ Troch¦ (mojej) historii Android - tera¹niejszo±¢ TestujemyAgenda 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. 27. O autorze Wst¦p J2ME - przeszªo±¢ Troch¦ (mojej) historii Android - tera¹niejszo±¢ TestujemyDlaczego ª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. 28. O autorze Wst¦p J2ME - przeszªo±¢ Troch¦ (mojej) historii Android - tera¹niejszo±¢ TestujemyDlaczego ª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. 29. O autorze Wst¦p J2ME - przeszªo±¢ Troch¦ (mojej) historii Android - tera¹niejszo±¢ TestujemyCo 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. 30. O autorze Wst¦p J2ME - przeszªo±¢ Troch¦ (mojej) historii Android - tera¹niejszo±¢ TestujemyCo 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. 31. O autorze Wst¦p J2ME - przeszªo±¢ Troch¦ (mojej) historii Android - tera¹niejszo±¢ TestujemyCo 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. 32. O autorze Wst¦p J2ME - przeszªo±¢ Troch¦ (mojej) historii Android - tera¹niejszo±¢ TestujemyAnatomia 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. 33. O autorze Wst¦p J2ME - przeszªo±¢ Troch¦ (mojej) historii Android - tera¹niejszo±¢ TestujemyAnatomia 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. 34. O autorze Wst¦p J2ME - przeszªo±¢ Troch¦ (mojej) historii Android - tera¹niejszo±¢ TestujemyAnatomia 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. 35. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneAgenda 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. 36. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneSposoby 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. 37. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneSposoby 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. 38. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneSposoby 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. 39. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneSposoby 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. 40. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneSposoby 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. 41. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneAgenda 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. 42. InstrumentacjaPrzykªad POJO Style - CommunicationTest Po co testowa¢ to na urz¡dzeniu? Instrumentation style - MobilizationScheduleActivityWithInstrumentationTest activity.runOnUiThread() instrumentation.waitForIdleSync() Nieczytelnie Wolno!
  43. 43. InstrumentacjaPrzykªad POJO Style - CommunicationTest Po co testowa¢ to na urz¡dzeniu? Instrumentation style - MobilizationScheduleActivityWithInstrumentationTest activity.runOnUiThread() instrumentation.waitForIdleSync() Nieczytelnie Wolno!
  44. 44. InstrumentacjaPrzykªad POJO Style - CommunicationTest Po co testowa¢ to na urz¡dzeniu? Instrumentation style - MobilizationScheduleActivityWithInstrumentationTest activity.runOnUiThread() instrumentation.waitForIdleSync() Nieczytelnie Wolno!
  45. 45. InstrumentacjaPrzykªad POJO Style - CommunicationTest Po co testowa¢ to na urz¡dzeniu? Instrumentation style - MobilizationScheduleActivityWithInstrumentationTest activity.runOnUiThread() instrumentation.waitForIdleSync() Nieczytelnie Wolno!
  46. 46. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneAgenda 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. 47. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneRobotium 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. 48. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneRobotium 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. 49. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneRobotium 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. 50. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneRobotium 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. 51. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneRobotium 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. 52. RobotiumPrzykª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. 53. RobotiumPrzykª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. 54. RobotiumPrzykª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. 55. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneAgenda 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. 56. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneRobolectric 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. 57. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneRobolectric 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. 58. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneRobolectric 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. 59. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneRobolectric 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. 60. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneRobolectric 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. 61. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneRobolectric 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. 62. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneRobolectric 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. 63. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneRobolectricShadow 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. 64. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneRobolectricWidoki 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. 65. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneRobolectricprzykª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. 66. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneAgenda 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. 67. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy Inneandroid.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. 68. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy Inneandroid.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. 69. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy Inneandroid.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. 70. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy Inneandroid.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. 71. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy Inneandroid.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. 72. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy Inneandroid.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. 73. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneCo 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. 74. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InneCo 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. 75. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InnePytania? marekdef+cracow.mobi@gmail.com Dzi¦kuj¦ za uwag¦! Marek Defeci«ski Testowanie w systemie Android
  76. 76. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InnePytania? marekdef+cracow.mobi@gmail.com Dzi¦kuj¦ za uwag¦! Marek Defeci«ski Testowanie w systemie Android
  77. 77. Podej±cia O autorze Out of the box Wst¦p Robotium Troch¦ (mojej) historii Robolectric Testujemy InnePytania? marekdef+cracow.mobi@gmail.com Dzi¦kuj¦ za uwag¦! Marek Defeci«ski Testowanie w systemie Android
  78. 78. Bonus packTestDroid recorder TestDroid recorder Bitbar «scy managerowie, polscy programi±ci plugin do eclipse nagrywanie do testów robotium lub monkeyrunner screenshoty
  79. 79. Bonus packlogcat http://imgur.com/jacoj
  80. 80. Bonus packinne ($AN- monkeyrunner recorder 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)

×