Course Category: Agile Methods
Course Duration: 4 Days
Hours: 28 Contact Hours
Processworks Sdn. Bhd. is a registered HRDF Training Provider
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