SlideShare a Scribd company logo
1 of 83
Download to read offline
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Instrumentacja
Przykªad




           POJO Style - CommunicationTest

               Po co testowa¢ to na urz¡dzeniu?


           Instrumentation style -
           MobilizationScheduleActivityWithInstrumentationTest

               activity.runOnUiThread()
               instrumentation.waitForIdleSync()
               Nieczytelnie
               Wolno!
Instrumentacja
Przykªad




           POJO Style - CommunicationTest

               Po co testowa¢ to na urz¡dzeniu?


           Instrumentation style -
           MobilizationScheduleActivityWithInstrumentationTest

               activity.runOnUiThread()
               instrumentation.waitForIdleSync()
               Nieczytelnie
               Wolno!
Instrumentacja
Przykªad




           POJO Style - CommunicationTest

               Po co testowa¢ to na urz¡dzeniu?


           Instrumentation style -
           MobilizationScheduleActivityWithInstrumentationTest

               activity.runOnUiThread()
               instrumentation.waitForIdleSync()
               Nieczytelnie
               Wolno!
Instrumentacja
Przykªad




           POJO Style - CommunicationTest

               Po co testowa¢ to na urz¡dzeniu?


           Instrumentation style -
           MobilizationScheduleActivityWithInstrumentationTest

               activity.runOnUiThread()
               instrumentation.waitForIdleSync()
               Nieczytelnie
               Wolno!
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Bonus pack
TestDroid recorder




         TestDroid recorder

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




             http://imgur.com/jacoj
Bonus pack
inne




                          ($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)
Cracowmobi
Cracowmobi
Cracowmobi

More Related Content

Similar to Cracowmobi

Dev con wrocław_2013
Dev con wrocław_2013Dev con wrocław_2013
Dev con wrocław_2013Tomek Borek
 
Infoshare - jak tworzyć aplikacje b2b?
Infoshare - jak tworzyć aplikacje b2b?Infoshare - jak tworzyć aplikacje b2b?
Infoshare - jak tworzyć aplikacje b2b?Tomasz Janeczko
 
Testowanie jenostkowe (Unit Testing)
Testowanie jenostkowe (Unit Testing)Testowanie jenostkowe (Unit Testing)
Testowanie jenostkowe (Unit Testing)Rafał Borowiec
 
Testy w środowisku mobilnym
Testy w środowisku mobilnymTesty w środowisku mobilnym
Testy w środowisku mobilnymM_wiktorowski
 
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gierKonrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gierGameDesire Academy
 
Krzysztof Ścira: REAL testing of hybrid mobile apps.
Krzysztof Ścira: REAL testing of hybrid mobile apps.Krzysztof Ścira: REAL testing of hybrid mobile apps.
Krzysztof Ścira: REAL testing of hybrid mobile apps.Mobile Trends
 
Podstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptxPodstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptxKatarzyna Javaheri-Szpak
 
Testy jednostkowe - 8 rzeczy, które musisz wiedzieć
Testy jednostkowe - 8 rzeczy, które musisz wiedziećTesty jednostkowe - 8 rzeczy, które musisz wiedzieć
Testy jednostkowe - 8 rzeczy, które musisz wiedziećAleksandra (Ola) Kunysz
 
Narzędzia: Scrum. Czy gamedev jest agile?
Narzędzia: Scrum. Czy gamedev jest agile?Narzędzia: Scrum. Czy gamedev jest agile?
Narzędzia: Scrum. Czy gamedev jest agile?GameDesire Company
 
Unit testing w praktyce... czyli właściwie jak?
Unit testing w praktyce... czyli właściwie jak?Unit testing w praktyce... czyli właściwie jak?
Unit testing w praktyce... czyli właściwie jak?Bartłomiej Cymanowski
 
Code Review budujące relacje w zespole
Code Review budujące relacje w zespoleCode Review budujące relacje w zespole
Code Review budujące relacje w zespoleMaciej Mortek
 
Wprowadzenie do produkcji gier
Wprowadzenie do produkcji gierWprowadzenie do produkcji gier
Wprowadzenie do produkcji gierMaciej Miąsik
 
Aplikacje mobilne tworzone w technologiach webowych
Aplikacje mobilne tworzone w technologiach webowychAplikacje mobilne tworzone w technologiach webowych
Aplikacje mobilne tworzone w technologiach webowychTomasz Borowski
 
Wszystkie role testera oprogramowania
Wszystkie role testera oprogramowaniaWszystkie role testera oprogramowania
Wszystkie role testera oprogramowaniaRadoslaw Smilgin
 
Poznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven DevelopmentPoznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven Developmentbartlomiej.szafko
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 

Similar to Cracowmobi (20)

Ewa Bielska: Testowanie aplikacji mobilnych
Ewa Bielska: Testowanie aplikacji mobilnychEwa Bielska: Testowanie aplikacji mobilnych
Ewa Bielska: Testowanie aplikacji mobilnych
 
Dev con wrocław_2013
Dev con wrocław_2013Dev con wrocław_2013
Dev con wrocław_2013
 
Infoshare - jak tworzyć aplikacje b2b?
Infoshare - jak tworzyć aplikacje b2b?Infoshare - jak tworzyć aplikacje b2b?
Infoshare - jak tworzyć aplikacje b2b?
 
Testowanie automatyczne 2024 INCO Academy
Testowanie automatyczne 2024 INCO AcademyTestowanie automatyczne 2024 INCO Academy
Testowanie automatyczne 2024 INCO Academy
 
Testowanie jenostkowe (Unit Testing)
Testowanie jenostkowe (Unit Testing)Testowanie jenostkowe (Unit Testing)
Testowanie jenostkowe (Unit Testing)
 
Testy w środowisku mobilnym
Testy w środowisku mobilnymTesty w środowisku mobilnym
Testy w środowisku mobilnym
 
[TestWarez 2017] Skomplikowane testowanie, skomplikowane terminy. Testowanie ...
[TestWarez 2017] Skomplikowane testowanie, skomplikowane terminy. Testowanie ...[TestWarez 2017] Skomplikowane testowanie, skomplikowane terminy. Testowanie ...
[TestWarez 2017] Skomplikowane testowanie, skomplikowane terminy. Testowanie ...
 
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gierKonrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
 
Krzysztof Ścira: REAL testing of hybrid mobile apps.
Krzysztof Ścira: REAL testing of hybrid mobile apps.Krzysztof Ścira: REAL testing of hybrid mobile apps.
Krzysztof Ścira: REAL testing of hybrid mobile apps.
 
Automatyzacja testów oprogramowania dla urządzeń mobilnych
Automatyzacja testów oprogramowania dla urządzeń mobilnychAutomatyzacja testów oprogramowania dla urządzeń mobilnych
Automatyzacja testów oprogramowania dla urządzeń mobilnych
 
Podstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptxPodstawy testowania oprogramowania INCO 2023.pptx
Podstawy testowania oprogramowania INCO 2023.pptx
 
Testy jednostkowe - 8 rzeczy, które musisz wiedzieć
Testy jednostkowe - 8 rzeczy, które musisz wiedziećTesty jednostkowe - 8 rzeczy, które musisz wiedzieć
Testy jednostkowe - 8 rzeczy, które musisz wiedzieć
 
Narzędzia: Scrum. Czy gamedev jest agile?
Narzędzia: Scrum. Czy gamedev jest agile?Narzędzia: Scrum. Czy gamedev jest agile?
Narzędzia: Scrum. Czy gamedev jest agile?
 
Unit testing w praktyce... czyli właściwie jak?
Unit testing w praktyce... czyli właściwie jak?Unit testing w praktyce... czyli właściwie jak?
Unit testing w praktyce... czyli właściwie jak?
 
Code Review budujące relacje w zespole
Code Review budujące relacje w zespoleCode Review budujące relacje w zespole
Code Review budujące relacje w zespole
 
Wprowadzenie do produkcji gier
Wprowadzenie do produkcji gierWprowadzenie do produkcji gier
Wprowadzenie do produkcji gier
 
Aplikacje mobilne tworzone w technologiach webowych
Aplikacje mobilne tworzone w technologiach webowychAplikacje mobilne tworzone w technologiach webowych
Aplikacje mobilne tworzone w technologiach webowych
 
Wszystkie role testera oprogramowania
Wszystkie role testera oprogramowaniaWszystkie role testera oprogramowania
Wszystkie role testera oprogramowania
 
Poznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven DevelopmentPoznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven Development
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 

Cracowmobi

  • 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
  • 79. Bonus pack logcat http://imgur.com/jacoj
  • 80. Bonus pack inne ($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)