Two Days Developer Testing Bootcamp

The Developer Testing Bootcamp offers a comprehensive, hands-on learning experience to various tools and techniques for effectively practicing automated testing and Test Driven Development.

Over the past decade, eXtreme Programming practices like User Stories, Test-Driven Development (TDD), Refactoring, Continuous Integration and Automation have fundamentally changed software development processes and inherently how engineers work. Practitioners claim that it has helped them significantly improve their development speed, design quality and responsiveness to changing requirements. Software professionals across the board, from Internet startups to medical device companies to space research organizations, today have embraced these practices.

This workshop explores the foundations of Unit & Integration testing, TDD & BDD with the help of various patterns, strategies, tools and techniques. Developers will learn essential difference between different kinds of testing techniques and will understand when to apply which approach or type of testing.

Acceptance Test Driven Development

Learning Outcomes

  • Understand the difference between
    • white-box vs. black-box tests,
    • positive vs. negative-path testing,
    • unit vs. integration vs. behavioural test and
    • line-coverage vs. branch-coverage.
  • Learn various automated testing techniques and strategies to carefully test your code.
  • Practice key techniques to break coupling between classes and micro-test each component independently.
  • Experience the thought process and steps involved during a typical test-driven session.
  • Drive the development (design and implementation) of a User Story using automated tests.
  • Discover improved confidence & increase in development speed by writing tests first!
  • Identify poorly designed tests by using our elaborate test smell vocabulary.

Testing Pyramid

Course Outline

  • Developer Testing Core Concepts
    • These concepts will help developers understand some core testing concepts like difference between
      • white-box vs. black-box tests,
      • positive vs. negative-path testing,
      • unit vs. integration vs. behavioural test
      • state vs. interaction tests and
      • line-coverage vs. branch-coverage.
    • An interactive code-walk through followed by a hands-on lab.
  • Automated Unit Testing
    • We'll cover the philosophy of developer unit testing, provide a detailed overview of xUnit framework, including how to write and organise tests, which assert methods to use, how to deal with exceptions within tests and test naming conventions.
    • Different levels of testing and their qualities/attributes will be demonstrated.
    • All these techniques are introduced using xUnit in the respective IDEs.
An interactive demo followed by a few labs in which developers learn how to write effective test including tests where external systems or sub-systems like databases are involved.
  • Test Smells helps developers identify common problems in your tests.
    • In this workshop, students will be given a few badly written tests (one at a time.) Students will have to find the problems with each test and then fix those tests to avoid those problems.
  • Faking & Mocking
    • Collaboration between objects lies at the heart of all object-oriented programming. Every OO pattern ultimately comes down to one object calling another. But all collaborations aren't created equal! Some collaborations are especially awkward to test, and this workshop demonstrates how to test collaborators better, and improve the way your objects work together.
    • We introduce various kinds of test doubles or fakes: Stubs, Mocks, Spy & Simulators via a hands on lab.

Mock Objects

  • Test-Driven Development (TDD)
    • TDD is a practice for efficiently evolving useful code. While its name implies that it's mostly about testing, test-driven development is primarily about design: it keeps programmers focused on exactly what they need to build and helps them avoid over-engineering.
    • We'll demonstrate the TDD Rhythm. Participants will understand how TDD simplifies evolving lean, useful, fully tested software.
    • We'll give a small live demo of TDD and then Participants will get their hands dirty by using TDD on 3 different problems.
    • We'll conclude by highlighting the different styles of TDD.

Strongly Recommended

  • 1 or 2 Days of Mentoring via Pair Programming with Developers on your code base
    • To get your team kick-started with the learning from the workshop, we recommend, that our trainer spends a day or two, working with your team on your code base.
    • Each day will be reserved for 4 pair programming sessions. During these sessions, the workshop participants will take specific examples from their projects, where they are finding it difficult to apply any of the practices learned in the workshop. The trainer will then pair with an individual to show how to resolve those challenges.
    • At the end of the day, the 4 volunteers will summarize their learning by showing before and after code from their respective pairing session to the rest of the group.
  • Pre-Post Programming Assessment
    • The goal of these programming assessments is to identify real and quantifiable measures for the learning achieved through our workshop.
    • Objective:
      • Get a quick understanding of your knowledge and skill level with respect to Designing & Programming
      • Establish a baseline against which the effectiveness of the workshop may be measured
      • Customize our workshop based on specific areas identified in this assessment
    • Pre-Assessment: Before the workshop, we'll send a problem description, your developers will spend max 4 hours and solve the problem and send us the code. We'll evaluate the code and send you detailed feedback about the code, including areas for improvement. We can send different types of problems (fresh development, cleaning up existing code and so on.)
    • Post-Assessment: 2 week after the workshop, we send another problem and evaluate the solution code. A comparison between the Pre and Post Assessment should be able to clearly quantify per-participant level improvement.
    • Click on the image to download the sample report...

Programming Assessment Sample Report

Method of Instruction

  • Interactive Dialogues, Programming Exercises, Demos, and Instructional Games

Transfer %

  • Knowledge: 50%, Skill-Building: 50%

Target Audience

  • Primary: Programmers, Architects, and Designers
  • Secondary: Technical Managers, Business Analysts, Testers, Technical Writers

Course Level

  • Beginner to Intermediate

Course Prerequisites

  • Required: some understanding of OO concepts and an OO language
  • Highly Recommended: basic understanding of the life-cycle of software projects

General Requirements

To ensure a successful class, we require the following facilities:

  • VGA projector (1024x768 minimum) & Projector screen
  • 1 White board & Dry erase markers
  • Cluster seating with 5-6 people on each table
  • 1 Flip chart with the stand and marker pens for each table
  • Notepad and Pen for each participant
  • Ample room for students in terms of room size and set up
  • For Dev trainings: at least one powerful workstation between two programmers

Development Tools

Java C# JavaScript C/C++ Ruby PHP Flex


"Inversion of Software Development", that's what Naresh gave me through his 5 days workshop at Amazon. He is one of the best mentors I encountered in my career.

The way he tries to explain TDD and Design principles with practical approaches, always challenging the concepts which we used to think were industry standards. Learning through his workshop, now coding is like blogging, drop dead simple, and you don't look back.

I hope we had more dojos like Naresh mentoring people in Indian Software Industries to let them know what real clean software development is all about. To sum up he instilled the idea - "Perfection isn't the goal, it's the baseline." about software development in me.

-- Rajat Talwar, Software Engineer II, Amazon

I recently met Naresh Jain during Test Driven Development(TDD) training at my current organisation. He is very knowledgeable and also very effective as a trainer. His enthusiasm and confidence is a game-changer when it comes to motivating the workshop participants.

I've really benefited from his training and by applying TDD in my day-to-day work . It was a great experience and I wish, I could get a chance to work with him on a real project.

-- Lokesh Gaur, Technical Lead,Samsung Research

It's been 3 weeks since I had the opportunity to attend a 3-Day TDD workshop followed by a 3-Day Design Patterns workshop by Naresh Jain. Post the workshops; I was able to fully test drive a feature that is already in production.

I had many take-away from his workshops, but the most important ones were - 1. It gave me the confidence that with TDD you can come up with good designs, 2. Learnt refactoring techniques and IDE tricks, 3. Got a deeper understanding of design values, principles and patterns. 4. Identifying code smells (the codes that I was proud of, now all I see there is code smells :P). But thanks to Naresh I know how to make it right.

-- Chandan Kumar, Software Development Engineer, Amazon

Rarely have I met a trainer who was truly hands-on. The depth of knowledge and on-field experience of Naresh Jain is truly inspiring. His proficiency in agile techniques and TDD is bleeding edge.

We have benefited immensely in barely three days of TDD training with him. We wish he was on our team here in EMC2.

-- Vimal Kumar, Principal Software Engineer, EMC2

Recently I attended Naresh's workshop on Test Driven Development (TDD) at Amazon, Hyderabad. It was a great learning experience and an eye-opener in few cases.

He is very involved with the Agile community and has worked with a lot of industry experts. That's the best part of getting trained by him. He is up-to-date with the latest trends and his skills are very relevant.

Naresh's in-depth knowledge and great attitude, fueled by his passion for technology makes him a great techie to work with. I had a great experience and would highly recommend him for training/coaching or even just to have good discussions.

-- Akshay Johri, Software Development Engineer, Amazon

© 2015 AgileFAQs Technology Pvt Ltd. All rights reserved.