SlideShare a Scribd company logo
Testy jednostkowe w Javie
OSIEM RZECZY,
które musisz wiedzieć
szkolatestow.online
Ola Kunysz
#projects
szkolatestow.online
ML (Pokemony)
#code
JVM, JS, Python,C#,
COBOL
#social
(Code) Carrots,
DePaul ASK
Cześć
Jestem
Ola
#fame
JUGs,
Devoxx, DevConf
GeeCON, InfoShare
OlaQnysz
PeggyBrown
DLACZEGO TESTY JEDNOSTKOWE?
DLACZEGO TESTY JEDNOSTKOWE?
DLACZEGO TESTY JEDNOSTKOWE?
Są tanie
Jeśli nie testujesz getterów i setterów
Zmuszają do projektowania
TDD zmienia na zawsze
Wykrywają błędy
Po co testować skoro ma szansę zadziałać?
Dają spokój ducha
Mniej złych wiadomości w piątek wieczorem
Ułatwiają pracę w zespole
Testy jako dokumentacja
Poprawiają jakość
(Prawie) każdy test dodaje pewności
BRAK CZASU?
Ile kosztuje reakcja na błąd na produkcji?
BRAK CZASU?
Ile zajmuje pisanie testów długo po kodzie?
Jak trudna jest praca z cudzym kodem?
Ile procent pokrycia potrzeba naprawdę?
JAK NAZYWAĆ TESTY?
JAK NAZYWAĆ TESTY?
https://www.bullshitgenerator.com
Cel: wiedzieć, co się zepsuło bez otwierania klasy testowej
Co się zepsuło?
Jakie są okoliczności?
Jakiego wyniku oczekujemy?
ALE PRZEDE WSZYSTKIM
Trzymaj się jednej konwencji
Nie bój się długich nazw
Unikaj “węgierskawych” notacji
PRZYKŁADOWE KONWENCJE
Za to lubię testy w Scali:
A METODY PRYWATNE?
A METODY PRYWATNE?
Czy naprawdę musisz pisać testy
do prywatnych metod?
Czy da się zrefaktoryzować kod?
Czy da się przetestować różne scenariusze
z pomocą wyłącznie publicznych metod?
Czy to jest stary / cudzy kod?
A METODY PRYWATNE?
Jeśli już musisz…
http://www.javaexpress.pl/article/show/Testowanie_metod_prywatnych
https://ioki.pl/testy-jednostkowe-prywatnych-metod/
A BAZA DANYCH?
Dla zewnętrznych komponentów
wydzielić abstrakcje
MOIM ZDANIEM?
Najlepiej przygotować dane i posprzątać,
albo postawić nową instancję
Bazę / API testować
w testach integracyjnych
Chyba, że chcesz testować obciążenie.
Chcesz?
https://exchangeratesapi.io
TEST NIEUŻYWANEGO API. WHAT?
https://exchangeratesapi.io
TEST NIEUŻYWANEGO API. WHAT?
CZYM JEST TDD?
Który zazieleni testy
Pisz kod
I kompilowalną implementację
Tutaj upiększaj
Pisz testy
Ogarnij
CZYM JEST TDD?
Prostota
YAGNI - You Ain't Gonna Need That
Metoda małych kroków
Pokora
Nie wszystko od razu
Proś o pomoc
Praktyka
Fake it until you make it
KIEDY TDD ZADZIAŁA?
Rozwiązuj Kata
http://codingdojo.org/kata
Zorganizuj Coding Dojo w swoim zespole
http://codingdojo.org
Jak mnie ładnie poprosicie to zrobię live coding na
JAK ZACZĄĆ TDD?
CZY UŻYWAĆ GIVEN WHEN THEN?
JAK UŻYWAĆ GIVEN WHEN THEN?
JAK UŻYWAĆ GIVEN WHEN THEN?
https://thejavatar.com/testing-with-spock/
CO NOWEGO W JUNIT 5?
assertThrows
@DisplayName
assertAll
JUnit Platform + Jupiter + Vintage
CO NOWEGO W JUNIT 5?
JUnit Platform + Jupiter + Vintage
CO NOWEGO W JUNIT 5?
@DisplayName
CO NOWEGO W JUNIT 5?
assertAll
CO NOWEGO W JUNIT 5?
assertThrows
CZY JA NIE LUBIŁAM PISANIA TESTÓW?
CZY TESTY JEDNOSTKOWE WYSTARCZĄ?
2 unit tests, 0 integration tests
CZY TESTY JEDNOSTKOWE WYSTARCZĄ?
Mierz siły Trening czyni testera Znajdź wsparcie
Nie wszystko musisz testować
(na raz)
Im więcej piszesz,
tym lepiej piszesz
W grupie raźniej
CO DALEJ?
Kod ze slajdów:
https://github.com/PeggyBrown/currency-exchange
Prywatne metody:
http://carlosschults.net/en/are-private-methods-a-code-smell/
https://4programmers.net/Forum/Java/316246-testy_jednostkowe_a_metody_prywatne
JUnit 5:
https://blog.scottlogic.com/2017/10/10/junit-5.html
Konwencje nazewnicze:
https://dzone.com/articles/7-popular-unit-test-naming
Given when then:
https://www.martinfowler.com/bliki/GivenWhenThen.html
Tutaj są owacje
I pytania
szkolatestow.online
Ola Kunysz
OlaQnysz
PeggyBrown

More Related Content

Similar to Testy jednostkowe - 8 rzeczy, które musisz wiedzieć

Testowanie automatyczne 2024 INCO Academy
Testowanie automatyczne 2024 INCO AcademyTestowanie automatyczne 2024 INCO Academy
Testowanie automatyczne 2024 INCO Academy
Katarzyna Javaheri-Szpak
 
Poznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven DevelopmentPoznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven Developmentbartlomiej.szafko
 
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gierKonrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
GameDesire Academy
 
Codeception
CodeceptionCodeception
Codeception
eEngine
 
Pex
PexPex
Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testow
Wiktor Żołnowski
 
Testing dojo po polsku (Testing dojo in Polish)
Testing dojo po polsku (Testing dojo in Polish)Testing dojo po polsku (Testing dojo in Polish)
Testing dojo po polsku (Testing dojo in Polish)
Łukasz Morawski
 
Jak nie zwariować z tymi pakietami
Jak nie  zwariować z tymi pakietamiJak nie  zwariować z tymi pakietami
Jak nie zwariować z tymi pakietamiArek Bee.
 
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
kraqa
 
JAK TESTOWAĆ CZYSTY KOD JAVASCRIPT?
JAK TESTOWAĆ CZYSTY KOD JAVASCRIPT?JAK TESTOWAĆ CZYSTY KOD JAVASCRIPT?
JAK TESTOWAĆ CZYSTY KOD JAVASCRIPT?
Piotr Nalepa
 
Wprowadzenie do PHPUnit
Wprowadzenie do PHPUnitWprowadzenie do PHPUnit
Wprowadzenie do PHPUnit
Michał Kowalik
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecie
Grzegorz Godlewski
 
Unit testing w praktyce... czyli właściwie jak?
Unit testing w praktyce... czyli właściwie jak?Unit testing w praktyce... czyli właściwie jak?
Unit testing w praktyce... czyli właściwie jak?
Bartłomiej Cymanowski
 
MVP - Model View Presenter (polish)
MVP - Model View Presenter (polish)MVP - Model View Presenter (polish)
MVP - Model View Presenter (polish)
Przemyslaw Lusnia
 
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
Future Processing
 
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacjiInfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
JIT Solutions
 
Skok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacjiSkok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacji
Witold Bołt
 
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...Infoshare
 
TDD – w poszukiwaniu źródeł jakości.
TDD – w poszukiwaniu źródeł jakości.TDD – w poszukiwaniu źródeł jakości.
TDD – w poszukiwaniu źródeł jakości.
Future Processing
 
TDD w iOS
TDD w iOS TDD w iOS
TDD w iOS
The Software House
 

Similar to Testy jednostkowe - 8 rzeczy, które musisz wiedzieć (20)

Testowanie automatyczne 2024 INCO Academy
Testowanie automatyczne 2024 INCO AcademyTestowanie automatyczne 2024 INCO Academy
Testowanie automatyczne 2024 INCO Academy
 
Poznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven DevelopmentPoznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven Development
 
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gierKonrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
Konrad Gadzina: Test-Driven Gamedev - testy automatyczne a tworzenie gier
 
Codeception
CodeceptionCodeception
Codeception
 
Pex
PexPex
Pex
 
Strategie automatyzacji testow
Strategie automatyzacji testowStrategie automatyzacji testow
Strategie automatyzacji testow
 
Testing dojo po polsku (Testing dojo in Polish)
Testing dojo po polsku (Testing dojo in Polish)Testing dojo po polsku (Testing dojo in Polish)
Testing dojo po polsku (Testing dojo in Polish)
 
Jak nie zwariować z tymi pakietami
Jak nie  zwariować z tymi pakietamiJak nie  zwariować z tymi pakietami
Jak nie zwariować z tymi pakietami
 
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
Więcej testów/mniej kodu - Michał Gaworski, kraQA 13
 
JAK TESTOWAĆ CZYSTY KOD JAVASCRIPT?
JAK TESTOWAĆ CZYSTY KOD JAVASCRIPT?JAK TESTOWAĆ CZYSTY KOD JAVASCRIPT?
JAK TESTOWAĆ CZYSTY KOD JAVASCRIPT?
 
Wprowadzenie do PHPUnit
Wprowadzenie do PHPUnitWprowadzenie do PHPUnit
Wprowadzenie do PHPUnit
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecie
 
Unit testing w praktyce... czyli właściwie jak?
Unit testing w praktyce... czyli właściwie jak?Unit testing w praktyce... czyli właściwie jak?
Unit testing w praktyce... czyli właściwie jak?
 
MVP - Model View Presenter (polish)
MVP - Model View Presenter (polish)MVP - Model View Presenter (polish)
MVP - Model View Presenter (polish)
 
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
 
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacjiInfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
InfoShare 2014: Skok na naderwanym bungee, czyli agile bez automatyzacji
 
Skok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacjiSkok na naderwanym bungee, czyli agile bez automatyzacji
Skok na naderwanym bungee, czyli agile bez automatyzacji
 
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
infoShare 2014: Witold Bołt, Bartosz Zięba, Skok na naderwanym bungee, czyli ...
 
TDD – w poszukiwaniu źródeł jakości.
TDD – w poszukiwaniu źródeł jakości.TDD – w poszukiwaniu źródeł jakości.
TDD – w poszukiwaniu źródeł jakości.
 
TDD w iOS
TDD w iOS TDD w iOS
TDD w iOS
 

Testy jednostkowe - 8 rzeczy, które musisz wiedzieć