fbpx

Android ❤️ Unit Testy

czyli praktyczny kurs testów dla Android developerów

Z naszych szkoleń na AndroidPro i w Szkole Kotlina skorzystało już ponad 493 developerów

Pytanie nie brzmi, czy powinno się testować kodzik.
 

Prawdziwe pytanie to – czy możesz sobie pozwolić na brak testów?

Gdy już ogarniesz testy, to będziesz mieć…
  • lepszą pozycję na rynku pracy (zobacz w ilu ogłoszeniach wspominają o jUnit lub Mockito)
  • zrozumienie biznesu stojącego za aplikacją
  • mniej wyrwanych włosów z głowy podczas debugowania
  • lepszą produktywność: nie zrobisz tyle błędów typu “to miało być w ifie, a nie w elsie”
  • szybszy development: zamiast za każdym razem odpalać apkę na emulatorze, odpalasz jedynie test

Co pisanie testów da Twojemu projektowi i firmie?

  • wydajniejszą pracę nad nowymi funkcjonalnościami
  • bezpieczniejszy refaktor (nawet w legacy)
  • większą pewność w deploymencie (nawet w piątki!!!!)
  • wzrost kultury jakości w zespole i w firmie
  • lepszą architekturę aplikacji i design kodziku – pisanie testów promuje clean architecture
  • lepszą produktywność: czytelne testy pozwalają efektywniej współpracować nad kodem w zespole
 
👉 Jeśli Twój manager lub szalony product owner upadł na głowę i twierdzi, że „my nie mamy czasu na testy”, to możesz mu przedstawić poniższe fakty…

„PM mówi, że nie mamy czasu na testy”

  • zmień project managera albo firmę [😎]
  • koszt napisania testów pod każdego taska: +10% czasu na development
  • koszt naprawy głupiego błędu, bo nie było wcześniej czasu na testy: +99999% czasu na naprawy
  • unit testy -> szybszy rozwój produktu
  • unit testy -> bezpieczniejsze i szybsze wdrożenia
Scenariusz 🚫 A: nie masz testów w projekcie:
  • bierzesz taska z backlogu
  • piszesz implementację (3h)
  • pushujesz do mastera
  • deploy do Play Store (zajmuje 3 dni)
  • część userów ma CRASH bo JSON jest źle parsowany
  • robisz rollback do poprzedniej wersji (kolejne 3 dni)
  • szukasz błędu i naprawiasz buga (1-2 dni)
  • wypuszczasz nową wersję (3 dni)
Całość: ~8 dni roboczych na wdrożenie poprawek
Scenariusz ✅ B: piszesz testy, którym możesz zaufać:
  • bierzesz taska z backlogu
  • piszesz implementację (3h)
  • tworzysz testy (1h)
  • znajdujesz błąd w formatowaniu JSONa
  • poprawiasz implementację (20min)
  • pushujesz do mastera
  • deploy do Play Store
  • userzy są szczęśliwi
Napisanie kodu trwa zajmie Ci troszkę więcej czasu, ale znacząco minimalizujesz ryzyko wystąpienia głupiego błędu na produkcji.
 
 
Zgadza się. Task zajmie troszkę więcej czasu.
 
 
Za to oszczędzisz sporo nerwów jakby coś miało pójść źle (a zgodnie z prawem Murphy’ego, na pewno pójdzie).
Co się bardziej opłaca? Matematykę zostawiam Tobie.

Są zasadniczo dwie opcje finansowania tego programu:

 
  1. Wykorzystujesz budżet szkoleniowy w firmy w której pracujesz na ten kurs (profit)
  1. Inwestujesz samodzielnie w ten kurs i dzięki temu zdobywasz lepszą pracę w firmie która budżet szkoleniowy posiada (również profit)

Czego się nauczysz w programie?

🖥️ Konfiguracja środowiska

  • jUnit5 w build.gradle
  • jUnit4 i jUnit5 – czy można mieć oba?
  • Inne sposoby na odpalanie testów
  • Struktura testu
  • Jak możemy nazwać test?
  • Praca domowa
  • Repozytorium

🧪 Test Doubles: Stub & Fake

  • Czym jest unit w unit teście?
  • Nasz System Under Test
  • Mockito: prosty Stub
  • Mockito: mockujemy finalne klasy
  • Mockowanie bez frameworków
  • Ulepszamy stuby z Mockito-Kotlin
  • doReturn vs doAnswer
  • MockK vs Mockito w stubach

🔍 Asercje bez tajemnic

  • Jak działa asercja?
  • Biblioteki z asercjami
  • Jedna asercja failuje cały test
  • A co jeśli chcemy mieć jednak wiele asercji
  • Czytelne asercje – dodawanie message
  • Budujemy własną asercje
  • Materiały dodatkowe

🧪 Test Doubles: Mock i weryfikacje

  • Oto co będziemy testować
  • Mockito: sprawdzenie argumentów wywołania metody
  • Mockito: Matchery
  • Mockito: Never

🔃 Kotlin Coroutines w testach

  • Jak przetestować korutyny?
  • runBlocking vs runBlockingTest
  • Test use case’u z suspend fun
  • Testowanie Flow

🔃 RxJava w testach

  • Single, blockingGet i TestObserver
  • Single + czas
  • Test use case’u z Single

📱Testujemy ViewModele!

  • Co testujemy? Stan początkowy viewmodelu i prosty test.
  • Obserwujemy zmiany w ViewModelu
  • Kontroluj korutyny w ViewModelu
  • Podsumowanie testu
  • Don’t repeat yourself
  • ViewModel + StateFlow

📱Model-View-Presenter

  • DispatchersFacade
  • Weryfikacja View z MockK
  • Weryfikacja View – Error
  • Budujemy robota dla View

📱Model-View-Intent

  • Przykład MVI – LoginScreen
  • Budujemy ViewRobota
  • RxJava i fasada dla Schedulerów
  • Zmiany stanu ViewRobota
  • Podsumowanie dla ViewRobotów

⛈️ Dirty Architecture

  • Wstęp
  • Konfiguracja
  • Pierwszy Use Case
  • Refaktor w Activity…
  • Refactor c.d
  • org.json.JSONObject

🧪 Inne rodzaj definicji testów: specyfikacje

  • Konfiguracja
  • Before, After
  • FreeSpec i zagnieżdżanie
  • BehaviorSpec
  • Ćwiczenie

🖥️ Wprowadzenie do CI: Github Actions

  • Jak wygląda workflow na CI?
  • Dodanie konfiguracji prosto z repozytorium
  • Quickstart
  • Bardziej złożona konfiguracja
  • Marketplace akcji
  • Co budować na PR? A co po pushu do mastera?
  • Zadanie do wykonania

🧪 Testy Parametryczne

  • jUnit5 Argument Source
  • jUnit5 dynamicTests
  • Kotest forAll
  • Type Safety w testach parametrycznych

📝 Testy API

  • Wstęp – testowanie Jsonów
  • Lokalny Json w testach
  • Gson – test mapowania
  • kotlinx.serialization – test mapowania
  • O czym pamiętać?

🖼️ GraphQL

  • Opis API
  • Aplikacja
  • Co będziemy testować
  • Test nazwy oraz emotki
  • Test waluty wraz oraz refactor
  • Test języka
  • Test Builder
  • Porównanie sposobów tworzenia danych
  • Tworzenie danych – dodatek dla DSL
  • Sanity test
  • Odpowiedzi JSON
  • Interceptor pod testy
  • Testy Happy path
  • Testy Sad path
  • Weryfikacja zmiennych
  • MockServer
  • Podsumowanie
  • Zadanie domowe

🎁 Bonusy

  • Testowanie z Log.d i Timber.d
  • DateTime + testy?
  • Test Doubles Cheatsheet
  • 7 grzechów testowania na Androidzie (nagranie webinaru)
  • Idiomatic Kotlin in Tests (Droidcon Berlin 2021)
  • Grupa dyskusyjna
  • Baza pytań rekrutacyjnych

Ogarnij testy na Androidzie. 

 

Zdobądź wiedzę

Ucz się w swoim tempie z lekcji wideo, przetestuj załączone repozytoria z kodem.
 

Wykorzystaj ją w praktyce

 

Skopiuj najlepsze patterny na testowanie do swojego projektu we wzorcach MVVM, MVI, MVP.
 
 
Jarek na Droidconie w Berlinie

Twój instruktor

Jarek Michalik

Cześć, tu Jarek! Na co dzień pomagam swoim klientom budować i rozwijać aplikacje mobilne. Siedzę w tym zawodowo od 2016 roku.
  • Google Developer Expert w dziedzinie Kotlina
  • pomagam swoim klientom rozwijać produkty oparte o aplikacje mobilne (michalik.tech)
  • Ponad 33 wystąpień na konferencjach polskich i zagranicznych
  • Tworzy i wydaje kursy Kotlin i Android (AndroidPro.io, Szkoła Kotlina, nowoczesny.dev)
  • Konfiguracja środowiska
  • Asercje bez tajemnic
  • Test Doubles: Stub & Fake
  • Test Doubles: Mock i Verify
  • Kotlin Coroutines w testach
  • RxJava w testach
  • Testujemy ViewModel
  • Testujemy Model-View-Presenter
  • Testujemy Model-View-Intent
  • Refactor pod testy, czyli Dirty Architecture
  • Inny rodzaj testów: specyfikacje
  • Wprowadzenie do CI: Github Actions
  • Testy parametryczne
  • Testy z API
  • Testy z GraphQL

A ponadto, bonusy:

  • testowanie z Timberem
  • testowanie z DateTime
  • ściąga z test doubles
  • nagrania webinarów i prelekcji
  • nagrania spotkań LIVE

dostępne raty 4x0%

CZY TO NA PEWNO DLA MNIE? 👇

Krótka odpowiedź: Nie dowiesz się, dopóki nie dołączysz.

To normalne, że zastanawiasz się, czy nasz kurs testów na Androidzie spełni Twoje oczekiwania.

Dlatego oferujemy 30-dniową gwarancję satysfakcji. Możesz doświadczyć wszystkiego, co nasza platforma oferuje, bez ryzyka. W ciągu pierwszych 30 dni masz dostęp do całości programu i bonusów. To świetna okazja, aby zagłębić się w treści i zacząć wykorzystywać nowo zdobyte umiejętności w praktyce.

Jeśli jednak w ciągu pierwszych 30 dni zdecydujesz, że program nie spełnia Twoich oczekiwań i nie jest tym, czego szukasz, nie ma żadnego problemu. Wystarczy, że wyślesz do nas e-mail z prośbą o zwrot kosztów uczestnictwa, a my bez zbędnych pytań zwrócimy Ci pełną kwotę.

FAQ

Kurs obejmuje materiały wideo, tekstowe oraz repozytoria z kodem. Materiały wideo i tekstowe pozwalają na samodzielną naukę w dowolnym tempie. 

Kurs „Android ❤️ Unit Testy” jest skierowany do programistów Android, którzy chcą poprawić swoje umiejętności pisania testów jednostkowych. Jeśli jesteś początkującym programistą, kurs może wymagać od Ciebie dodatkowego wysiłku, ale dostarczy Ci solidnej podstawy wiedzy. Jeśli jesteś doświadczonym deweloperem, kurs może pomóc Ci usystematyzować i pogłębić Twoją wiedzę, nawet jeśli niektóre koncepcje mogą Ci już być znane.

Tak, po zapisaniu się na kurs i dokonaniu płatności, możesz otrzymać fakturę VAT. Wystarczy, że podasz dane firmy w koszyku.

Tak, wiele firm wspiera rozwój zawodowy swoich pracowników i może sfinansować ten kurs. Jeśli jesteś zainteresowany taką formą finansowania, najlepiej porozmawiać o tym z odpowiednim działem w swojej firmie. Napisz na jarek@nowoczesny.dev i wystawimy fakturę proforma.

Tak, po zakończeniu kursu i ukończeniu projektu końcowego, otrzymasz certyfikat potwierdzający zdobycie nowych umiejętności. Certyfikat ten może być wykorzystany do wzbogacenia Twojego CV lub portfolio zawodowego.

 

Od certyfikatu ważniejsze są umiejętności, które zdobędziesz.

Tak, po zakończeniu kursu uczestnicy mają dostęp do forum alumni, na którym mogą zadawać pytania, dzielić się wiedzą i doświadczeniami z innymi absolwentami.

Tak, oferujemy różne kursy zaawansowane i specjalistyczne dla osób, które chcą pogłębić swoją wiedzę w konkretnych obszarach Androida, Kotlin, czy innych technologiach mobilnych. Te kursy znajdują się na platformie AndroidPro.Io i są w języku angielskim.