This program introduces Unit Testing, Test Driven Development, Refactoring, Emergent Design, Agile Architecture, Collaboration, and refactoring techniques to the audience and follows a life cycle approach where participants get to learn how to practice these in real life projects. Participants learn to implement TDD on a project developing in either java, .net or ruby or C++ framework. Workshop also covers how to effectively work on legacy code and break dependencies. Expected business outcome is readable, maintainable code going forward as well reduction is defects.
- Introduction to Unit test, unit test characteristics
- Test Driven Development – why, what and how
- TDD Cycle – Red, Green and Refactor
- Drive the development (design and implementation) of a User Story
- Learn concept of Emergent Design and why emergent design
- How TDD helps you design software
- Why testing first is better than testing after
- Overview of Refactoring, Clean Code principle and Refactoring to Patterns
- Software design – going deeper in SOLID design Principles
- How to use mocking frameworks
- Behavior Driven Development using SpecFlow/Cucumber
- Specification by Examples using Gherkin language
- Writing Scenarios and Scenario Outlines
- Preparing Steps using xUnit framework
- Difference between TDD and BDD
- How to setup BDD practices within Scrum team
Hands-on activities (60-70%) and discussion on mentioned topics (30-40%). Hands-on activities include writing unit test, code, writing examples and some group creativity activities.
Development team members including developers, testers, architects, leads and scrum masters.
Java/.Net, Cucumber/SpecFlow, Selenium, Jenkins, GIT, Junit/Nunit
Day-Wise Course Break-Up
Course will progress like below but ordering may change based on participant’s feedback during workshop.