Course Description
Organizations deliver software increasingly fast using DevOps principles and practices. In this new world, testing plays a big role. Without tests, there’s not much value in automating application deployments.
You might have been able to break the silos of development and operations. But if you’re still doing manual testing and requesting help from other teams to gather data for testing, you’re not taking full advantage of delivering continuously.
In this course, we’ll talk about why preparing data for testing is crucial in all organizations and why historically this has been so difficult to do. Test data management solves this problem in different ways by letting you have copies of production data, with the exception that sensitive information like credit card numbers or social security numbers can be masked.
After you’ve been able to stop requesting data from the DBAs, there’s still a problem: you still need them to review and apply schema changes. Usually, that happens just before doing it in production, adding more time to deployments—especially when there are problems with the scripts.
That’s why in, this course, we’ll also talk about schema changes and how can they be injected into your DevOps implementation. We’ll talk about the principles, practices, and tools that will help you achieve it.
Finally, we’ll put that into practice by doing a workshop using a real-world scenario.
In this Course, You will Learn How to:
- Prepare data for different testing environments
- Incorporate test data management into you DevOps Practice
- Make test data management a self-service process
- Mask data for security compliance
- Create non-production databases using test data management
- Running a set of test cases using test data management
- Use Liquibase to Promote database Changes
- Create a Deployment Pipeline using Jenkins and Liquibase
Substitution & Cancellation Policy:
You may cancel or reschedule up to 21 days prior to the start date of the class at no penalty. For any cancellation or reschedule requests within 21 days, the full course tuition is still due and not eligible for refund. Any paid tuition will be credited towards a future class and must be used within 12 months.
*Partner delivered courses may be subject to different cancellation terms
Agenda
Course Outline
Part 1: Why Is Testing Data Important?
Part 2: Why Is Testing Data Hard?
Preparing data for different environments is not an easy task. As the database and complexity grow, it’s more and more difficult to do. Plus, it can be expensive when databases are too big.
Compliance, Regulations, and Data Protection
The Impact That It Has In Cost Storage
Part 3: The Testing Pyramid
We’ll talk not only about the different type of tests but also about when they’re needed and how many of them are needed to reduce lead time to deliver.
Manual Tests
System or APIs Tests
Integration Tests
Component Tests
Unit Tests
Part 4: Test Data Management
We’ll cover all the aspects of test data management and its role in DevOps.
What Is It?
Doing the Discovery of Data
Making TDM A Self-Service Process
Masking Data For Security and Compliance
Working With Subsetting Data
Working With Synthetic Generation
Including Data Virtualization
Commercial Tools
Part 5: Using Test Data Management For Testing
How to create non-production databases?
Exercise: Creating non-production databases using TDM
Working with different test environments like dev, QA, staging
Tips & Tricks to use TDM for Testing
Exercise: Running a set of test cases using TDM
Part 6: Continuous Integration and Continuous Delivery Overview
A brief recap of CI/CD. We will cover the basics, specifically how this applies to databases
What Is CI/CD?
How does a CI/CD workflow look like?
How to include DB changes?
Part 7: Database Release Automation
Automation is king. But how can DevOps help you to not just deliver code changes but also changes in the database?
Database Versioning
Database Migration Scripts
Immutable Data For Test Cases
Forward and Backwards Compatible
Rolling Back Databases
Commercial and Noncommercial Tools
Part 8: Working with Liquibase
Liquibase is the open source project used to automate the database release changes. We’ll discover what it is, how to use it and how to integrate it in any delivery pipeline.
Liquibase: What is and How it Works
Liquibase Concepts
How to Use Liquibase?
Using Liquibase With New Projects
Using Liquibase With Existing Projects
Incremental Migrations
Generating SQL Scripts
Managing Rollbacks
Liquibase Best Practices
Commercial Support: Datical
Setting Up a Local Environment
Exercise: Creating Initial Database Schema
Part 9: Database Release Automation Project
Install the Software
Creating Initial Database Schema
Workflow to Promote DB Changes
Using Liquibase to Promote DB Changes
Putting Everything Under Version Control
Creating a Deployment Pipeline using Jenkins and Liquibase
Part 10: Database Release Automation Using Containers
Using containers will help you to reduce costs and time to deliver. So we’ll talk about why this is important and discuss some tips that will help you implement containers to promote database changes in your delivery pipeline.
Prerequisites
What are containers?
What are containers capabilities?
Part 11: Containers Project - .NET Core + Entity Framework + Containers
Preparing the Environment
Choosing a .NET project
Dockerizing the .NET app
Migrations with Entity Framework
Creating a deployment pipeline with Jenkins
Including migrations scripts into the pipeline
Applying database changes using containers
Introduction to Kubernetes
Deploying containers to Kubernetes