Course Overview
Addresses more advanced techniques for common concerns in Java enterprise development:
- Integration Testing: efficiency, reliability, repeatability
- Performance & Data Consistency: especially in high-concurrency systems
- Migrating Production Versions Safely
- Architecting for Multiple Teams
- Web & Database Optimization & Maintainability
Learning Outcomes
- Domain Driven Design
- Mock Testing
- Integration Testing
- TestContainers
- POST-GET-Redirect (PRG) Pattern
- REST
- Transactions & Concurrency
- Database Optimization
- Database Migration
- Load Testing w/ JMeter
- Command Query Responsibility Separation (CQRS)
- UI Testing w/ Selenium
Course Outline
Domain Driven Design (DDD)
- Ubiquitous Language
- Layered vs. Hexagonal Architecture
- Domain Classes
- Entities
- Value Objects
- Services
- Service Anti-Patterns
- DDD Package Structure
- Aggregates
- Bounded Context
- Event Storming
Mock Testing
- Test-Driven Development (TDD) using Mockito
Integration Testing
- TDD using Spring MockMvc
- Testcontainers
- Separating unit tests from integration tests
Testcontainers
- The Testcontainers library provides lightweight throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container, in support of JUnit tests.
- Best practices for integration testing using Testcontainers
POST-GET-Redirect (PRG) Pattern
- The POST-GET-Redirect (PRG) architectural pattern helps prevent users from making duplicate submissions.
RESTful Architecture
- What does REST mean?
- Common conventions
Transactions & Concurrency
- Testing for race conditions
- How to avoiding them
Database Optimization
- Profiling & Replication
- Indexing best practices
- Optimizing Queries
- Optimizing Schemas
- Avoiding Deadlocks
- Optimization with the Application
- Archiving & Partitioning
- Reclaming Storage & Gathering Statistics
Database Schema Migration
- Using Liquibase to manage changes to database structure
Load Testing with JMeter
- Performance testing overview
- HTTP Protocol overview
- Simulating requests
- Simulating concurrent users
- Managing cookies
- Generating reports
- Interpreting results
- Record & playback
- Using variables & functions
- Scaling-up tests using master-slave configuration
- Tips & best practices
Command Query Responsibility Separation (CQRS) Pattern
- Using different models to handle different requests and responses
User Interface Testing with Selenium
- Overview of UI Testing
- Selenium IDE (record & playback)
- Review of CSS Locators
- Review of XPath
- Selenium Web Driver API: Setting Up
- Navigation
- Referencing web elements using Id and Name Locators
- CSS
- XPath
- Handling text boxes
- Handling dropdown/select elements
- Handling multiple select elements
- Handling checkboxes and radio buttons
- Explicit and implicit wait
- Handling keyboard & mouse events
- Using actions and action
- Handling web tables
- Handling upload and download
Introduction to MongoDB (NoSQL)
- Overview – history, advantages & disadvantages
- Using the mongo console
- Connecting to a database
- Querying
- Filters
- Embedded documents in filters
- Comparison Operators
- Pagination
- Aggregation Framework
- Creating a Database
- Creating Collections
- Inserting Documents
- Updating
- Replacing
- Deleting
- Analyzing performance of queries Indexing
- Unique constraint
- Document validation
- Java library for MongoDB
Skill Level
Advanced
Suitable For
Java developers who want to write high quality, robust, scalable code for Enterprise or other mission-critical applications. Should have prior experience with HTML, SQL, JUnit, Spring or Java EE, and JPA.
Duration
5
day
s
Related Topics
Enquire Now
Skill Level
Advanced
Suitable For
Java developers who want to write high quality, robust, scalable code for Enterprise or other mission-critical applications. Should have prior experience with HTML, SQL, JUnit, Spring or Java EE, and JPA.
Duration
5
day
s
Related Topics
Course Overview
Addresses more advanced techniques for common concerns in Java enterprise development:
- Integration Testing: efficiency, reliability, repeatability
- Performance & Data Consistency: especially in high-concurrency systems
- Migrating Production Versions Safely
- Architecting for Multiple Teams
- Web & Database Optimization & Maintainability
Learning Outcomes
- Domain Driven Design
- Mock Testing
- Integration Testing
- TestContainers
- POST-GET-Redirect (PRG) Pattern
- REST
- Transactions & Concurrency
- Database Optimization
- Database Migration
- Load Testing w/ JMeter
- Command Query Responsibility Separation (CQRS)
- UI Testing w/ Selenium
Course Outline
Domain Driven Design (DDD)
- Ubiquitous Language
- Layered vs. Hexagonal Architecture
- Domain Classes
- Entities
- Value Objects
- Services
- Service Anti-Patterns
- DDD Package Structure
- Aggregates
- Bounded Context
- Event Storming
Mock Testing
- Test-Driven Development (TDD) using Mockito
Integration Testing
- TDD using Spring MockMvc
- Testcontainers
- Separating unit tests from integration tests
Testcontainers
- The Testcontainers library provides lightweight throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container, in support of JUnit tests.
- Best practices for integration testing using Testcontainers
POST-GET-Redirect (PRG) Pattern
- The POST-GET-Redirect (PRG) architectural pattern helps prevent users from making duplicate submissions.
RESTful Architecture
- What does REST mean?
- Common conventions
Transactions & Concurrency
- Testing for race conditions
- How to avoiding them
Database Optimization
- Profiling & Replication
- Indexing best practices
- Optimizing Queries
- Optimizing Schemas
- Avoiding Deadlocks
- Optimization with the Application
- Archiving & Partitioning
- Reclaming Storage & Gathering Statistics
Database Schema Migration
- Using Liquibase to manage changes to database structure
Load Testing with JMeter
- Performance testing overview
- HTTP Protocol overview
- Simulating requests
- Simulating concurrent users
- Managing cookies
- Generating reports
- Interpreting results
- Record & playback
- Using variables & functions
- Scaling-up tests using master-slave configuration
- Tips & best practices
Command Query Responsibility Separation (CQRS) Pattern
- Using different models to handle different requests and responses
User Interface Testing with Selenium
- Overview of UI Testing
- Selenium IDE (record & playback)
- Review of CSS Locators
- Review of XPath
- Selenium Web Driver API: Setting Up
- Navigation
- Referencing web elements using Id and Name Locators
- CSS
- XPath
- Handling text boxes
- Handling dropdown/select elements
- Handling multiple select elements
- Handling checkboxes and radio buttons
- Explicit and implicit wait
- Handling keyboard & mouse events
- Using actions and action
- Handling web tables
- Handling upload and download
Introduction to MongoDB (NoSQL)
- Overview – history, advantages & disadvantages
- Using the mongo console
- Connecting to a database
- Querying
- Filters
- Embedded documents in filters
- Comparison Operators
- Pagination
- Aggregation Framework
- Creating a Database
- Creating Collections
- Inserting Documents
- Updating
- Replacing
- Deleting
- Analyzing performance of queries Indexing
- Unique constraint
- Document validation
- Java library for MongoDB