Unit Testing, Refactoring és Test Driven Development tanfolyam
Alapadatok
A tanfolyam hossza: 4 nap
A tanfolyam szerzője és előadója: Soczó Zsolt
Modulok
- Unit tesztelés bevezető
- Unit tesztelés elmélet
- Függőségek kiiktatása Fake-ekkel
- Refactoring elmélet és gyakorlat
- Test Driven Development (TDD)
Leírás
A tanfolyam célja, hogy a .NET fejlesztőket bátorítsa a Unit teszek használatára, segítse őket, ha a kód szerkezetében, tervében valami nem jó (bad smell) azt észrevegyék és kijavítsák, és hogy Test Driven Development keretében fejlesztve sokkal átgondoltabb, jobban specifikált és jobb minőségű kódot állítsanak elő.
A képzés fokozatosan halad egyre mélyebbre a tesztelés, a refactoring és a TDD ismertetésébe. Minden fejezet sok rövid és egy hosszabb labort tartalmaz, hogy a hallgatók ne csak halljanak róla, de saját maguk is megtapasztalják a megismert technológiákat.
A kurzus nem csak a felszínt kapargatja, hanem mélyen belemegy a technológia rejtelmeibe. Sok példakód, demó mutatja meg az elvek gyakorlati hasznát, valamit egy többrétegű példaalkalmazás is az anyag része, amelyben megtekinthető, hogyan lehet a rétegeket egymástól elválasztani és tesztelhetővé tenni (technológiák: WCF, WPF, NHibernate, AutoFac, NSubstitute, ServiceLocator).
A tanfolyam teljesen egyedi, Soczó Zsolt állította össze. Magyarországon nincs másik .NET TDD kurzus, csak Java nyelvű. Külön erőssége a gyakorlatiasság.
A 4. nap az első órát kivéve egy egész napos labor, amelyben egy SQL Server és Active Directory között szinkronizáló kis alkalmazást rakunk össze TDD alapon.
Az elmélet mellett a következő eszközöket és technológiákat ismerjük meg és használjuk a tanfolyamon:
Kiknek szól a tanfolyam?
Elsősorban tapasztalt C# .NET programozókat és tervezőket várunk. Nem szükséges egyes technológiák (W*, stb.) alapos ismerete, de fontos, hogy rutinos Visual Studio használó legyen a hallgató. Minimum 3 év .NET programozói tapasztalat javasolt.
Kiknek nem szól a tanfolyam?
Nem annyira hasznos a tanfolyam azoknak a tesztelőknek, akik végfelhasználói, GUI alapú teszteket (user acceptance test, functional test) készítenek, kivéve, ha kód alapú automatizált teszteket is írnak. A tanfolyamon a kód alapú, belső tesztelési módszerekről tanulunk, amelyeket maguk a programozók készítenek, sokszor nem is tesztelési, hanem specifikációs célból.
A tanfolyam részletesebb tartalomjegyzéke
A tanfolyam nagyon sok diát és példakódot tartalmaz, így csak rövidítve írom le a tartalmukat.
Unit tesztelés bevezető (78 dia)
- Mi az a Unit teszt?
- Mitől jó egy unit teszt?
- Cyclomatic Complexity
- Unit teszt vs. integrációs teszt
- Az integrációs tesztek problémái
- Kifogások a valódi unit teszteléssel szemben
- Módosítások kihatása a tesztekre
- Tesztelési módszerek felhasználásai
- Hagyományos Unit Teszt. vs. TDD
- A Visual Studio teszt Framework használata (20+ dia)
- Code Coverage (7 dia)
- NCrunch (9 dia)
- Unit tesztek generálása: PEX (10 dia)
Unit tesztelés elmélet (48 dia)
- Arrange-Act-Assert (AAA)
- Mit teszteljünk?
- Right-BICEP
- Right
- (B)oundary Conditions
- (I)nverz kapcsolatok
- (C)ross-check - keresztellenőrzés
- Forced (E)rror Conditions - Hiba kikényszerítés
- (P)erformance Characteristics - Teljesítménykérdések
- Boundary Conditions - CORRECT
- Conformance, Ordering, Range, Reference, Existence, Cardinality,Time
- Tipikus unit teszt hibák
- Nem egy dolog tesztelése
- Sok Assert
- Teszt szétbontása példa
- Több érték tesztelése tömörebben
- Elágazás, ciklus a tesztben
- Private tagok tesztelése
- Metódusok kiemelése új osztályokba
- InternalsVisibleToAttribute
- Metódusok statikussá tétele
- Tesztek egymásra hatása
- AntiPattern: Feltételezett teszt sorrend
- AntiPattern: Áthívások tesztek között
- AntiPattern: Osztott állapot
- AntiPattern: Missing Assertions
- AntiPattern: Rossz Assertek használata
- AntiPattern: Felesleges kódok a TestInitialize-ban
- AntiPattern: Túlspecifikált tesztek
- A teszt is lehet hibás!
Függőségek kiiktatása Fake-ekkel (67 dia)
- Unit teszt típusok
- Dependency Injection
- AutoFac
- AutoFac haszálata a függőségek becsempészésére
- Stubok használata függőségek helyettesítésére
- Tesztelés Stubokkal
- Stubok becsempészése a függőség helyett
- Extract and Override elv
- Interfész alapú függőség kiiktatás
- Stub bejuttatása Constructor Injectionnel, DI frameworkkel
- Elő implementáció bejuttatása Constructor Injectionnel
- Mock objektumok használata interakció tesztelésre
- A Mockok szerepe a tesztelésben
- A Mock alapú tesztek
- Isolation Frameworkök
- NSubstitute használata fake-ekhez
- Interfész helyettesítő dinamikus Fake objektum létrehozása
- Stub objektum szimulálása
- NSubstitute Stub fejlettebb technikák
- Interakció alapú tesztelés Mockkal
- Exception szimulálása
- Események szimulálása
- Visual Studio 2012 Fakes legacy kódok tesztelésére
Refactoring (145 dia)
- Rename Method
- Extract Method
- Replace Temp with Query
- Inline Method
- Inline Temp
- Hide Method
- Move Method
- Move Field
- Introduce Explaining Variable
- Introduce Field
- Add Parameter
- Introduce Parameter Object
- Remove Parameter
- Safe Delete
- Remove Unused Assembly References
- Change Signature
- Extract Class
- Replace Method with Method Object
- Introduce Foreign Method
- Replace Magic Number with Symbolic Constant
- Replace Nested Conditional with Guard Clauses
- Remove Assignments to Parameters
- Encapsulate Field
- Auto Property to Backing Field és vissza
- Remove Setting Method
- Replace Constructor With Factory Method
- Decompose Conditional
- Replace Exception with Test
- Replace Error Code with Exception
- Encapsulate Collection
- Extract Interface
- Extract Superclass
- Pull Up Field
- Pull Up Method
- Pull Up Constructor Body
- Push Down Method
- Push Down Field
- Form Template Method
- Encapsulate Downcast
- Duplicate Observed Data
- Replace Data Value with Object
- Replace Type Code with Class
- Replace Type Code with Subclasses
- Replace Type Code with State/Strategy
- Párhuzamos kollekciók
- Convert foreach to LINQ
- Convert for to foreach
- 10+ Code Smell
Test Driven Development (39 dia)
- A TDD előnyei
- TDD felfogások
- TDD filozófia
- Red, Green, Refactor
- Kis lépések
- Test Driven Development Patterns
- Nincs időm tesztelni ördögi kör
- Elszigetelt tesztek
- Teszt lista
- Assert First
- Evident Data
- Red Bar Patterns
- One Step Test
- Starter test
- Learning Test
- Another Test
- Regression Test
- Break
- Do Over
- Child Test
- Mock object
- Broken Test
- Green Bar Patterns
- Fake It (‘Til You Make It)
- Triangulate
- Obvious Implementation
- Resharper segítség TDD-hez
A tanfolyam reggel 9-től délután 5-ig tart, 1 óra ebédszünettel, és két 15 perces pihenővel. A szünetben frissítőket és ropogtatnivalókat kínálunk. (Az étkezések ára része a tanfolyam díjának.)
A hallgatók saját gépeken dolgoznak.
|