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

  1. Unit tesztelés bevezető
  2. Unit tesztelés elmélet
  3. Függőségek kiiktatása Fake-ekkel
  4. Refactoring elmélet és gyakorlat
  5. 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.

Keresés a weboldalon