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 pocztkujcych.
1 of 17
Download to read offline
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
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.
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