Test Driven Development
Overview
TDD Workshop is a 3 day course designed to teach you the principles and practice of Test Driven Development. During this course, we will be sharing our real world experience and will go through several examples and actual project scenarios and you will learn how to drive your code using tests, how to write better tests and how you can use tests to minimize cost of change even in late stages of the project.
Description
TDD is accepted as the most effective method to write code. Tests are requirements that the software should satisfy and the developer has to implement a test before he writes production code. Benefits of TDD are as follows:
- TDD makes design loosely coupled and highly cohesive and prevents design flaws.
- You discover problems in understanding requirements early on.
- Bug risk is minimized by a factor of ten which is proven by empirical studies.
- Test-Code-Refactor cycle keeps concentration of developers at a high level.
- Minimizes of cost of change , requirement changes can be implemented at a minimum cost even at late stages of development.
Trainer
Prime Technology Agile Coach, Cenk Çivici has been working with Agile methodologies for over 10 years and is the most experienced coach in Turkey. He has worked in several projects during his consultancy years at Thoughtworks US and UK and found the chance to work with many thought leaders in the Agile community. He has trained over hundreds of people in Agile practices and always follows a fun, hands on training approach and dislikes powerpoint slides.
Prerequisites
Experience in Object Oriented Languages such as Java, C#.
Course Outline
Overview of TDD
- Theory (Agile methodologies overview,TDD as a design approach, Evolutionary design)
- Principles
- Mechanics
- Test Classification(Acceptance, Integration, Unit, Performance) tests
xUnit Tools
- XUnit Design
- Test Structure (Suites, Runners, Listeners,TestCases)
- Practice : Stack implementation
Top down TDD with Mock Objects
- IOC Principles and Dependency Injection patternn
- Improving Testability of Designs
- Mock versus Stubs
- Dynamic Mocking libraries
- Practice 2: Caching
Test quality / patterns/ antipatterns
- Fine grained,Simple,Isolated,Fast,Readable
- Naming conventions
- Testing for behaviour
- Using ObjectBuilder/ObjectMother pattern in test preparation
- Testing with the database
Common test smells and solutions
- Long tests
- Using mocks instead of stubs
- Testing implementation - coupling tests to implementation
- Too many assertions
- Intermittent Failures
Automating Test Suites
- Integration with Build tools
- Test Coverage and Analysis
- Coverage Tools
- Integration with Continuous Integration tools
- Intermittent Failures
- Multilevel builds in large scale projects
Acceptance Test Driven Development
- Acceptance Tests
- User Story & Acceptance Criteria
- Acceptance Test tools(e.g Fit, Selenium, Watir)
- Acceptance Test Driven Process
Refactoring to Patterns
- Replace Type Code With Strategy/State
- Replace Conditional With Visitor
- Encapsulate Classes with Factory
- Encapsulate Composite With Builder
- Extract Adapter
- Extract Composite
- Form Template method
- Polymorphic creation with factory method
- Limit instantiation with Singleton
- Move accumulation to Visitor
- Replace Conditional Logic with Strategy
- Move Embellishment to Decorator
- Replace hardcoded notifications with Observer
- Replace constructors with named methods
- Replace implicit language with Interpreter
- Unify interfaces with adapter
- Replace conditional logic with Command
- Introduce Null object
- Replace implicit tree with Composite
Workshop Activities
- Coding several TDD tutorials
Time
- 3 Days - 21 hours
Dates
| 02 July 2010 | Friday | 10:00 – 17:00 |
| 03 July 2010 | Saturday | 10:00 – 17:00 |
| 04 July 2010 | Sunday | 10:00 – 17:00 |
Price
-
900 TL + KDV
- Students can attend the training with %10 discount and 3 attendees that are working in the same company will also have %10 discount.
Quota
- 12 People
Q&A
- English: contact@prime.com.tr
- Turkish: iletisim@prime.com.tr
