This two-day agile testing seminar dives into how to effectively incorporate developer testing into agile development. This agile testing training explores developer-focused agile testing practices including Test Driven Development (TDD), Acceptance Test Driven Development (ATDD), and Behavior-Driven Development (BDD). You will learn the ins and outs of unit testing, including unit test patterns and anti-patterns, and how to use TDD to improve the efficiency of your projects while also learning what pitfalls to avoid. You will also learn patterns, principles, and refactorings to make your software more testable. And you will learn multiple methods to measure the coverage and effectiveness of your tests.

Throughout this seminar you will participate in extensive hands-on lab exercises to gain experience using the agile testing techniques presented.

To get the most out of the labs, we encourage you to bring a laptop with your actual development environment (an IDE editor and a testing framework at a minimum). We provide code in C#, Python, Ruby, and Java for you to choose. We're sorry we can't provide support or help for any tool-specific issues.


"The course was a very good introduction. In some ways, I wish I'd attended something similar when I was first starting TDD. I will definitely recommend to my coworkers."  -- Dave Strock, Astronautics

"Most Valuable: The unit testing portion. More the instructor presenting the material and then challenging us on our preconceived notions. Instructor was great, was extremely helpful in finding solutions or at least starting the conversations."  -- Mithell Leitch

"Enjoyed the class, energetic instructor, good discussions and lots of examples provided."  -- Tom Karaflos, Strata Decision Technology



Learn to:

  • Describe how testing is effectively incorporated into agile approaches like Scrum
  • Use Behavior-Driven Development (BDD) and Test-Driven Development (TDD) to drive the development process with reduced risk
  • Write Unit Tests using the most efficient and effective patterns and tactics while avoiding dangerous anti-patterns
  • Apply techniques and patterns for writing code that is more naturally testable
  • Measure the extent of test coverage achieved by your tests


Who Should Attend

Developers who are designing code, writing code, and testing their code on agile projects. Also intended for QA Leads and Testers who want to gain a better understanding of the agile test practices that developers can use to test their code before the code enters independent testing.


All of our public classes are held at the Construx Training Center

Agile Testing Mindset

  • Testing throughout
  • Preventing defects
  • Testing understanding
  • Sharing testing responsibility
  • Testing for building best systems

Incorporating Testing in Scrum

  • Agile testing during backlog refinement
  • Agile testing during Sprint planning
  • Agile testing during Sprint execution
  • Specifying and refining acceptance criteria of user stories
  • Incorporating testing in Definition of Ready, Working Agreements, and Definition of Done

Continuous Integration (CI)

  • Balancing isolation and integration
  • Essential requirements for continuous integration
  • Integration and smoke tests
  • Characteristics of good automated builds
  • Continuous Integration best practices

Agile Testing Strategy

  • Types of tests: The Testing Quadrants
  • Test automation pyramid
  • The value proposition for test automation
  • Benefits of testability
  • Goals and principles of test automation

Acceptance Tests

  • Acceptance test vs. unit tests
  • Specification by Example
  • Acceptance Test-Driven Development (ATDD)
  • Describing behavior in Gherkin (Given-When-Then)
  • Behavior-Driven Development (BDD)

Unit Testing Fundamentals

  • Unit testing feedback
  • xUnit testing frameworks
  • Essential xUnit test patterns and anti-patterns
  • Characteristics of good unit tests
  • Testing exceptions

Designing for Testability

  • Rules of simple design
  • Dependency Inversion Principle
  • Open-Closed Principle
  • Dependency injection and dependency lookup
  • Law of Demeter

Test Doubles

  • State verification vs. behavior verification
  • Testing objects with indirect inputs from other components
  • Testing objects with indirect outputs to other components
  • Mocking and faking objects
  • Refactorings to introduce test doubles

Test-Driven Development (TDD)

  • What is the test-driven approach and how it aligns with agile principles
  • Robustness vs. correctness
  • Identifying tests with Design-By-Contract
  • TDD katas

Coverage Analysis

  • The value proposition of white-box testing
  • Flow graphs
  • Cyclomatic complexity and defect density
  • Coverage criteria
  • Minimizing logical complexity

Melvin Perez-Cedano

Melvin Pérez-Cedano is a Senior Fellow at Construx Software where he provides training and consulting services that help organizations and individuals to successfully ...