Domain Testing

TRAINING DESCRIPTION

This training provides a programmatic approach to creating automated tests at various levels (unit, integration, and end-to-end). The training emphasizes testing based on use case scenarios at the application services level, aligned with Domain-Driven Design principles. Participants will learn Behavior-Driven Development (BDD) and Specification by Example techniques. Additionally, the course highlights sharing test definitions across testing levels, the builder pattern for test data generation, and using custom application factory classes. Ports in the Ports and Adapters architecture will feature in-memory implementations for unit tests, eliminating the need for mocking.

A significant part of the training explores leveraging Generative AI to create test scenarios and definitions based on requirements, streamlining the testing process and enhancing collaboration between stakeholders.

Order dedicated training

BASIC PROGRAM

  • Module 1: Fundamentals of Domain Testing
  • Module 2: Behavior-Driven Development and Specification by Example
  • Module 3: Reusable Test Definitions Across Testing Levels
  • Module 4: Builder Pattern for Test Data Creation
  • Module 5: Custom Application Factory Classes
  • Module 6: In-Memory Implementations of Ports for Unit Tests
  • Module 7: Integration and End-to-End Testing Strategies
  • Module 8: AI-Powered Scenario and Test Generation
  • Module 9: Summary and Best Practices

DETAILED PROGRAM

Module 1: Fundamentals of Domain Testing

  • Understanding the role of domain testing in modern software development
  • Testing aligned with Domain-Driven Design principles
  • Importance of focusing on use case scenarios

Module 2: Behavior-Driven Development (BDD) and Specification by Example

  • Overview of BDD and its principles
  • Writing tests as specifications using Gherkin syntax
  • Bridging the gap between domain experts and developers
  • Implementing Specification by Example

Module 3: Reusable Test Definitions Across Testing Levels

  • Designing tests to be reusable across unit, integration, and end-to-end levels
  • Structuring tests to minimize duplication
  • Examples of shared test definitions for different testing levels
  • Managing shared test definitions in collaborative teams

Module 4: Builder Pattern for Test Data Creation

  • Introduction to the builder pattern for test data
  • Designing reusable and extensible test data builders
  • Examples of using builders to create complex test data

Module 5: Custom Application Factory Classes

  • Purpose of application factory classes
  • Creating application components with factory classes
  • Managing non-domain classes for testing
  • Examples of factories for different application layers

Module 6: In-Memory Implementations of Ports for Unit Tests

  • Introduction to Ports and Adapters architecture
  • Advantages of in-memory implementations over mocks
  • Designing in-memory implementations for unit testing
  • Examples of in-memory ports for different use cases

Module 7: Integration and End-to-End Testing Strategies

  • Differences between unit, integration, and end-to-end tests
  • Designing integration tests for application consistency
  • Creating maintainable end-to-end tests
  • Tools and frameworks for integration and end-to-end testing

Module 8: AI-Powered Scenario and Test Generation

  • Using Generative AI to analyze requirements and generate test scenarios
  • Creating test definitions with AI support based on use case descriptions
  • Enhancing collaboration between developers, testers, and domain experts with AI tools
  • Practical examples of integrating AI into the test creation workflow

Module 9: Summary and Best Practices

  • Recap of key techniques and patterns
  • Strategies for scaling domain testing in larger projects
  • Best practices for maintaining test suites
  • Continuous integration and automated testing pipelines
  • Leveraging AI for ongoing testing improvements