Tesztvezérelt fejlesztés (TDD) és refaktorálás .NET
4 nap
Magyar vagy angol
számítógép szükséges
nincs
Cél
A tesztvezérelt fejlesztés segítségével szoftverek minőségének biztosítása a fejlesztési folyamat részévé válik, ugyanakkor biztonságos alapot teremt a szoftver jövőbeli változtatásához. A kurzus a unit tesztelés alapjaitól indul, majd példa kódokon keresztül végigvezeti a résztvevőket a TDD hatékony használatán annak érdekében, hogy a témából minél több minden elsajátítható legyen és elkerülhetővé váljanak a TDD csapdái.
A kurzus nyelve .NET
Résztvevők
Software fejlesztők, akik rendelkeznek minimum 3 éves C# háttérrel vagy gyakorlattal más programozási nyelvvel
Tartalom
A tananyag 4 részből áll. Az oktató előadásokon és demonstrációkon keresztül segíti a tananyag elsajátítását és annak valós helyzetekkel történő összekapcsolását. A feladatok segítségével az új koncepciók és ismeretek gyakorlatba vihetők át.
A tanfolyam arra is rámutat, amikor a TDD nem a megfelelő eszköz, teljes képet adva ezzel a TDD-ről. A kurzus alatt a résztvevők számos hasznos nyílt forráskódú és fizetős eszközzel is megismerkednek, mint például: NCrunch, Resharper, Fluent Assertions, NSubstitute, NBuilder, stb.
Modulok
Bevezetés a unit tesztelésbe
- Ez a modul bevezetést ad a unit tesztelésbe, bemutatva az integrációs teszteléssel szembeni különbségét és elmagyarázza, hogy miként tudunk teszteket írni az MSTest (NUnit) segítségével.
- Kulcs témák ebben a részben: Tradeoff of unit tests, Cyclomatic Complexity, Unit test vs. Integration Test, problems with Integration Tests, Effect of modifications for different type of tests. Introduction to TDD. Visual Studio test framework, Visual Studio test features like debugging, coverage and profiling. Test Attributes, Test generation, Assert types and methods, TestContext, Data Driven Tests. Setting test environment using testSettings and runSettings files. Deployment issues. Coverage measuring and visualisation. Using NCrunch to run tests automatically. Using Visual Studio automatic test runner and Live Testing. Fluent Assertions, Intelli Test, Async testing.
Unit tesztelés elmélete
- Mit teszteljünk, miért teszteljünk, hogyan teszteljünk? Tesztelési szabályok: Right BICEP, CORRECT. Tesztelési antipattern-ek.
- Kulcs témák ebben a részben: Arrange-Act-Assert, Boundary tests, Inverse Relationships, Cross-checking, Forced Error Conditions, Performance Characteristics, Conformance, Cardinality, Ordering, Range, Reference checks, Existence, Cardinality, Time dependent tests. 11 Test antipatterns.
Fake objektumok használata a függőségek elkülönítéséhez
- Elkülönítésen alapuló unit tesztek írása, függő objektumok szétválasztása annak érdekében, hogy csak egy dolgot teszteljünk.
- Kulcs témák ebben a részben: State and Interaction tests, Fakes, Stubs, Mocks, Dependency Injection, AutoFac, Creating seams, Extract and Override, Refactoring tightly coupled code to a testable one. Generating fakes using Isolation Frameworks, NSubstitute, Visual Studio Fakes.
Refactorálás
- A refaktorálás elmélete Martin Fowler Refactoring c. könyve alapján. A gyakorlatok során a Resharper-t használjuk. Valós esettanulmányon keresztül nézzük át a helytelen tervezést és a code smell-t. .NET specifikus refaktorálási lehetőségek bevezetése.
- Key topics during this module: 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, 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, Parallel Collections, Convert foreach to LINQ, Convert for to foreach. Code smells and solutions to them.
Tesztvezérelt fejlesztés
- A TDD elméleti háttere Kent Back alapján. Hogyan közelítsük meg a TDD-t, mik a legfontosabb irányelvek a soron következő tesztek kiválasztásánál? Ez a rész a kurzus utolsó napján kerül bemutatásra és a nap nagy részében közösen fejlesztenek a résztvevők egy alkalmazást a TDD segítségével.
- Kulcs témák ebben a részben: Test Driven Development Patterns, Test List, Assert First, Test data considerations, Starter test, One step test, Learning test, Regression test, Fake it till make it, Triangulation.