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.

Noc informatyka - co ja wiem o testowaniu

51 views

Published on

An old preso (in Polish) from May 2013 about testing and TDD for the beginner's crowd. Stara prezentacja z maja 2013 o testowaniu i TDD dla początkujących.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Noc informatyka - co ja wiem o testowaniu

  1. 1. Co ja wiem o testowaniu Tomek "LAFK" Borek Siódma Noc Informatyka 26 maj 2013
  2. 2. @gmail.com alias @LAFK_pl Tomasz Borek LAFK => lafkblogs.wordpress.com
  3. 3. O czym to? ● Kiedy warto ● Stopnie testowania ● Zaawansowane (krótko): TDD i inne takie ● Najważniejsze: jednostkowe ● Struktura (Scala i Java) ● Narzędzia: cud Spock, czad Mockito, ugh PowerMock.
  4. 4. Droga do TDD Brak Manualne "PO" "PRZED" TDD
  5. 5. Nazwy i rodzaje i smaczki ● TDD (zwykłe, as if you meant it), ● ATDD, BDD... ● ścieżek (zwykła, krytyczna, pechowa) ● warunków brzegowych... ● wydajnościowe, ● od deski do deski, ● komponentów, ● systemowe, ● integracyjne, ● bezpieczeństwa, ● interfejsu graficznego... ● w literaturze różnie ● to samo słowo, inne znaczenia ● ustalcie własne! (!) JEDNOSTKOWE!!!
  6. 6. Błąd kompilacji ma znaczenie. tak, zdarza się, a czasem nawet jest potrzebne! PRAWDZIWY cykl TDD minimum kodu by przeszło
  7. 7. nie "gada z bazą" nie potrzeba mu Internetu, szybki, odpowiednio nazwany, jasny, przejrzysty, klarowny, testuje jedną rzecz, nie dwie, nie tysiąc Test jednostkowy
  8. 8. nie kombinuje w konstruktorze, przestrzega prawa Demeter, nie potrzebuje setki kolaboratorów, jest krótka, odpowiednio nazwana, realizuje jedną rzecz, nie dwie, nie tysiąc Dlatego też klasa TD D , kata obiektowa kalistenika
  9. 9. Struktura testu - Java, JUnit package lafk.nocinformatyka.junit; import org.junit.Test; public class ExemplaryJUnitTest { @Test private void testNameStatesWhatItTests() { // given ObjectUnderTest objTested = new ObjectUnderTest(with, required, params, for, complete, setup); // when objTested.performsTestedAction(); // then assertEquals(expected, actual) // Lub vice versa? Częste pomyłki tutaj. } } FEST jest fest pomocą. Błędy?
  10. 10. Struktura testu - Java, TestNG Dzięki Cedryku! Przykład z oficjalnej strony.
  11. 11. Struktura testu - ScalaTest behaviour of "Something" it should "have expressive name" in { // given val anObject : UnderTest = new UnderTest(); // when val result = anObject.testedMethod(); // then result should be ("expressive"); }
  12. 12. Struktura testu - ScalaTest++ behaviour of "Something" it should "have expressive name" in { // given val anObject = new UnderTest // when val result = anObject.testedMethod() // then result should be ("expressive") }
  13. 13. Czapki z głów - Spock // power assert Spock example // == is power assert operator myObject.myVar == otherObject.fieldICompareTo | | | | | | 5 | | "qq" | | | | | lafk...OtherObject@hash1 | | | false + powód dlaczego, np. bo 5 != "qq" | albo otherObject jest null itp. lafk...MyObject@hash2
  14. 14. Stanowcze NIE - PowerMock ● Mockito, Obiektowość ○ final ○ static ○ można nie znaczy trzeba ● Jak? ○ classloader ○ refleksja ● Dodajmy: ○ pokrycie kodu i inszą instrumentację ○ ciekawsze testy (zależności, mutacje, z danymi) ○ Mavena ● efekt? a kuku - próbują wyciąć Mockito - odpowiadanie na problemy
  15. 15. ● Droga do TDD, ATDD, BDD... prawdziwego testowania w każdym razie. ● Cykl niekoniecznie ma trzy etapy. ● Błąd kompilacji == Pierwszy Czerwony Test ● Testy jednostkowe, nie integracyjne ● Testy jako Dokumentacja ● Given When Then, Mockito, Spock, TestNG ● Wywalcie PowerMock'a Podsumowanie - Testy
  16. 16. ● SCKRK / Code Kata / Callisthenics ● Tomasz Kaczanowski - practicalunittesting.com ● API! JUnit, TestNG, Mockito, ScalaTest, Spock... ● Misko Hevery: How to write testable code ● Polish Java User Group - zapytajcie kolegów ● Inżynieria Jakości - Bolesław Szomański, Bohdan Bereza-Jarociński Podsumowanie - Linki
  17. 17. THANKS! // todo implement this behaviour of "those who ask questions" they should "ask them politely" in pending they should "ask them loudly so they'll be heard over snoring" in pending they should "go to sleep" in pending Tomasz Borek - @LAFK_pl Noc Informatyka 2013

×