Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

121 views

Published on

Testy jednostkowe są tanie i powinno ich być najwięcej. Wiele osób uważa testy jednostkowe za zbędne, ponieważ napatrzyło się na złe testy, które zamiast budować pewność wprowadzają koszty utrzymania. Jednak dobrze napisane testy jednostkowe pomagają sprawdzić wszystkie ścieżki i unikać regresji w kodzie biznesowym. Pokazuję kilka ciekawostek i omawiam kilka kontrowersyjnych tematów, nad którymi każdy junior i mid powinien się zastanowić.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Testy jednostkowe w Javie OSIEM RZECZY, które musisz wiedzieć szkolatestow.online Ola Kunysz
  2. 2. #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
  3. 3. DLACZEGO TESTY JEDNOSTKOWE?
  4. 4. DLACZEGO TESTY JEDNOSTKOWE?
  5. 5. 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
  6. 6. BRAK CZASU?
  7. 7. 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ę?
  8. 8. JAK NAZYWAĆ TESTY?
  9. 9. 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?
  10. 10. ALE PRZEDE WSZYSTKIM Trzymaj się jednej konwencji Nie bój się długich nazw Unikaj “węgierskawych” notacji
  11. 11. PRZYKŁADOWE KONWENCJE Za to lubię testy w Scali:
  12. 12. A METODY PRYWATNE?
  13. 13. 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?
  14. 14. A METODY PRYWATNE? Jeśli już musisz… http://www.javaexpress.pl/article/show/Testowanie_metod_prywatnych https://ioki.pl/testy-jednostkowe-prywatnych-metod/
  15. 15. A BAZA DANYCH?
  16. 16. 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?
  17. 17. https://exchangeratesapi.io TEST NIEUŻYWANEGO API. WHAT?
  18. 18. https://exchangeratesapi.io TEST NIEUŻYWANEGO API. WHAT?
  19. 19. CZYM JEST TDD?
  20. 20. Który zazieleni testy Pisz kod I kompilowalną implementację Tutaj upiększaj Pisz testy Ogarnij CZYM JEST TDD?
  21. 21. 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?
  22. 22. 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?
  23. 23. CZY UŻYWAĆ GIVEN WHEN THEN?
  24. 24. JAK UŻYWAĆ GIVEN WHEN THEN?
  25. 25. JAK UŻYWAĆ GIVEN WHEN THEN? https://thejavatar.com/testing-with-spock/
  26. 26. CO NOWEGO W JUNIT 5? assertThrows @DisplayName assertAll JUnit Platform + Jupiter + Vintage
  27. 27. CO NOWEGO W JUNIT 5? JUnit Platform + Jupiter + Vintage
  28. 28. CO NOWEGO W JUNIT 5? @DisplayName
  29. 29. CO NOWEGO W JUNIT 5? assertAll
  30. 30. CO NOWEGO W JUNIT 5? assertThrows
  31. 31. CZY JA NIE LUBIŁAM PISANIA TESTÓW?
  32. 32. CZY TESTY JEDNOSTKOWE WYSTARCZĄ? 2 unit tests, 0 integration tests
  33. 33. CZY TESTY JEDNOSTKOWE WYSTARCZĄ?
  34. 34. 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
  35. 35. 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
  36. 36. Tutaj są owacje I pytania szkolatestow.online Ola Kunysz OlaQnysz PeggyBrown

×