Course Details
Duration: 2 Days; Instructor-led
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/C# 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.
Audience
The Test Driven Development course is for anyone who is involved in a real project life.
Prerequisites
no pre-requisites
Methodology
We believe in Scrum and we play Scrum so the workshop itself will be run using Scrum in multiple Sprints with ZERO power point slides. Participants will learn about TDD from each other by pair programming and peer review. Expect to have lots of fun while you learn as workshop is loaded with content like pair programming, peer review, live project, learn by doing and learn to measure progress.
We conduct training in interactive manner with several practical examples and activities. We also do customization to suite customer expectations while maintaining the objective of workshop. We shall conduct Pre and Post assessment for training as well as will define measurable expectation for coaching. Workshop will have 4-6 coding DOJO sessions (each session for 1.5 hrs.).
Course Objectives
no course objective
Outlines
Training Agenda
- Test Driven Development – why, what and how
- Drive the development (design and implementation) by TDD
- Learn concept of Emergent Design and why emergent design
- Refactoring, Clean Code principle and Refactoring to Patterns
- Working effectively with Legacy code
- Practicing TDD with Legacy Code
- Breaking dependencies and improving Legacy Code
- Continuous Integration with TDD
Module 1
- What is unit testing
- Why unit testing is needed
- Difference between Unit Testing and Integration Testing
- Developer and Tester role in Unit Testing
- TDD approach and its benefits
- Improving the quality and design of the code by testing
- Different types of tests: unit, integration, functional
- Understand the life cycle of a test in the xUnit framework
- Respect of the principle of isolation and control of test results
Module 2
- Consequence of technical debt and risk of “breaking” the code
- Where? When? How refactoring?
- Best practices and limitations
- Definition and principles of frameworks
- Emergent Design
- Principle of scalability and implementation
- Design Patterns and Principles
- Understanding about SOLID design Principles
- Continuous Integration