estoTwanie w systemie Android -...

33

Transcript of estoTwanie w systemie Android -...

Page 1: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Testowanie w systemie Android

Marek Defecilaquoski

Mobica oddziaordf w odzi

Mobile Trends Conference 2012

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

O mnie

Organizator konferencji Mobilizationpl w odzi

Programista aplikacji mobilnych w rmie Mobica

Prawie 3 lata doplusmnwiadczenia w j2mePonad 1 w Androidzie

Animator JUG oacutedsup1 httpinfolodzjugpl

Chciaordfby pisacent bloga Blog programisty Android

httpblogprogramistyandroidblogspotcom

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Testowacent czy nie testowacent o to jest pytanie

Nie waraquone jak ale waraquone raquoeby testowacent

Jednostkowo Funkcjonalnie IntegracyjneManualnie AutomatycznieWydajnoplusmnciowo

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Szczbrvbarplusmnliwi programiplusmnci

testy to pewnoplusmncent raquoe dziaordfaspokoacutej o zmiany

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Sprawdzamy poprawnoplusmncent kodu

Czy robi to co chcemyWykrywamy bordfbrvbardy

Zwibrvbarkszajiexcl jakoplusmncent kodu

czy kod jest uraquoywalny (ordfatwo go testowacent)czy jest moduordfowyordfatwo sibrvbar integruje

Testowanie skutkuje lepszym designem

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Testy to kontrakt na piplusmnmie

rodzaj dokumentacji (samodokumentujiexclcy sibrvbar kod)lista przykordfadoacutewistniejiexclce testy pozwalajiexcl na wykrycie bordfbrvbardoacutew regresji

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Wady (do wytrenowania)

Wymagajiexcl czasu

na napisaniena utrzymanie

Wymagajiexcl wibrvbarcej od programisty

umiejbrvbartnoplusmncidyscypliny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Android - TestowanieKsiiexclraquoka na dobry pocziexcltek

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

RoboSpecshttpsgithubcomjbrechtelrobospecs

Specs2httpetorreborregithubcomspecs2

Calculonhttpsgithubcomkaepplercalculon

Android Junit Reporthttpsgithubcomjsankeyandroid-junit-report

EasyMockhttpeasymockorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

Borachiohttpborachiocom

Andjecthttpsgithubcomko5tikandject

Android Maven Pluginhttpcodegooglecompmaven-android-plugin

Vogarhttpcodegooglecompvogar

Caliperhttpcodegooglecompcaliper

roacutedordfoacute Manfred Moser - Testing Android Apps Going from Zero toHero - httpwwwsimpligilitycom

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaAnatomia testowania

Aplikacje w androidzie zorganizowane siexcl w paczki (AndroidPacKage)

Test w Androidzie to teraquo paczka (apk)

Paczki w Androidzie nie majiexcl dostbrvbarpu do swojego kodu(security)

Testowanie uraquoywa instrumentacji dzibrvbarki ktoacuterej test i aplikacjatestowana pracujiexcl w tym samym procesie

warunek podpisane siexcl tym samym kluczemUwazamy na biblioteki w teplusmncie i aplikacji testowanej - niemogiexcl sibrvbar powtarzacent (Conversion to Dalvik format failed lubbordfbrvbardy w czasie wykonania)

Uprawnienia (permissions) siexcl takie jak dla aplikacji testowanej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaUruchamianie

AndroidManifestxml

ltmanifest package=plmobiletrendsconftestsgtltuses-library androidname=androidtestrunner gtltinstrumentation androidtargetPackage=plmobiletrendsconf

androidname=androidtestInstrumentationTestRunner gt

Uruchamianie

adb shell am instrumentplmobiletrendsconftestsandroidtestInstrumentationTestRunner

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaZastosowanie

Testy jednostkowe - wolne (kompilacja dex aapt adb install)

jeszcze wolniej (emulator)po co w ogoacutele testowacent to na urziexcldzeniuemulatorze

Testy funkcjonalne

tak samo wolnotrudno napisacent przeczytacent utrzymacent

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 2: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

O mnie

Organizator konferencji Mobilizationpl w odzi

Programista aplikacji mobilnych w rmie Mobica

Prawie 3 lata doplusmnwiadczenia w j2mePonad 1 w Androidzie

Animator JUG oacutedsup1 httpinfolodzjugpl

Chciaordfby pisacent bloga Blog programisty Android

httpblogprogramistyandroidblogspotcom

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Testowacent czy nie testowacent o to jest pytanie

Nie waraquone jak ale waraquone raquoeby testowacent

Jednostkowo Funkcjonalnie IntegracyjneManualnie AutomatycznieWydajnoplusmnciowo

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Szczbrvbarplusmnliwi programiplusmnci

testy to pewnoplusmncent raquoe dziaordfaspokoacutej o zmiany

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Sprawdzamy poprawnoplusmncent kodu

Czy robi to co chcemyWykrywamy bordfbrvbardy

Zwibrvbarkszajiexcl jakoplusmncent kodu

czy kod jest uraquoywalny (ordfatwo go testowacent)czy jest moduordfowyordfatwo sibrvbar integruje

Testowanie skutkuje lepszym designem

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Testy to kontrakt na piplusmnmie

rodzaj dokumentacji (samodokumentujiexclcy sibrvbar kod)lista przykordfadoacutewistniejiexclce testy pozwalajiexcl na wykrycie bordfbrvbardoacutew regresji

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Wady (do wytrenowania)

Wymagajiexcl czasu

na napisaniena utrzymanie

Wymagajiexcl wibrvbarcej od programisty

umiejbrvbartnoplusmncidyscypliny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Android - TestowanieKsiiexclraquoka na dobry pocziexcltek

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

RoboSpecshttpsgithubcomjbrechtelrobospecs

Specs2httpetorreborregithubcomspecs2

Calculonhttpsgithubcomkaepplercalculon

Android Junit Reporthttpsgithubcomjsankeyandroid-junit-report

EasyMockhttpeasymockorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

Borachiohttpborachiocom

Andjecthttpsgithubcomko5tikandject

Android Maven Pluginhttpcodegooglecompmaven-android-plugin

Vogarhttpcodegooglecompvogar

Caliperhttpcodegooglecompcaliper

roacutedordfoacute Manfred Moser - Testing Android Apps Going from Zero toHero - httpwwwsimpligilitycom

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaAnatomia testowania

Aplikacje w androidzie zorganizowane siexcl w paczki (AndroidPacKage)

Test w Androidzie to teraquo paczka (apk)

Paczki w Androidzie nie majiexcl dostbrvbarpu do swojego kodu(security)

Testowanie uraquoywa instrumentacji dzibrvbarki ktoacuterej test i aplikacjatestowana pracujiexcl w tym samym procesie

warunek podpisane siexcl tym samym kluczemUwazamy na biblioteki w teplusmncie i aplikacji testowanej - niemogiexcl sibrvbar powtarzacent (Conversion to Dalvik format failed lubbordfbrvbardy w czasie wykonania)

Uprawnienia (permissions) siexcl takie jak dla aplikacji testowanej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaUruchamianie

AndroidManifestxml

ltmanifest package=plmobiletrendsconftestsgtltuses-library androidname=androidtestrunner gtltinstrumentation androidtargetPackage=plmobiletrendsconf

androidname=androidtestInstrumentationTestRunner gt

Uruchamianie

adb shell am instrumentplmobiletrendsconftestsandroidtestInstrumentationTestRunner

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaZastosowanie

Testy jednostkowe - wolne (kompilacja dex aapt adb install)

jeszcze wolniej (emulator)po co w ogoacutele testowacent to na urziexcldzeniuemulatorze

Testy funkcjonalne

tak samo wolnotrudno napisacent przeczytacent utrzymacent

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 3: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

O mnie

Organizator konferencji Mobilizationpl w odzi

Programista aplikacji mobilnych w rmie Mobica

Prawie 3 lata doplusmnwiadczenia w j2mePonad 1 w Androidzie

Animator JUG oacutedsup1 httpinfolodzjugpl

Chciaordfby pisacent bloga Blog programisty Android

httpblogprogramistyandroidblogspotcom

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Testowacent czy nie testowacent o to jest pytanie

Nie waraquone jak ale waraquone raquoeby testowacent

Jednostkowo Funkcjonalnie IntegracyjneManualnie AutomatycznieWydajnoplusmnciowo

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Szczbrvbarplusmnliwi programiplusmnci

testy to pewnoplusmncent raquoe dziaordfaspokoacutej o zmiany

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Sprawdzamy poprawnoplusmncent kodu

Czy robi to co chcemyWykrywamy bordfbrvbardy

Zwibrvbarkszajiexcl jakoplusmncent kodu

czy kod jest uraquoywalny (ordfatwo go testowacent)czy jest moduordfowyordfatwo sibrvbar integruje

Testowanie skutkuje lepszym designem

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Testy to kontrakt na piplusmnmie

rodzaj dokumentacji (samodokumentujiexclcy sibrvbar kod)lista przykordfadoacutewistniejiexclce testy pozwalajiexcl na wykrycie bordfbrvbardoacutew regresji

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Wady (do wytrenowania)

Wymagajiexcl czasu

na napisaniena utrzymanie

Wymagajiexcl wibrvbarcej od programisty

umiejbrvbartnoplusmncidyscypliny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Android - TestowanieKsiiexclraquoka na dobry pocziexcltek

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

RoboSpecshttpsgithubcomjbrechtelrobospecs

Specs2httpetorreborregithubcomspecs2

Calculonhttpsgithubcomkaepplercalculon

Android Junit Reporthttpsgithubcomjsankeyandroid-junit-report

EasyMockhttpeasymockorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

Borachiohttpborachiocom

Andjecthttpsgithubcomko5tikandject

Android Maven Pluginhttpcodegooglecompmaven-android-plugin

Vogarhttpcodegooglecompvogar

Caliperhttpcodegooglecompcaliper

roacutedordfoacute Manfred Moser - Testing Android Apps Going from Zero toHero - httpwwwsimpligilitycom

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaAnatomia testowania

Aplikacje w androidzie zorganizowane siexcl w paczki (AndroidPacKage)

Test w Androidzie to teraquo paczka (apk)

Paczki w Androidzie nie majiexcl dostbrvbarpu do swojego kodu(security)

Testowanie uraquoywa instrumentacji dzibrvbarki ktoacuterej test i aplikacjatestowana pracujiexcl w tym samym procesie

warunek podpisane siexcl tym samym kluczemUwazamy na biblioteki w teplusmncie i aplikacji testowanej - niemogiexcl sibrvbar powtarzacent (Conversion to Dalvik format failed lubbordfbrvbardy w czasie wykonania)

Uprawnienia (permissions) siexcl takie jak dla aplikacji testowanej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaUruchamianie

AndroidManifestxml

ltmanifest package=plmobiletrendsconftestsgtltuses-library androidname=androidtestrunner gtltinstrumentation androidtargetPackage=plmobiletrendsconf

androidname=androidtestInstrumentationTestRunner gt

Uruchamianie

adb shell am instrumentplmobiletrendsconftestsandroidtestInstrumentationTestRunner

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaZastosowanie

Testy jednostkowe - wolne (kompilacja dex aapt adb install)

jeszcze wolniej (emulator)po co w ogoacutele testowacent to na urziexcldzeniuemulatorze

Testy funkcjonalne

tak samo wolnotrudno napisacent przeczytacent utrzymacent

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 4: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Testowacent czy nie testowacent o to jest pytanie

Nie waraquone jak ale waraquone raquoeby testowacent

Jednostkowo Funkcjonalnie IntegracyjneManualnie AutomatycznieWydajnoplusmnciowo

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Szczbrvbarplusmnliwi programiplusmnci

testy to pewnoplusmncent raquoe dziaordfaspokoacutej o zmiany

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Sprawdzamy poprawnoplusmncent kodu

Czy robi to co chcemyWykrywamy bordfbrvbardy

Zwibrvbarkszajiexcl jakoplusmncent kodu

czy kod jest uraquoywalny (ordfatwo go testowacent)czy jest moduordfowyordfatwo sibrvbar integruje

Testowanie skutkuje lepszym designem

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Testy to kontrakt na piplusmnmie

rodzaj dokumentacji (samodokumentujiexclcy sibrvbar kod)lista przykordfadoacutewistniejiexclce testy pozwalajiexcl na wykrycie bordfbrvbardoacutew regresji

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Wady (do wytrenowania)

Wymagajiexcl czasu

na napisaniena utrzymanie

Wymagajiexcl wibrvbarcej od programisty

umiejbrvbartnoplusmncidyscypliny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Android - TestowanieKsiiexclraquoka na dobry pocziexcltek

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

RoboSpecshttpsgithubcomjbrechtelrobospecs

Specs2httpetorreborregithubcomspecs2

Calculonhttpsgithubcomkaepplercalculon

Android Junit Reporthttpsgithubcomjsankeyandroid-junit-report

EasyMockhttpeasymockorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

Borachiohttpborachiocom

Andjecthttpsgithubcomko5tikandject

Android Maven Pluginhttpcodegooglecompmaven-android-plugin

Vogarhttpcodegooglecompvogar

Caliperhttpcodegooglecompcaliper

roacutedordfoacute Manfred Moser - Testing Android Apps Going from Zero toHero - httpwwwsimpligilitycom

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaAnatomia testowania

Aplikacje w androidzie zorganizowane siexcl w paczki (AndroidPacKage)

Test w Androidzie to teraquo paczka (apk)

Paczki w Androidzie nie majiexcl dostbrvbarpu do swojego kodu(security)

Testowanie uraquoywa instrumentacji dzibrvbarki ktoacuterej test i aplikacjatestowana pracujiexcl w tym samym procesie

warunek podpisane siexcl tym samym kluczemUwazamy na biblioteki w teplusmncie i aplikacji testowanej - niemogiexcl sibrvbar powtarzacent (Conversion to Dalvik format failed lubbordfbrvbardy w czasie wykonania)

Uprawnienia (permissions) siexcl takie jak dla aplikacji testowanej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaUruchamianie

AndroidManifestxml

ltmanifest package=plmobiletrendsconftestsgtltuses-library androidname=androidtestrunner gtltinstrumentation androidtargetPackage=plmobiletrendsconf

androidname=androidtestInstrumentationTestRunner gt

Uruchamianie

adb shell am instrumentplmobiletrendsconftestsandroidtestInstrumentationTestRunner

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaZastosowanie

Testy jednostkowe - wolne (kompilacja dex aapt adb install)

jeszcze wolniej (emulator)po co w ogoacutele testowacent to na urziexcldzeniuemulatorze

Testy funkcjonalne

tak samo wolnotrudno napisacent przeczytacent utrzymacent

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 5: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Testowacent czy nie testowacent o to jest pytanie

Nie waraquone jak ale waraquone raquoeby testowacent

Jednostkowo Funkcjonalnie IntegracyjneManualnie AutomatycznieWydajnoplusmnciowo

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Szczbrvbarplusmnliwi programiplusmnci

testy to pewnoplusmncent raquoe dziaordfaspokoacutej o zmiany

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Sprawdzamy poprawnoplusmncent kodu

Czy robi to co chcemyWykrywamy bordfbrvbardy

Zwibrvbarkszajiexcl jakoplusmncent kodu

czy kod jest uraquoywalny (ordfatwo go testowacent)czy jest moduordfowyordfatwo sibrvbar integruje

Testowanie skutkuje lepszym designem

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Testy to kontrakt na piplusmnmie

rodzaj dokumentacji (samodokumentujiexclcy sibrvbar kod)lista przykordfadoacutewistniejiexclce testy pozwalajiexcl na wykrycie bordfbrvbardoacutew regresji

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Wady (do wytrenowania)

Wymagajiexcl czasu

na napisaniena utrzymanie

Wymagajiexcl wibrvbarcej od programisty

umiejbrvbartnoplusmncidyscypliny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Android - TestowanieKsiiexclraquoka na dobry pocziexcltek

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

RoboSpecshttpsgithubcomjbrechtelrobospecs

Specs2httpetorreborregithubcomspecs2

Calculonhttpsgithubcomkaepplercalculon

Android Junit Reporthttpsgithubcomjsankeyandroid-junit-report

EasyMockhttpeasymockorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

Borachiohttpborachiocom

Andjecthttpsgithubcomko5tikandject

Android Maven Pluginhttpcodegooglecompmaven-android-plugin

Vogarhttpcodegooglecompvogar

Caliperhttpcodegooglecompcaliper

roacutedordfoacute Manfred Moser - Testing Android Apps Going from Zero toHero - httpwwwsimpligilitycom

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaAnatomia testowania

Aplikacje w androidzie zorganizowane siexcl w paczki (AndroidPacKage)

Test w Androidzie to teraquo paczka (apk)

Paczki w Androidzie nie majiexcl dostbrvbarpu do swojego kodu(security)

Testowanie uraquoywa instrumentacji dzibrvbarki ktoacuterej test i aplikacjatestowana pracujiexcl w tym samym procesie

warunek podpisane siexcl tym samym kluczemUwazamy na biblioteki w teplusmncie i aplikacji testowanej - niemogiexcl sibrvbar powtarzacent (Conversion to Dalvik format failed lubbordfbrvbardy w czasie wykonania)

Uprawnienia (permissions) siexcl takie jak dla aplikacji testowanej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaUruchamianie

AndroidManifestxml

ltmanifest package=plmobiletrendsconftestsgtltuses-library androidname=androidtestrunner gtltinstrumentation androidtargetPackage=plmobiletrendsconf

androidname=androidtestInstrumentationTestRunner gt

Uruchamianie

adb shell am instrumentplmobiletrendsconftestsandroidtestInstrumentationTestRunner

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaZastosowanie

Testy jednostkowe - wolne (kompilacja dex aapt adb install)

jeszcze wolniej (emulator)po co w ogoacutele testowacent to na urziexcldzeniuemulatorze

Testy funkcjonalne

tak samo wolnotrudno napisacent przeczytacent utrzymacent

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 6: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Szczbrvbarplusmnliwi programiplusmnci

testy to pewnoplusmncent raquoe dziaordfaspokoacutej o zmiany

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Sprawdzamy poprawnoplusmncent kodu

Czy robi to co chcemyWykrywamy bordfbrvbardy

Zwibrvbarkszajiexcl jakoplusmncent kodu

czy kod jest uraquoywalny (ordfatwo go testowacent)czy jest moduordfowyordfatwo sibrvbar integruje

Testowanie skutkuje lepszym designem

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Testy to kontrakt na piplusmnmie

rodzaj dokumentacji (samodokumentujiexclcy sibrvbar kod)lista przykordfadoacutewistniejiexclce testy pozwalajiexcl na wykrycie bordfbrvbardoacutew regresji

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Wady (do wytrenowania)

Wymagajiexcl czasu

na napisaniena utrzymanie

Wymagajiexcl wibrvbarcej od programisty

umiejbrvbartnoplusmncidyscypliny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Android - TestowanieKsiiexclraquoka na dobry pocziexcltek

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

RoboSpecshttpsgithubcomjbrechtelrobospecs

Specs2httpetorreborregithubcomspecs2

Calculonhttpsgithubcomkaepplercalculon

Android Junit Reporthttpsgithubcomjsankeyandroid-junit-report

EasyMockhttpeasymockorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

Borachiohttpborachiocom

Andjecthttpsgithubcomko5tikandject

Android Maven Pluginhttpcodegooglecompmaven-android-plugin

Vogarhttpcodegooglecompvogar

Caliperhttpcodegooglecompcaliper

roacutedordfoacute Manfred Moser - Testing Android Apps Going from Zero toHero - httpwwwsimpligilitycom

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaAnatomia testowania

Aplikacje w androidzie zorganizowane siexcl w paczki (AndroidPacKage)

Test w Androidzie to teraquo paczka (apk)

Paczki w Androidzie nie majiexcl dostbrvbarpu do swojego kodu(security)

Testowanie uraquoywa instrumentacji dzibrvbarki ktoacuterej test i aplikacjatestowana pracujiexcl w tym samym procesie

warunek podpisane siexcl tym samym kluczemUwazamy na biblioteki w teplusmncie i aplikacji testowanej - niemogiexcl sibrvbar powtarzacent (Conversion to Dalvik format failed lubbordfbrvbardy w czasie wykonania)

Uprawnienia (permissions) siexcl takie jak dla aplikacji testowanej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaUruchamianie

AndroidManifestxml

ltmanifest package=plmobiletrendsconftestsgtltuses-library androidname=androidtestrunner gtltinstrumentation androidtargetPackage=plmobiletrendsconf

androidname=androidtestInstrumentationTestRunner gt

Uruchamianie

adb shell am instrumentplmobiletrendsconftestsandroidtestInstrumentationTestRunner

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaZastosowanie

Testy jednostkowe - wolne (kompilacja dex aapt adb install)

jeszcze wolniej (emulator)po co w ogoacutele testowacent to na urziexcldzeniuemulatorze

Testy funkcjonalne

tak samo wolnotrudno napisacent przeczytacent utrzymacent

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 7: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Sprawdzamy poprawnoplusmncent kodu

Czy robi to co chcemyWykrywamy bordfbrvbardy

Zwibrvbarkszajiexcl jakoplusmncent kodu

czy kod jest uraquoywalny (ordfatwo go testowacent)czy jest moduordfowyordfatwo sibrvbar integruje

Testowanie skutkuje lepszym designem

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Testy to kontrakt na piplusmnmie

rodzaj dokumentacji (samodokumentujiexclcy sibrvbar kod)lista przykordfadoacutewistniejiexclce testy pozwalajiexcl na wykrycie bordfbrvbardoacutew regresji

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Wady (do wytrenowania)

Wymagajiexcl czasu

na napisaniena utrzymanie

Wymagajiexcl wibrvbarcej od programisty

umiejbrvbartnoplusmncidyscypliny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Android - TestowanieKsiiexclraquoka na dobry pocziexcltek

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

RoboSpecshttpsgithubcomjbrechtelrobospecs

Specs2httpetorreborregithubcomspecs2

Calculonhttpsgithubcomkaepplercalculon

Android Junit Reporthttpsgithubcomjsankeyandroid-junit-report

EasyMockhttpeasymockorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

Borachiohttpborachiocom

Andjecthttpsgithubcomko5tikandject

Android Maven Pluginhttpcodegooglecompmaven-android-plugin

Vogarhttpcodegooglecompvogar

Caliperhttpcodegooglecompcaliper

roacutedordfoacute Manfred Moser - Testing Android Apps Going from Zero toHero - httpwwwsimpligilitycom

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaAnatomia testowania

Aplikacje w androidzie zorganizowane siexcl w paczki (AndroidPacKage)

Test w Androidzie to teraquo paczka (apk)

Paczki w Androidzie nie majiexcl dostbrvbarpu do swojego kodu(security)

Testowanie uraquoywa instrumentacji dzibrvbarki ktoacuterej test i aplikacjatestowana pracujiexcl w tym samym procesie

warunek podpisane siexcl tym samym kluczemUwazamy na biblioteki w teplusmncie i aplikacji testowanej - niemogiexcl sibrvbar powtarzacent (Conversion to Dalvik format failed lubbordfbrvbardy w czasie wykonania)

Uprawnienia (permissions) siexcl takie jak dla aplikacji testowanej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaUruchamianie

AndroidManifestxml

ltmanifest package=plmobiletrendsconftestsgtltuses-library androidname=androidtestrunner gtltinstrumentation androidtargetPackage=plmobiletrendsconf

androidname=androidtestInstrumentationTestRunner gt

Uruchamianie

adb shell am instrumentplmobiletrendsconftestsandroidtestInstrumentationTestRunner

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaZastosowanie

Testy jednostkowe - wolne (kompilacja dex aapt adb install)

jeszcze wolniej (emulator)po co w ogoacutele testowacent to na urziexcldzeniuemulatorze

Testy funkcjonalne

tak samo wolnotrudno napisacent przeczytacent utrzymacent

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 8: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

(Potencjalne) zalety

Testy to kontrakt na piplusmnmie

rodzaj dokumentacji (samodokumentujiexclcy sibrvbar kod)lista przykordfadoacutewistniejiexclce testy pozwalajiexcl na wykrycie bordfbrvbardoacutew regresji

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Wady (do wytrenowania)

Wymagajiexcl czasu

na napisaniena utrzymanie

Wymagajiexcl wibrvbarcej od programisty

umiejbrvbartnoplusmncidyscypliny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Android - TestowanieKsiiexclraquoka na dobry pocziexcltek

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

RoboSpecshttpsgithubcomjbrechtelrobospecs

Specs2httpetorreborregithubcomspecs2

Calculonhttpsgithubcomkaepplercalculon

Android Junit Reporthttpsgithubcomjsankeyandroid-junit-report

EasyMockhttpeasymockorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

Borachiohttpborachiocom

Andjecthttpsgithubcomko5tikandject

Android Maven Pluginhttpcodegooglecompmaven-android-plugin

Vogarhttpcodegooglecompvogar

Caliperhttpcodegooglecompcaliper

roacutedordfoacute Manfred Moser - Testing Android Apps Going from Zero toHero - httpwwwsimpligilitycom

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaAnatomia testowania

Aplikacje w androidzie zorganizowane siexcl w paczki (AndroidPacKage)

Test w Androidzie to teraquo paczka (apk)

Paczki w Androidzie nie majiexcl dostbrvbarpu do swojego kodu(security)

Testowanie uraquoywa instrumentacji dzibrvbarki ktoacuterej test i aplikacjatestowana pracujiexcl w tym samym procesie

warunek podpisane siexcl tym samym kluczemUwazamy na biblioteki w teplusmncie i aplikacji testowanej - niemogiexcl sibrvbar powtarzacent (Conversion to Dalvik format failed lubbordfbrvbardy w czasie wykonania)

Uprawnienia (permissions) siexcl takie jak dla aplikacji testowanej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaUruchamianie

AndroidManifestxml

ltmanifest package=plmobiletrendsconftestsgtltuses-library androidname=androidtestrunner gtltinstrumentation androidtargetPackage=plmobiletrendsconf

androidname=androidtestInstrumentationTestRunner gt

Uruchamianie

adb shell am instrumentplmobiletrendsconftestsandroidtestInstrumentationTestRunner

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaZastosowanie

Testy jednostkowe - wolne (kompilacja dex aapt adb install)

jeszcze wolniej (emulator)po co w ogoacutele testowacent to na urziexcldzeniuemulatorze

Testy funkcjonalne

tak samo wolnotrudno napisacent przeczytacent utrzymacent

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 9: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Wady (do wytrenowania)

Wymagajiexcl czasu

na napisaniena utrzymanie

Wymagajiexcl wibrvbarcej od programisty

umiejbrvbartnoplusmncidyscypliny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Android - TestowanieKsiiexclraquoka na dobry pocziexcltek

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

RoboSpecshttpsgithubcomjbrechtelrobospecs

Specs2httpetorreborregithubcomspecs2

Calculonhttpsgithubcomkaepplercalculon

Android Junit Reporthttpsgithubcomjsankeyandroid-junit-report

EasyMockhttpeasymockorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

Borachiohttpborachiocom

Andjecthttpsgithubcomko5tikandject

Android Maven Pluginhttpcodegooglecompmaven-android-plugin

Vogarhttpcodegooglecompvogar

Caliperhttpcodegooglecompcaliper

roacutedordfoacute Manfred Moser - Testing Android Apps Going from Zero toHero - httpwwwsimpligilitycom

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaAnatomia testowania

Aplikacje w androidzie zorganizowane siexcl w paczki (AndroidPacKage)

Test w Androidzie to teraquo paczka (apk)

Paczki w Androidzie nie majiexcl dostbrvbarpu do swojego kodu(security)

Testowanie uraquoywa instrumentacji dzibrvbarki ktoacuterej test i aplikacjatestowana pracujiexcl w tym samym procesie

warunek podpisane siexcl tym samym kluczemUwazamy na biblioteki w teplusmncie i aplikacji testowanej - niemogiexcl sibrvbar powtarzacent (Conversion to Dalvik format failed lubbordfbrvbardy w czasie wykonania)

Uprawnienia (permissions) siexcl takie jak dla aplikacji testowanej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaUruchamianie

AndroidManifestxml

ltmanifest package=plmobiletrendsconftestsgtltuses-library androidname=androidtestrunner gtltinstrumentation androidtargetPackage=plmobiletrendsconf

androidname=androidtestInstrumentationTestRunner gt

Uruchamianie

adb shell am instrumentplmobiletrendsconftestsandroidtestInstrumentationTestRunner

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaZastosowanie

Testy jednostkowe - wolne (kompilacja dex aapt adb install)

jeszcze wolniej (emulator)po co w ogoacutele testowacent to na urziexcldzeniuemulatorze

Testy funkcjonalne

tak samo wolnotrudno napisacent przeczytacent utrzymacent

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 10: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Android - TestowanieKsiiexclraquoka na dobry pocziexcltek

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

RoboSpecshttpsgithubcomjbrechtelrobospecs

Specs2httpetorreborregithubcomspecs2

Calculonhttpsgithubcomkaepplercalculon

Android Junit Reporthttpsgithubcomjsankeyandroid-junit-report

EasyMockhttpeasymockorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

Borachiohttpborachiocom

Andjecthttpsgithubcomko5tikandject

Android Maven Pluginhttpcodegooglecompmaven-android-plugin

Vogarhttpcodegooglecompvogar

Caliperhttpcodegooglecompcaliper

roacutedordfoacute Manfred Moser - Testing Android Apps Going from Zero toHero - httpwwwsimpligilitycom

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaAnatomia testowania

Aplikacje w androidzie zorganizowane siexcl w paczki (AndroidPacKage)

Test w Androidzie to teraquo paczka (apk)

Paczki w Androidzie nie majiexcl dostbrvbarpu do swojego kodu(security)

Testowanie uraquoywa instrumentacji dzibrvbarki ktoacuterej test i aplikacjatestowana pracujiexcl w tym samym procesie

warunek podpisane siexcl tym samym kluczemUwazamy na biblioteki w teplusmncie i aplikacji testowanej - niemogiexcl sibrvbar powtarzacent (Conversion to Dalvik format failed lubbordfbrvbardy w czasie wykonania)

Uprawnienia (permissions) siexcl takie jak dla aplikacji testowanej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaUruchamianie

AndroidManifestxml

ltmanifest package=plmobiletrendsconftestsgtltuses-library androidname=androidtestrunner gtltinstrumentation androidtargetPackage=plmobiletrendsconf

androidname=androidtestInstrumentationTestRunner gt

Uruchamianie

adb shell am instrumentplmobiletrendsconftestsandroidtestInstrumentationTestRunner

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaZastosowanie

Testy jednostkowe - wolne (kompilacja dex aapt adb install)

jeszcze wolniej (emulator)po co w ogoacutele testowacent to na urziexcldzeniuemulatorze

Testy funkcjonalne

tak samo wolnotrudno napisacent przeczytacent utrzymacent

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 11: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Android - TestowanieKsiiexclraquoka na dobry pocziexcltek

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

RoboSpecshttpsgithubcomjbrechtelrobospecs

Specs2httpetorreborregithubcomspecs2

Calculonhttpsgithubcomkaepplercalculon

Android Junit Reporthttpsgithubcomjsankeyandroid-junit-report

EasyMockhttpeasymockorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

Borachiohttpborachiocom

Andjecthttpsgithubcomko5tikandject

Android Maven Pluginhttpcodegooglecompmaven-android-plugin

Vogarhttpcodegooglecompvogar

Caliperhttpcodegooglecompcaliper

roacutedordfoacute Manfred Moser - Testing Android Apps Going from Zero toHero - httpwwwsimpligilitycom

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaAnatomia testowania

Aplikacje w androidzie zorganizowane siexcl w paczki (AndroidPacKage)

Test w Androidzie to teraquo paczka (apk)

Paczki w Androidzie nie majiexcl dostbrvbarpu do swojego kodu(security)

Testowanie uraquoywa instrumentacji dzibrvbarki ktoacuterej test i aplikacjatestowana pracujiexcl w tym samym procesie

warunek podpisane siexcl tym samym kluczemUwazamy na biblioteki w teplusmncie i aplikacji testowanej - niemogiexcl sibrvbar powtarzacent (Conversion to Dalvik format failed lubbordfbrvbardy w czasie wykonania)

Uprawnienia (permissions) siexcl takie jak dla aplikacji testowanej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaUruchamianie

AndroidManifestxml

ltmanifest package=plmobiletrendsconftestsgtltuses-library androidname=androidtestrunner gtltinstrumentation androidtargetPackage=plmobiletrendsconf

androidname=androidtestInstrumentationTestRunner gt

Uruchamianie

adb shell am instrumentplmobiletrendsconftestsandroidtestInstrumentationTestRunner

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaZastosowanie

Testy jednostkowe - wolne (kompilacja dex aapt adb install)

jeszcze wolniej (emulator)po co w ogoacutele testowacent to na urziexcldzeniuemulatorze

Testy funkcjonalne

tak samo wolnotrudno napisacent przeczytacent utrzymacent

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 12: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

RoboSpecshttpsgithubcomjbrechtelrobospecs

Specs2httpetorreborregithubcomspecs2

Calculonhttpsgithubcomkaepplercalculon

Android Junit Reporthttpsgithubcomjsankeyandroid-junit-report

EasyMockhttpeasymockorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

Borachiohttpborachiocom

Andjecthttpsgithubcomko5tikandject

Android Maven Pluginhttpcodegooglecompmaven-android-plugin

Vogarhttpcodegooglecompvogar

Caliperhttpcodegooglecompcaliper

roacutedordfoacute Manfred Moser - Testing Android Apps Going from Zero toHero - httpwwwsimpligilitycom

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaAnatomia testowania

Aplikacje w androidzie zorganizowane siexcl w paczki (AndroidPacKage)

Test w Androidzie to teraquo paczka (apk)

Paczki w Androidzie nie majiexcl dostbrvbarpu do swojego kodu(security)

Testowanie uraquoywa instrumentacji dzibrvbarki ktoacuterej test i aplikacjatestowana pracujiexcl w tym samym procesie

warunek podpisane siexcl tym samym kluczemUwazamy na biblioteki w teplusmncie i aplikacji testowanej - niemogiexcl sibrvbar powtarzacent (Conversion to Dalvik format failed lubbordfbrvbardy w czasie wykonania)

Uprawnienia (permissions) siexcl takie jak dla aplikacji testowanej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaUruchamianie

AndroidManifestxml

ltmanifest package=plmobiletrendsconftestsgtltuses-library androidname=androidtestrunner gtltinstrumentation androidtargetPackage=plmobiletrendsconf

androidname=androidtestInstrumentationTestRunner gt

Uruchamianie

adb shell am instrumentplmobiletrendsconftestsandroidtestInstrumentationTestRunner

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaZastosowanie

Testy jednostkowe - wolne (kompilacja dex aapt adb install)

jeszcze wolniej (emulator)po co w ogoacutele testowacent to na urziexcldzeniuemulatorze

Testy funkcjonalne

tak samo wolnotrudno napisacent przeczytacent utrzymacent

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 13: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Moraquoliwoplusmnci

Borachiohttpborachiocom

Andjecthttpsgithubcomko5tikandject

Android Maven Pluginhttpcodegooglecompmaven-android-plugin

Vogarhttpcodegooglecompvogar

Caliperhttpcodegooglecompcaliper

roacutedordfoacute Manfred Moser - Testing Android Apps Going from Zero toHero - httpwwwsimpligilitycom

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaAnatomia testowania

Aplikacje w androidzie zorganizowane siexcl w paczki (AndroidPacKage)

Test w Androidzie to teraquo paczka (apk)

Paczki w Androidzie nie majiexcl dostbrvbarpu do swojego kodu(security)

Testowanie uraquoywa instrumentacji dzibrvbarki ktoacuterej test i aplikacjatestowana pracujiexcl w tym samym procesie

warunek podpisane siexcl tym samym kluczemUwazamy na biblioteki w teplusmncie i aplikacji testowanej - niemogiexcl sibrvbar powtarzacent (Conversion to Dalvik format failed lubbordfbrvbardy w czasie wykonania)

Uprawnienia (permissions) siexcl takie jak dla aplikacji testowanej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaUruchamianie

AndroidManifestxml

ltmanifest package=plmobiletrendsconftestsgtltuses-library androidname=androidtestrunner gtltinstrumentation androidtargetPackage=plmobiletrendsconf

androidname=androidtestInstrumentationTestRunner gt

Uruchamianie

adb shell am instrumentplmobiletrendsconftestsandroidtestInstrumentationTestRunner

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaZastosowanie

Testy jednostkowe - wolne (kompilacja dex aapt adb install)

jeszcze wolniej (emulator)po co w ogoacutele testowacent to na urziexcldzeniuemulatorze

Testy funkcjonalne

tak samo wolnotrudno napisacent przeczytacent utrzymacent

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 14: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaAnatomia testowania

Aplikacje w androidzie zorganizowane siexcl w paczki (AndroidPacKage)

Test w Androidzie to teraquo paczka (apk)

Paczki w Androidzie nie majiexcl dostbrvbarpu do swojego kodu(security)

Testowanie uraquoywa instrumentacji dzibrvbarki ktoacuterej test i aplikacjatestowana pracujiexcl w tym samym procesie

warunek podpisane siexcl tym samym kluczemUwazamy na biblioteki w teplusmncie i aplikacji testowanej - niemogiexcl sibrvbar powtarzacent (Conversion to Dalvik format failed lubbordfbrvbardy w czasie wykonania)

Uprawnienia (permissions) siexcl takie jak dla aplikacji testowanej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaUruchamianie

AndroidManifestxml

ltmanifest package=plmobiletrendsconftestsgtltuses-library androidname=androidtestrunner gtltinstrumentation androidtargetPackage=plmobiletrendsconf

androidname=androidtestInstrumentationTestRunner gt

Uruchamianie

adb shell am instrumentplmobiletrendsconftestsandroidtestInstrumentationTestRunner

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaZastosowanie

Testy jednostkowe - wolne (kompilacja dex aapt adb install)

jeszcze wolniej (emulator)po co w ogoacutele testowacent to na urziexcldzeniuemulatorze

Testy funkcjonalne

tak samo wolnotrudno napisacent przeczytacent utrzymacent

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 15: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaUruchamianie

AndroidManifestxml

ltmanifest package=plmobiletrendsconftestsgtltuses-library androidname=androidtestrunner gtltinstrumentation androidtargetPackage=plmobiletrendsconf

androidname=androidtestInstrumentationTestRunner gt

Uruchamianie

adb shell am instrumentplmobiletrendsconftestsandroidtestInstrumentationTestRunner

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaZastosowanie

Testy jednostkowe - wolne (kompilacja dex aapt adb install)

jeszcze wolniej (emulator)po co w ogoacutele testowacent to na urziexcldzeniuemulatorze

Testy funkcjonalne

tak samo wolnotrudno napisacent przeczytacent utrzymacent

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 16: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

InstrumentacjaZastosowanie

Testy jednostkowe - wolne (kompilacja dex aapt adb install)

jeszcze wolniej (emulator)po co w ogoacutele testowacent to na urziexcldzeniuemulatorze

Testy funkcjonalne

tak samo wolnotrudno napisacent przeczytacent utrzymacent

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 17: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidInsideandroidtest

androidtestInstrumentationTestCase

umoraquoliwia korzystanie z instrumentacji

symulowanie wciplusmnnibrvbarcia klawiszytestowanie metod raquoycia activity (onStart onCreate)

androidtestActivityInstrumentationTestCase2

najczbrvbarplusmnciej uraquoywana klasagetActivity() - zaordfatwia za nas startowanie

androidtestServiceTestCase

przetestowacent cykl raquoycia serwisu (onBind)

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 18: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

androidtestmock

To nie jest mocking framework typu mockito lub easymock

Bardziej zbliraquoone do denicji stuboacutew (M Fowler)To klasy ktoacuterych

metody rzucajiexcl wyjiexcltkaminadpisujemy metody ktoacutere chcemy uraquoycent

Sordfuraquoiexcl izolacji od plusmnrodowiska

MockContextMockContentProvider (baza danych)MockContentResolver (jw)

atwiej coplusmn wstrzykniexclcentNiespecjalnie przydatne

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 19: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Monkey i Monkeyrunner

Monkey

wysyordfanie losowych eventoacutew (klawiatura mysz rotacja)tryb serwera (oczekiwanie na polecenia tekstowe)tryb skryptoacutewdokumentacja w kodzie sup1roacutedordfowym SDK

Monkeyrunner

pythonjythonumoraquoliwia

startowanie activitywysyordfanie eventoacutew (klawiatura mysz)screenshoty

moraquona nagracent test uraquoywajiexclc recorder-a (w kodzie sdk)szukaj helppy w kodzie sup1roacutedordfowym SDK

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 20: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 21: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robotium

Jak Selenium ale dla AndroidTesty typu black box

nie wymagajiexcl kodu aplikacji testowanej (ale mogiexcl)

Testy przyjazne w dotyku - proplusmnciej niraquo instrumentacjazgrabne APIordfatwo sibrvbar piszbrvbarordfatwo sibrvbar czyta

Duraquoe i aktywne community i regularne release-y (30 wlistopadzie 31 w styczniu)

Wadylimit 1 aplikacji na test przejplusmncie do innej aplikacji (np sms)kolaquoczy test (limit instrumentacji)moraquoe i ordfadniej ale wcale nie szybciejzmiany UI = zmiany testoacutew

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 22: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

TestDroid recorder

BitBar - httptestdroidcom

Plugin do eclipse

Nagrywanie testoacutew wynikiem siexcl

testy robotiumtesty monkeyrunner

Pordfatny

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 23: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

javalangRuntimeException Stub

androidjar - fasada potrzebna do kompilacji

Testy uruchamiane w zwykordfej Javie

SzybkieTypu black-boxatwo zrefaktorowacent

atwo osiiexclgniexclcent duraquoe pokrycie testami

bo szybko sibrvbar piszei szybko uruchamia

Maven (out of the box)

atwe mockowanie http

RobolectricaddPendingHttpResponse()

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 24: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

Robolectric

Czy to nadal Android

Brakuje jeszcze duraquoo implementacji

Doordfiexclcz sibrvbar httpsrobolectricorg

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 25: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

AndroidDriverAndroidWebDriver

Prawdziwe Selenium

Testujemy stronbrvbar internetowiexcl ale w Androidzie

Dwa tryby uraquoycia

Zdalny serwer WebDriver

Testy na hoplusmncieDowolny jbrvbarzyk programowaniaTen sam test uraquoywasz do innych przegliexcldarek

Testy androidowe (instrumentacja) - SDK Extras

Testy na androidzieDziaordfa szybciej

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 26: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 27: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

MoraquoliwoplusmnciNarzbrvbardzia

NativeDriver

httpcodegooglecompnativedriver

Reusability

Robimy to samo co Selenium klikamy wpisujemy tekstzmieniamy okna (activity)Wszyscy znajiexcl Selenium to uraquoyjmy to API jeszcze raz

Obsordfuguje wiele platform (iPhoneWindows)

Test po stronie hosta

Serwer po stronie aplikacji

Wymaga doordfiexclczenia jar-a do aplikacji

I zmiany kilku permissions

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 28: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Agenda

1 Wstbrvbarp

2 Testujmy

3 Android i testowanieMoraquoliwoplusmnciNarzbrvbardzia

4 Continuous integration

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 29: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Budowanie

antmaven

Integracja z HudsonJenkinshttpswikijenkins-ciorgdisplayJENKINSAndroid+Emulator+Plugin

Emulator w trybie headless (-no-window)Snapshots httptoolsandroidcomrecentemulatorsnapshots

Monkey

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 30: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous integration

Statyczna analiza kodu

Sonar

Marek Defecilaquoski Testowanie w systemie Android

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 31: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

WstbrvbarpTestujmy

Android i testowanieContinuous integration

Continuous Integration

Code Coverage

EmmaTestwell CTC for java (pordfatne)

I tak bbrvbardziemy musieli coplusmn napisacent samemu

python

Marek Defecilaquoski Testowanie w systemie Android

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 32: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

Pytania

marekdef+mobiletrendsgmailcom

Dzibrvbarkujbrvbar za uwagbrvbar

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration
Page 33: estoTwanie w systemie Android - MobileTrends.pl2012.mobiletrends.pl/prezentacje/d/06-Defecinski.pdf · 2013-09-01 · Wst¦p estujmy!T Android i testowanie Continuous integration

Pytania

marekdef+mobiletrendsgmailcomDzibrvbarkujbrvbar za uwagbrvbar

  • Wstęp
  • Testujmy
  • Android i testowanie
    • Możliwości
    • Narzędzia
      • Continuous integration