際際滷

際際滷Share a Scribd company logo
Co ja wiem o
testowaniu
Tomek "LAFK" Borek
Si坦dma Noc
Informatyka
26 maj 2013
@gmail.com alias @LAFK_pl
Tomasz Borek
LAFK => lafkblogs.wordpress.com
O czym to?
 Kiedy warto
 Stopnie testowania
 Zaawansowane (kr坦tko): TDD i inne takie
 Najwa甜niejsze: jednostkowe
 Struktura (Scala i Java)
 Narzdzia: cud Spock, czad Mockito, ugh
PowerMock.
Droga do TDD
Brak Manualne "PO" "PRZED" TDD
Nazwy i rodzaje i smaczki
 TDD (zwyke, as if you meant
it),
 ATDD, BDD...
 cie甜ek (zwyka, krytyczna,
pechowa)
 warunk坦w brzegowych...
 wydajnociowe,
 od deski do deski,
 komponent坦w,
 systemowe,
 integracyjne,
 bezpieczestwa,
 interfejsu graficznego...
 w literaturze r坦甜nie
 to samo sowo, inne
znaczenia
 ustalcie wasne!
(!) JEDNOSTKOWE!!!
Bd kompilacji ma znaczenie.
tak, zdarza si, a czasem
nawet jest potrzebne!
PRAWDZIWY cykl TDD
minimum kodu
by przeszo
nie "gada z baz"
nie potrzeba mu Internetu,
szybki,
odpowiednio nazwany,
jasny, przejrzysty, klarowny,
testuje jedn rzecz,
nie dwie, nie tysic
Test jednostkowy
nie kombinuje w konstruktorze,
przestrzega prawa Demeter,
nie potrzebuje setki kolaborator坦w,
jest kr坦tka,
odpowiednio nazwana,
realizuje jedn rzecz,
nie dwie, nie tysic
Dlatego te甜 klasa
TD
D
, kata
obiektowa
kalistenika
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? Czste pomyki tutaj.
}
}
FEST jest fest pomoc.
Bdy?
Struktura testu - Java, TestNG
Dziki Cedryku!
Przykad
z oficjalnej strony.
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");
}
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")
}
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
Stanowcze NIE - PowerMock
 Mockito, Obiektowo
 final
 static
 mo甜na nie znaczy trzeba
 Jak?
 classloader
 refleksja
 Dodajmy:
 pokrycie kodu i insz instrumentacj
 ciekawsze testy (zale甜noci, mutacje, z danymi)
 Mavena
 efekt? a kuku
- pr坦buj wyci Mockito
- odpowiadanie na problemy
 Droga do TDD, ATDD, BDD...
prawdziwego testowania w ka甜dym razie.
 Cykl niekoniecznie ma trzy etapy.
 Bd kompilacji == Pierwszy Czerwony Test
 Testy jednostkowe, nie integracyjne
 Testy jako Dokumentacja
 Given When Then, Mockito, Spock, TestNG
 Wywalcie PowerMock'a
Podsumowanie - Testy
 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 Jakoci - Bolesaw Szomaski,
Bohdan Bereza-Jarociski
Podsumowanie - Linki
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

More Related Content

Noc informatyka - co ja wiem o testowaniu

  • 1. Co ja wiem o testowaniu Tomek "LAFK" Borek Si坦dma Noc Informatyka 26 maj 2013
  • 2. @gmail.com alias @LAFK_pl Tomasz Borek LAFK => lafkblogs.wordpress.com
  • 3. O czym to? Kiedy warto Stopnie testowania Zaawansowane (kr坦tko): TDD i inne takie Najwa甜niejsze: jednostkowe Struktura (Scala i Java) Narzdzia: cud Spock, czad Mockito, ugh PowerMock.
  • 4. Droga do TDD Brak Manualne "PO" "PRZED" TDD
  • 5. Nazwy i rodzaje i smaczki TDD (zwyke, as if you meant it), ATDD, BDD... cie甜ek (zwyka, krytyczna, pechowa) warunk坦w brzegowych... wydajnociowe, od deski do deski, komponent坦w, systemowe, integracyjne, bezpieczestwa, interfejsu graficznego... w literaturze r坦甜nie to samo sowo, inne znaczenia ustalcie wasne! (!) JEDNOSTKOWE!!!
  • 6. Bd kompilacji ma znaczenie. tak, zdarza si, a czasem nawet jest potrzebne! PRAWDZIWY cykl TDD minimum kodu by przeszo
  • 7. nie "gada z baz" nie potrzeba mu Internetu, szybki, odpowiednio nazwany, jasny, przejrzysty, klarowny, testuje jedn rzecz, nie dwie, nie tysic Test jednostkowy
  • 8. nie kombinuje w konstruktorze, przestrzega prawa Demeter, nie potrzebuje setki kolaborator坦w, jest kr坦tka, odpowiednio nazwana, realizuje jedn rzecz, nie dwie, nie tysic Dlatego te甜 klasa TD D , kata obiektowa kalistenika
  • 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? Czste pomyki tutaj. } } FEST jest fest pomoc. Bdy?
  • 10. Struktura testu - Java, TestNG Dziki Cedryku! Przykad z oficjalnej strony.
  • 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. 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. 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. Stanowcze NIE - PowerMock Mockito, Obiektowo final static mo甜na nie znaczy trzeba Jak? classloader refleksja Dodajmy: pokrycie kodu i insz instrumentacj ciekawsze testy (zale甜noci, mutacje, z danymi) Mavena efekt? a kuku - pr坦buj wyci Mockito - odpowiadanie na problemy
  • 15. Droga do TDD, ATDD, BDD... prawdziwego testowania w ka甜dym razie. Cykl niekoniecznie ma trzy etapy. Bd kompilacji == Pierwszy Czerwony Test Testy jednostkowe, nie integracyjne Testy jako Dokumentacja Given When Then, Mockito, Spock, TestNG Wywalcie PowerMock'a Podsumowanie - Testy
  • 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 Jakoci - Bolesaw Szomaski, Bohdan Bereza-Jarociski Podsumowanie - Linki
  • 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