Course Category: Agile Methods
Course Duration: 4 Days
Hours: 28 Contact Hours

Register Now

Course Objectives

The primary focus  of  this workshop is  to  coach participants  to  apply  unit  testing  with frameworks collectively  known as unit  testing frameworks and to adopt test-first method of coding. Participants will learn practices to write reliable code using TDD. ‘Unit testing framework’ refers to any of popular unit testing frameworks with architecture similar to Junit for Java and Nunit/Xunit/MSTest for .Net. Similarities between such unit testing frameworks is explained.

The workshop includes many demonstrations. The demonstrations will be beneficial for programmers well-versed in any  object  oriented  languages  like  C#,  Java,  VB.Net,  python  etc.

Participants will work on hands-on exercises with their choice of unit testing framework. Program includes topics like OO design principles, Refactoring, Patterns, Role of TDD in Agile Development and Continuous integration.  The course also introduces concept of Behaviour Driven Development (BDD) and Acceptance Test Driven Development (ATDD).

Pre-requisites

Participants must be software developers who aspire to use TDD to write better code with C#, Java, VB.Net or other object oriented programming language.  Participants must have knowledge of tools  and programming in OO language of their choice to participate in hands-on. Content is appropriate for intermediate level participants.

Laptop Requirement

Participants are expected to bring laptops to the class for the following:

  • To run demos with Visual Studio 2015, Visual Studio 2015, Microsoft.Net 4+, Sql Server Express 2014
  • To perform hands-on exercises with their choice of IDE and tools, e.g. Eclipse for Java or Visual Studio for C# etc
  • To download and install frameworks

Course Content

TDD Introduction

  • Types of testing
  • Developer Vs. Tester
  • Traditional coding
  • Test-First Vs. Code-First
  • Red/Green coding
  • Why TDD?
  • Role of TDD in agile SDLC
  • Reducing Technical Debt
  • Practicing Emergent Design
  • Making Changes More Safe
  • Regression Testing

Unit testing

  • Manual unit testing and its problems
  • Goals of unit testing
  • Architecture of Unit testing framework(s) – JUnit, NUnit
  • Basic syntax of NUnit and Junit
  • More advanced syntax
  • Naming Conventions
  • AAA Technique
  • Commonality of test code
  • Collections, Files and Database
  • Exception handling
  • Testing non-public elements
  • Triangulation
  • Boundaries
  • Mock Objects
  • Manual Mocks
  • Auto Mocks
  • Stubs
  • Self-Shunting
  • Performance

BDD and ATDD

  • Extension of TDD
  • Stories, Scenarios and Steps
  • Benefits
  • Gherkin
  • Frameworks and Usage

Key Ideas

  • Continuous Integration
  • Code Smells
  • Key Refactorings
  • Legacy Code
  • Advanced OO principles
    • SOLID, OCP, SRP, DIP, IOC, Encapsulation, SI etc
  • Introduction to GoF Patterns
  • TDD Patterns
  • Anti-Patterns
  • Code Coverage
  • Testability of Code

Course Category: Agile Methods
Course Duration: 4 Days
Hours: 28 Contact Hours