SlideShare a Scribd company logo
1 of 129
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Pandy Knight
Automation Panda
Applitools Pr Developer Advocate
Test Automation University Director
Managing the Test Data Nightmare
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
suki_thefrenchie_
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Test data can be a nightmare.
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
And the page “https://www.myloanapp.com” is loaded
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
And the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
And the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
And the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
And the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
And the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
And the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Personal Info
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
And the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Loan Type
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
And the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Loan App
Record
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
And the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Reference Number
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
And the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Website URL
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
And the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Browser Type
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
And the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
test data
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
test data
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
test data
Chrome browser
https://www.myloanapp.com
home mortgage
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
reference number
loan application sent to the bank
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
test data
Chrome browser
https://www.myloanapp.com
home mortgage
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
reference number
loan application sent to the bank
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
When the user creates a new loan application for “home mortgage”
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
When the user creates a new loan application for “home mortgage”
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
When the user creates a new loan application for “home mortgage”
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
How should we manage
test data?
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Form a good strategy
to avoid a nightmare.
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Product Data
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Product Data
Everything in the database:
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Product Data
Everything in the database:
● User accounts
● Administration settings
● Product customizations
● Records
● Files
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Product Data
Everything in the database:
● User accounts
● Administration settings
● Product customizations
● Records
● Files
Our example loan web app:
user accounts, loan products, completed applications, bank data
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
How to set up product data?
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep
● Created before tests run
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep
● Created before tests run
● Good for slow or complicated data
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep
● Created before tests run
● Good for slow or complicated data
● May make tests run faster
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep
● Created before tests run
● Good for slow or complicated data
● May make tests run faster
● May make tests brittle as data changes
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep
● Created before tests run
● Good for slow or complicated data
● May make tests run faster
● May make tests brittle as data changes
● May turn stale over time
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep
● Created before tests run
● Good for slow or complicated data
● May make tests run faster
● May make tests brittle as data changes
● May turn stale over time
Dynamic Data Prep
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep
● Created before tests run
● Good for slow or complicated data
● May make tests run faster
● May make tests brittle as data changes
● May turn stale over time
Dynamic Data Prep
● Created when a test runs
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep
● Created before tests run
● Good for slow or complicated data
● May make tests run faster
● May make tests brittle as data changes
● May turn stale over time
Dynamic Data Prep
● Created when a test runs
● Avoids brittle references
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep
● Created before tests run
● Good for slow or complicated data
● May make tests run faster
● May make tests brittle as data changes
● May turn stale over time
Dynamic Data Prep
● Created when a test runs
● Avoids brittle references
● Exclusive use
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep
● Created before tests run
● Good for slow or complicated data
● May make tests run faster
● May make tests brittle as data changes
● May turn stale over time
Dynamic Data Prep
● Created when a test runs
● Avoids brittle references
● Exclusive use
● Slows down individual tests
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep
● Created before tests run
● Good for slow or complicated data
● May make tests run faster
● May make tests brittle as data changes
● May turn stale over time
Dynamic Data Prep
● Created when a test runs
● Avoids brittle references
● Exclusive use
● Slows down individual tests
● Requires cleanup
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep
● Created before tests run
● Good for slow or complicated data
● May make tests run faster
● May make tests brittle as data changes
● May turn stale over time
Dynamic Data Prep
● Created when a test runs
● Avoids brittle references
● Exclusive use
● Slows down individual tests
● Requires cleanup
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Manual configuration
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Manual configuration Anyone can do it,
Extra tools are not needed
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Manual configuration Anyone can do it,
Extra tools are not needed
Slow and not scalable,
May fall into disrepair
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Manual configuration Anyone can do it,
Extra tools are not needed
Slow and not scalable,
May fall into disrepair
Automated configuration
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Manual configuration Anyone can do it,
Extra tools are not needed
Slow and not scalable,
May fall into disrepair
Automated configuration Create fresh data anytime,
Can also scrub data
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Manual configuration Anyone can do it,
Extra tools are not needed
Slow and not scalable,
May fall into disrepair
Automated configuration Create fresh data anytime,
Can also scrub data
Must maintain tools and scripts
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Manual configuration Anyone can do it,
Extra tools are not needed
Slow and not scalable,
May fall into disrepair
Automated configuration Create fresh data anytime,
Can also scrub data
Must maintain tools and scripts
Cloned databases
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Manual configuration Anyone can do it,
Extra tools are not needed
Slow and not scalable,
May fall into disrepair
Automated configuration Create fresh data anytime,
Can also scrub data
Must maintain tools and scripts
Cloned databases Easy to copy all data at once
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Manual configuration Anyone can do it,
Extra tools are not needed
Slow and not scalable,
May fall into disrepair
Automated configuration Create fresh data anytime,
Can also scrub data
Must maintain tools and scripts
Cloned databases Easy to copy all data at once Might be too much data,
Might need extra refinement
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Manual configuration Anyone can do it,
Extra tools are not needed
Slow and not scalable,
May fall into disrepair
Automated configuration Create fresh data anytime,
Can also scrub data
Must maintain tools and scripts
Cloned databases Easy to copy all data at once Might be too much data,
Might need extra refinement
Mocked endpoints
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Manual configuration Anyone can do it,
Extra tools are not needed
Slow and not scalable,
May fall into disrepair
Automated configuration Create fresh data anytime,
Can also scrub data
Must maintain tools and scripts
Cloned databases Easy to copy all data at once Might be too much data,
Might need extra refinement
Mocked endpoints Avoid dependencies,
Controls all data values
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Manual configuration Anyone can do it,
Extra tools are not needed
Slow and not scalable,
May fall into disrepair
Automated configuration Create fresh data anytime,
Can also scrub data
Must maintain tools and scripts
Cloned databases Easy to copy all data at once Might be too much data,
Might need extra refinement
Mocked endpoints Avoid dependencies,
Controls all data values
Difficult to set up and maintain,
May overlook some variations
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Manual configuration Anyone can do it,
Extra tools are not needed
Slow and not scalable,
May fall into disrepair
Automated configuration Create fresh data anytime,
Can also scrub data
Must maintain tools and scripts
Cloned databases Easy to copy all data at once Might be too much data,
Might need extra refinement
Mocked endpoints Avoid dependencies,
Controls all data values
Difficult to set up and maintain,
May overlook some variations
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Manual configuration Anyone can do it,
Extra tools are not needed
Slow and not scalable,
May fall into disrepair
Automated configuration Create fresh data anytime,
Can also scrub data
Must maintain tools and scripts
Cloned databases Easy to copy all data at once Might be too much data,
Might need extra refinement
Mocked endpoints Avoid dependencies,
Controls all data values
Difficult to set up and maintain,
May overlook some variations
Production Data Synthetic Data
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Factors for Static Data Prep
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Factors for Static Data Prep
1. Size?
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Factors for Static Data Prep
1. Size?
2. Freshness?
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Factors for Static Data Prep
1. Size?
2. Freshness?
3. Update frequency?
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Factors for Static Data Prep
1. Size?
2. Freshness?
3. Update frequency?
4. Difficulty (especially for legacy systems)?
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Factors for Static Data Prep
1. Size?
2. Freshness?
3. Update frequency?
4. Difficulty (especially for legacy systems)?
5. Bureaucracy?
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Factors for Static Data Prep
1. Size?
2. Freshness?
3. Update frequency?
4. Difficulty (especially for legacy systems)?
5. Bureaucracy?
6. Skill level?
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Factors for Static Data Prep
1. Size?
2. Freshness?
3. Update frequency?
4. Difficulty (especially for legacy systems)?
5. Bureaucracy?
6. Skill level?
7. Cost?
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
That’s product data.
What about test case data?
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
And the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
And the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
And the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Test Control Input
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Given the Chrome browser is open
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Given the Chrome browser is open
// inputs.json
{
“browser”: “Chrome”
}
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Given the Chrome browser is open
// inputs.json
{
“browser”: “Chrome”
}
# bash variables
$ export TEST_BROWSER=Chrome
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the page “https://www.myloanapp.com” is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Config Metadata
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Given the page “https://www.myloanapp.com” is loaded
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Given the page “https://www.myloanapp.com” is loaded
// inputs.json
{
“browser”: “Chrome”
“URL”: “https://www.myloanapp.com”
}
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Given the page “https://www.myloanapp.com” is loaded
// inputs.json
{
“browser”: “Chrome”
“URL”: “https://www.myloanapp.com”
}
# bash variables
$ export TEST_BROWSER=Chrome
$ export TEST_URL=https://www.myloanapp.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Given the page “https://www.myloanapp.com” is loaded
// inputs.json
{
“browser”: “Chrome”
“config”: “Staging”
}
// config.json
{
“Staging”: {
“URL”: “https://staging.myloanapp.com”
},
“Dev”: {
“URL”: “https://dev.myloanapp.com”
}
}
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Given the page “https://www.myloanapp.com” is loaded
// inputs.json
{
“browser”: “Chrome”
“config”: “Staging”
}
// config.json
{
“Staging”: {
“URL”: “https://staging.myloanapp.com”
},
“Dev”: {
“URL”: “https://dev.myloanapp.com”
}
}
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Given the page “https://www.myloanapp.com” is loaded
// inputs.json
{
“browser”: “Chrome”
“config”: “Staging”
}
// /some/api/endpoint/for/test/config
{
“Staging”: {
“URL”: “https://staging.myloanapp.com”
},
“Dev”: {
“URL”: “https://dev.myloanapp.com”
}
}
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
// inputs.json
{
“browser”: “Chrome”
“config”: “Staging”
}
// config.json
{
“Staging”: {
“URL”: “https://staging.myloanapp.com”
},
“Dev”: {
“URL”: “https://dev.myloanapp.com”
}
}
Given the page “https://www.myloanapp.com” is loaded
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Given the MyLoanApp web page is loaded
// inputs.json
{
“browser”: “Chrome”
“config”: “Staging”
}
// config.json
{
“Staging”: {
“URL”: “https://staging.myloanapp.com”
},
“Dev”: {
“URL”: “https://dev.myloanapp.com”
}
}
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the MyLoanApp web page is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Test Case Values
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the MyLoanApp web page is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Literal Values
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the MyLoanApp web page is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Output References
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the MyLoanApp web page is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Created Record
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the MyLoanApp web page is loaded
When the user creates a new loan application for “home mortgage”
And the user enters the following information:
| field | value |
| name | Freddy Krueger |
| address | 1428 Elm Street |
| amount | $200,000 |
| maturity | 30 years |
| down payment | 20% |
And the user submits the application
Then the page displays a success message with a reference number
And the loan application is sent to the bank
Input Reference
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
When the user creates a new loan application for a home mortgage
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
When the user creates a new loan application for a home mortgage
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
When the user creates a new loan application for a home mortgage
// Automation pseudocode
request = MakeRestRequestForAvailableLoanTypes();
response = restClient.Get(request);
foreach loan in response.Data:
if loan.Type is home mortgage
return loan.SpecificName
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Test Case Data
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Test Case Data
Type Description
Test Control Inputs Direct how tests will be run, not what behavior is covered.
Should be supplied via flat files or env vars.
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Test Case Data
Type Description
Test Control Inputs Direct how tests will be run, not what behavior is covered.
Should be supplied via flat files or env vars.
Configuration Metadata Describe product configuration for the target environment.
Should be supplied via config files or service API calls.
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Test Case Data
Type Description
Test Control Inputs Direct how tests will be run, not what behavior is covered.
Should be supplied via flat files or env vars.
Configuration Metadata Describe product configuration for the target environment.
Should be supplied via config files or service API calls.
Test Case Values Direct the behavior covered by the test.
May be literals, output references, or input references.
Input references may be hard-coded or discovered.
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
The nightmare isn’t over.
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
The nightmare isn’t over.
Collisions can happen!
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Avoiding Collisions
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Avoiding Collisions
1. Isolate the test environment(s)
a. Restrict access while testing?
b. Deploy new containers?
c. Make database clones?
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Avoiding Collisions
1. Isolate the test environment(s)
a. Restrict access while testing?
b. Deploy new containers?
c. Make database clones?
2. Treat any shared data as immutable
a. Parallel tests should not alter shared data
b. If any tests must temporarily alter shared data, run them serially separately
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Avoiding Collisions
1. Isolate the test environment(s)
a. Restrict access while testing?
b. Deploy new containers?
c. Make database clones?
2. Treat any shared data as immutable
a. Parallel tests should not alter shared data
b. If any tests must temporarily alter shared data, run them serially separately
3. Use dynamic data prep as much as possible
a. Tests cannot collide on data they don’t share
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Major Takeaways
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Major Takeaways
1. 2 types of test data: product data and test case data
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Major Takeaways
1. 2 types of test data: product data and test case data
2. Product data can be prepared statically or dynamically
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Major Takeaways
1. 2 types of test data: product data and test case data
2. Product data can be prepared statically or dynamically
3. Test case data either control how tests run or reflect product data
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Major Takeaways
1. 2 types of test data: product data and test case data
2. Product data can be prepared statically or dynamically
3. Test case data either control how tests run or reflect product data
4. Handle references and shared data carefully
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Choose the best strategies
to defeat your nightmare!
Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
Thanks!
Pandy Knight
Automation Panda
Applitools Developer Advocate
Test Automation University Director

More Related Content

More from QA or the Highway

KrishnaToolComparisionPPT.pdf
KrishnaToolComparisionPPT.pdfKrishnaToolComparisionPPT.pdf
KrishnaToolComparisionPPT.pdfQA or the Highway
 
Ravi Lakkavalli - World Quality Report.pptx
Ravi Lakkavalli - World Quality Report.pptxRavi Lakkavalli - World Quality Report.pptx
Ravi Lakkavalli - World Quality Report.pptxQA or the Highway
 
Caleb Crandall - Testing Between the Buckets.pptx
Caleb Crandall - Testing Between the Buckets.pptxCaleb Crandall - Testing Between the Buckets.pptx
Caleb Crandall - Testing Between the Buckets.pptxQA or the Highway
 
Thomas Haver - Mobile Testing.pdf
Thomas Haver - Mobile Testing.pdfThomas Haver - Mobile Testing.pdf
Thomas Haver - Mobile Testing.pdfQA or the Highway
 
Thomas Haver - Example Mapping.pdf
Thomas Haver - Example Mapping.pdfThomas Haver - Example Mapping.pdf
Thomas Haver - Example Mapping.pdfQA or the Highway
 
Joe Colantonio - Actionable Automation Awesomeness in Testing Farm.pdf
Joe Colantonio - Actionable Automation Awesomeness in Testing Farm.pdfJoe Colantonio - Actionable Automation Awesomeness in Testing Farm.pdf
Joe Colantonio - Actionable Automation Awesomeness in Testing Farm.pdfQA or the Highway
 
Sarah Geisinger - Continious Testing Metrics That Matter.pdf
Sarah Geisinger - Continious Testing Metrics That Matter.pdfSarah Geisinger - Continious Testing Metrics That Matter.pdf
Sarah Geisinger - Continious Testing Metrics That Matter.pdfQA or the Highway
 
Jeff Sing - Quarterly Service Delivery Reviews.pdf
Jeff Sing - Quarterly Service Delivery Reviews.pdfJeff Sing - Quarterly Service Delivery Reviews.pdf
Jeff Sing - Quarterly Service Delivery Reviews.pdfQA or the Highway
 
Leandro Melendez - Chihuahua Load Tests.pdf
Leandro Melendez - Chihuahua Load Tests.pdfLeandro Melendez - Chihuahua Load Tests.pdf
Leandro Melendez - Chihuahua Load Tests.pdfQA or the Highway
 
Rick Clymer - Incident Management.pdf
Rick Clymer - Incident Management.pdfRick Clymer - Incident Management.pdf
Rick Clymer - Incident Management.pdfQA or the Highway
 
Robert Fornal - ChatGPT as a Testing Tool.pptx
Robert Fornal - ChatGPT as a Testing Tool.pptxRobert Fornal - ChatGPT as a Testing Tool.pptx
Robert Fornal - ChatGPT as a Testing Tool.pptxQA or the Highway
 
Federico Toledo - Extra-functional testing.pdf
Federico Toledo - Extra-functional testing.pdfFederico Toledo - Extra-functional testing.pdf
Federico Toledo - Extra-functional testing.pdfQA or the Highway
 
Melissa Tondi - Automation We_re Doing it Wrong.pdf
Melissa Tondi - Automation We_re Doing it Wrong.pdfMelissa Tondi - Automation We_re Doing it Wrong.pdf
Melissa Tondi - Automation We_re Doing it Wrong.pdfQA or the Highway
 
Jeff Van Fleet and John Townsend - Transition from Testing to Leadership.pdf
Jeff Van Fleet and John Townsend - Transition from Testing to Leadership.pdfJeff Van Fleet and John Townsend - Transition from Testing to Leadership.pdf
Jeff Van Fleet and John Townsend - Transition from Testing to Leadership.pdfQA or the Highway
 
DesiradhaRam Gadde - Testers _ Testing in ChatGPT-AI world.pptx
DesiradhaRam Gadde - Testers _ Testing in ChatGPT-AI world.pptxDesiradhaRam Gadde - Testers _ Testing in ChatGPT-AI world.pptx
DesiradhaRam Gadde - Testers _ Testing in ChatGPT-AI world.pptxQA or the Highway
 
Damian Synadinos - Word Smatter.pdf
Damian Synadinos - Word Smatter.pdfDamian Synadinos - Word Smatter.pdf
Damian Synadinos - Word Smatter.pdfQA or the Highway
 
Lee Barnes - What Successful Test Automation is.pdf
Lee Barnes - What Successful Test Automation is.pdfLee Barnes - What Successful Test Automation is.pdf
Lee Barnes - What Successful Test Automation is.pdfQA or the Highway
 
Jordan Powell - API Testing with Cypress.pptx
Jordan Powell - API Testing with Cypress.pptxJordan Powell - API Testing with Cypress.pptx
Jordan Powell - API Testing with Cypress.pptxQA or the Highway
 
Carlos Kidman - Exploring AI Applications in Testing.pptx
Carlos Kidman - Exploring AI Applications in Testing.pptxCarlos Kidman - Exploring AI Applications in Testing.pptx
Carlos Kidman - Exploring AI Applications in Testing.pptxQA or the Highway
 
Ben Oconis - Breaking Down Silos.pdf
Ben Oconis - Breaking Down Silos.pdfBen Oconis - Breaking Down Silos.pdf
Ben Oconis - Breaking Down Silos.pdfQA or the Highway
 

More from QA or the Highway (20)

KrishnaToolComparisionPPT.pdf
KrishnaToolComparisionPPT.pdfKrishnaToolComparisionPPT.pdf
KrishnaToolComparisionPPT.pdf
 
Ravi Lakkavalli - World Quality Report.pptx
Ravi Lakkavalli - World Quality Report.pptxRavi Lakkavalli - World Quality Report.pptx
Ravi Lakkavalli - World Quality Report.pptx
 
Caleb Crandall - Testing Between the Buckets.pptx
Caleb Crandall - Testing Between the Buckets.pptxCaleb Crandall - Testing Between the Buckets.pptx
Caleb Crandall - Testing Between the Buckets.pptx
 
Thomas Haver - Mobile Testing.pdf
Thomas Haver - Mobile Testing.pdfThomas Haver - Mobile Testing.pdf
Thomas Haver - Mobile Testing.pdf
 
Thomas Haver - Example Mapping.pdf
Thomas Haver - Example Mapping.pdfThomas Haver - Example Mapping.pdf
Thomas Haver - Example Mapping.pdf
 
Joe Colantonio - Actionable Automation Awesomeness in Testing Farm.pdf
Joe Colantonio - Actionable Automation Awesomeness in Testing Farm.pdfJoe Colantonio - Actionable Automation Awesomeness in Testing Farm.pdf
Joe Colantonio - Actionable Automation Awesomeness in Testing Farm.pdf
 
Sarah Geisinger - Continious Testing Metrics That Matter.pdf
Sarah Geisinger - Continious Testing Metrics That Matter.pdfSarah Geisinger - Continious Testing Metrics That Matter.pdf
Sarah Geisinger - Continious Testing Metrics That Matter.pdf
 
Jeff Sing - Quarterly Service Delivery Reviews.pdf
Jeff Sing - Quarterly Service Delivery Reviews.pdfJeff Sing - Quarterly Service Delivery Reviews.pdf
Jeff Sing - Quarterly Service Delivery Reviews.pdf
 
Leandro Melendez - Chihuahua Load Tests.pdf
Leandro Melendez - Chihuahua Load Tests.pdfLeandro Melendez - Chihuahua Load Tests.pdf
Leandro Melendez - Chihuahua Load Tests.pdf
 
Rick Clymer - Incident Management.pdf
Rick Clymer - Incident Management.pdfRick Clymer - Incident Management.pdf
Rick Clymer - Incident Management.pdf
 
Robert Fornal - ChatGPT as a Testing Tool.pptx
Robert Fornal - ChatGPT as a Testing Tool.pptxRobert Fornal - ChatGPT as a Testing Tool.pptx
Robert Fornal - ChatGPT as a Testing Tool.pptx
 
Federico Toledo - Extra-functional testing.pdf
Federico Toledo - Extra-functional testing.pdfFederico Toledo - Extra-functional testing.pdf
Federico Toledo - Extra-functional testing.pdf
 
Melissa Tondi - Automation We_re Doing it Wrong.pdf
Melissa Tondi - Automation We_re Doing it Wrong.pdfMelissa Tondi - Automation We_re Doing it Wrong.pdf
Melissa Tondi - Automation We_re Doing it Wrong.pdf
 
Jeff Van Fleet and John Townsend - Transition from Testing to Leadership.pdf
Jeff Van Fleet and John Townsend - Transition from Testing to Leadership.pdfJeff Van Fleet and John Townsend - Transition from Testing to Leadership.pdf
Jeff Van Fleet and John Townsend - Transition from Testing to Leadership.pdf
 
DesiradhaRam Gadde - Testers _ Testing in ChatGPT-AI world.pptx
DesiradhaRam Gadde - Testers _ Testing in ChatGPT-AI world.pptxDesiradhaRam Gadde - Testers _ Testing in ChatGPT-AI world.pptx
DesiradhaRam Gadde - Testers _ Testing in ChatGPT-AI world.pptx
 
Damian Synadinos - Word Smatter.pdf
Damian Synadinos - Word Smatter.pdfDamian Synadinos - Word Smatter.pdf
Damian Synadinos - Word Smatter.pdf
 
Lee Barnes - What Successful Test Automation is.pdf
Lee Barnes - What Successful Test Automation is.pdfLee Barnes - What Successful Test Automation is.pdf
Lee Barnes - What Successful Test Automation is.pdf
 
Jordan Powell - API Testing with Cypress.pptx
Jordan Powell - API Testing with Cypress.pptxJordan Powell - API Testing with Cypress.pptx
Jordan Powell - API Testing with Cypress.pptx
 
Carlos Kidman - Exploring AI Applications in Testing.pptx
Carlos Kidman - Exploring AI Applications in Testing.pptxCarlos Kidman - Exploring AI Applications in Testing.pptx
Carlos Kidman - Exploring AI Applications in Testing.pptx
 
Ben Oconis - Breaking Down Silos.pdf
Ben Oconis - Breaking Down Silos.pdfBen Oconis - Breaking Down Silos.pdf
Ben Oconis - Breaking Down Silos.pdf
 

Recently uploaded

ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 

Recently uploaded (20)

ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 

Andrew Knight - Managing the Test Data Nightmare.pptx

  • 1. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Pandy Knight Automation Panda Applitools Pr Developer Advocate Test Automation University Director Managing the Test Data Nightmare
  • 2. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com suki_thefrenchie_
  • 3. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 4. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 5. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 6. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 7. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 8. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 9. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Test data can be a nightmare.
  • 10. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 11. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 12. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 13. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 14. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 15. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 16. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 17. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 18. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application
  • 19. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open
  • 20. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open And the page “https://www.myloanapp.com” is loaded
  • 21. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open And the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage”
  • 22. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open And the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% |
  • 23. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open And the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application
  • 24. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open And the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number
  • 25. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open And the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank
  • 26. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open And the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank Personal Info
  • 27. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open And the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank Loan Type
  • 28. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open And the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank Loan App Record
  • 29. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open And the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank Reference Number
  • 30. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open And the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank Website URL
  • 31. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open And the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank Browser Type
  • 32. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open And the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank
  • 33. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 34. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com test data
  • 35. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com test data
  • 36. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com test data Chrome browser https://www.myloanapp.com home mortgage | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | reference number loan application sent to the bank
  • 37. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com test data Chrome browser https://www.myloanapp.com home mortgage | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | reference number loan application sent to the bank
  • 38. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 39. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com When the user creates a new loan application for “home mortgage”
  • 40. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com When the user creates a new loan application for “home mortgage”
  • 41. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com When the user creates a new loan application for “home mortgage”
  • 42. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com How should we manage test data?
  • 43. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Form a good strategy to avoid a nightmare.
  • 44. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Product Data
  • 45. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Product Data Everything in the database:
  • 46. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Product Data Everything in the database: ● User accounts ● Administration settings ● Product customizations ● Records ● Files
  • 47. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Product Data Everything in the database: ● User accounts ● Administration settings ● Product customizations ● Records ● Files Our example loan web app: user accounts, loan products, completed applications, bank data
  • 48. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com How to set up product data?
  • 49. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep
  • 50. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep ● Created before tests run
  • 51. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep ● Created before tests run ● Good for slow or complicated data
  • 52. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep ● Created before tests run ● Good for slow or complicated data ● May make tests run faster
  • 53. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep ● Created before tests run ● Good for slow or complicated data ● May make tests run faster ● May make tests brittle as data changes
  • 54. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep ● Created before tests run ● Good for slow or complicated data ● May make tests run faster ● May make tests brittle as data changes ● May turn stale over time
  • 55. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep ● Created before tests run ● Good for slow or complicated data ● May make tests run faster ● May make tests brittle as data changes ● May turn stale over time Dynamic Data Prep
  • 56. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep ● Created before tests run ● Good for slow or complicated data ● May make tests run faster ● May make tests brittle as data changes ● May turn stale over time Dynamic Data Prep ● Created when a test runs
  • 57. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep ● Created before tests run ● Good for slow or complicated data ● May make tests run faster ● May make tests brittle as data changes ● May turn stale over time Dynamic Data Prep ● Created when a test runs ● Avoids brittle references
  • 58. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep ● Created before tests run ● Good for slow or complicated data ● May make tests run faster ● May make tests brittle as data changes ● May turn stale over time Dynamic Data Prep ● Created when a test runs ● Avoids brittle references ● Exclusive use
  • 59. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep ● Created before tests run ● Good for slow or complicated data ● May make tests run faster ● May make tests brittle as data changes ● May turn stale over time Dynamic Data Prep ● Created when a test runs ● Avoids brittle references ● Exclusive use ● Slows down individual tests
  • 60. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep ● Created before tests run ● Good for slow or complicated data ● May make tests run faster ● May make tests brittle as data changes ● May turn stale over time Dynamic Data Prep ● Created when a test runs ● Avoids brittle references ● Exclusive use ● Slows down individual tests ● Requires cleanup
  • 61. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep ● Created before tests run ● Good for slow or complicated data ● May make tests run faster ● May make tests brittle as data changes ● May turn stale over time Dynamic Data Prep ● Created when a test runs ● Avoids brittle references ● Exclusive use ● Slows down individual tests ● Requires cleanup
  • 62. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages
  • 63. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages Manual configuration
  • 64. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages Manual configuration Anyone can do it, Extra tools are not needed
  • 65. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages Manual configuration Anyone can do it, Extra tools are not needed Slow and not scalable, May fall into disrepair
  • 66. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages Manual configuration Anyone can do it, Extra tools are not needed Slow and not scalable, May fall into disrepair Automated configuration
  • 67. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages Manual configuration Anyone can do it, Extra tools are not needed Slow and not scalable, May fall into disrepair Automated configuration Create fresh data anytime, Can also scrub data
  • 68. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages Manual configuration Anyone can do it, Extra tools are not needed Slow and not scalable, May fall into disrepair Automated configuration Create fresh data anytime, Can also scrub data Must maintain tools and scripts
  • 69. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages Manual configuration Anyone can do it, Extra tools are not needed Slow and not scalable, May fall into disrepair Automated configuration Create fresh data anytime, Can also scrub data Must maintain tools and scripts Cloned databases
  • 70. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages Manual configuration Anyone can do it, Extra tools are not needed Slow and not scalable, May fall into disrepair Automated configuration Create fresh data anytime, Can also scrub data Must maintain tools and scripts Cloned databases Easy to copy all data at once
  • 71. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages Manual configuration Anyone can do it, Extra tools are not needed Slow and not scalable, May fall into disrepair Automated configuration Create fresh data anytime, Can also scrub data Must maintain tools and scripts Cloned databases Easy to copy all data at once Might be too much data, Might need extra refinement
  • 72. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages Manual configuration Anyone can do it, Extra tools are not needed Slow and not scalable, May fall into disrepair Automated configuration Create fresh data anytime, Can also scrub data Must maintain tools and scripts Cloned databases Easy to copy all data at once Might be too much data, Might need extra refinement Mocked endpoints
  • 73. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages Manual configuration Anyone can do it, Extra tools are not needed Slow and not scalable, May fall into disrepair Automated configuration Create fresh data anytime, Can also scrub data Must maintain tools and scripts Cloned databases Easy to copy all data at once Might be too much data, Might need extra refinement Mocked endpoints Avoid dependencies, Controls all data values
  • 74. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages Manual configuration Anyone can do it, Extra tools are not needed Slow and not scalable, May fall into disrepair Automated configuration Create fresh data anytime, Can also scrub data Must maintain tools and scripts Cloned databases Easy to copy all data at once Might be too much data, Might need extra refinement Mocked endpoints Avoid dependencies, Controls all data values Difficult to set up and maintain, May overlook some variations
  • 75. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages Manual configuration Anyone can do it, Extra tools are not needed Slow and not scalable, May fall into disrepair Automated configuration Create fresh data anytime, Can also scrub data Must maintain tools and scripts Cloned databases Easy to copy all data at once Might be too much data, Might need extra refinement Mocked endpoints Avoid dependencies, Controls all data values Difficult to set up and maintain, May overlook some variations
  • 76. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages Manual configuration Anyone can do it, Extra tools are not needed Slow and not scalable, May fall into disrepair Automated configuration Create fresh data anytime, Can also scrub data Must maintain tools and scripts Cloned databases Easy to copy all data at once Might be too much data, Might need extra refinement Mocked endpoints Avoid dependencies, Controls all data values Difficult to set up and maintain, May overlook some variations Production Data Synthetic Data
  • 77. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Factors for Static Data Prep
  • 78. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Factors for Static Data Prep 1. Size?
  • 79. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Factors for Static Data Prep 1. Size? 2. Freshness?
  • 80. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Factors for Static Data Prep 1. Size? 2. Freshness? 3. Update frequency?
  • 81. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Factors for Static Data Prep 1. Size? 2. Freshness? 3. Update frequency? 4. Difficulty (especially for legacy systems)?
  • 82. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Factors for Static Data Prep 1. Size? 2. Freshness? 3. Update frequency? 4. Difficulty (especially for legacy systems)? 5. Bureaucracy?
  • 83. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Factors for Static Data Prep 1. Size? 2. Freshness? 3. Update frequency? 4. Difficulty (especially for legacy systems)? 5. Bureaucracy? 6. Skill level?
  • 84. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Factors for Static Data Prep 1. Size? 2. Freshness? 3. Update frequency? 4. Difficulty (especially for legacy systems)? 5. Bureaucracy? 6. Skill level? 7. Cost?
  • 85. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com That’s product data. What about test case data?
  • 86. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 87. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open And the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank
  • 88. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open And the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank
  • 89. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open And the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank Test Control Input
  • 90. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Given the Chrome browser is open
  • 91. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Given the Chrome browser is open // inputs.json { “browser”: “Chrome” }
  • 92. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Given the Chrome browser is open // inputs.json { “browser”: “Chrome” } # bash variables $ export TEST_BROWSER=Chrome
  • 93. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank
  • 94. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank
  • 95. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the page “https://www.myloanapp.com” is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank Config Metadata
  • 96. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Given the page “https://www.myloanapp.com” is loaded
  • 97. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Given the page “https://www.myloanapp.com” is loaded // inputs.json { “browser”: “Chrome” “URL”: “https://www.myloanapp.com” }
  • 98. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Given the page “https://www.myloanapp.com” is loaded // inputs.json { “browser”: “Chrome” “URL”: “https://www.myloanapp.com” } # bash variables $ export TEST_BROWSER=Chrome $ export TEST_URL=https://www.myloanapp.com
  • 99. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Given the page “https://www.myloanapp.com” is loaded // inputs.json { “browser”: “Chrome” “config”: “Staging” } // config.json { “Staging”: { “URL”: “https://staging.myloanapp.com” }, “Dev”: { “URL”: “https://dev.myloanapp.com” } }
  • 100. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Given the page “https://www.myloanapp.com” is loaded // inputs.json { “browser”: “Chrome” “config”: “Staging” } // config.json { “Staging”: { “URL”: “https://staging.myloanapp.com” }, “Dev”: { “URL”: “https://dev.myloanapp.com” } }
  • 101. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Given the page “https://www.myloanapp.com” is loaded // inputs.json { “browser”: “Chrome” “config”: “Staging” } // /some/api/endpoint/for/test/config { “Staging”: { “URL”: “https://staging.myloanapp.com” }, “Dev”: { “URL”: “https://dev.myloanapp.com” } }
  • 102. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com // inputs.json { “browser”: “Chrome” “config”: “Staging” } // config.json { “Staging”: { “URL”: “https://staging.myloanapp.com” }, “Dev”: { “URL”: “https://dev.myloanapp.com” } } Given the page “https://www.myloanapp.com” is loaded
  • 103. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Given the MyLoanApp web page is loaded // inputs.json { “browser”: “Chrome” “config”: “Staging” } // config.json { “Staging”: { “URL”: “https://staging.myloanapp.com” }, “Dev”: { “URL”: “https://dev.myloanapp.com” } }
  • 104. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the MyLoanApp web page is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank Test Case Values
  • 105. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the MyLoanApp web page is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank Literal Values
  • 106. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the MyLoanApp web page is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank Output References
  • 107. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the MyLoanApp web page is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank Created Record
  • 108. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the MyLoanApp web page is loaded When the user creates a new loan application for “home mortgage” And the user enters the following information: | field | value | | name | Freddy Krueger | | address | 1428 Elm Street | | amount | $200,000 | | maturity | 30 years | | down payment | 20% | And the user submits the application Then the page displays a success message with a reference number And the loan application is sent to the bank Input Reference
  • 109. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com When the user creates a new loan application for a home mortgage
  • 110. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com When the user creates a new loan application for a home mortgage
  • 111. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com When the user creates a new loan application for a home mortgage // Automation pseudocode request = MakeRestRequestForAvailableLoanTypes(); response = restClient.Get(request); foreach loan in response.Data: if loan.Type is home mortgage return loan.SpecificName
  • 112. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Test Case Data
  • 113. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Test Case Data Type Description Test Control Inputs Direct how tests will be run, not what behavior is covered. Should be supplied via flat files or env vars.
  • 114. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Test Case Data Type Description Test Control Inputs Direct how tests will be run, not what behavior is covered. Should be supplied via flat files or env vars. Configuration Metadata Describe product configuration for the target environment. Should be supplied via config files or service API calls.
  • 115. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Test Case Data Type Description Test Control Inputs Direct how tests will be run, not what behavior is covered. Should be supplied via flat files or env vars. Configuration Metadata Describe product configuration for the target environment. Should be supplied via config files or service API calls. Test Case Values Direct the behavior covered by the test. May be literals, output references, or input references. Input references may be hard-coded or discovered.
  • 116. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com
  • 117. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com The nightmare isn’t over.
  • 118. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com The nightmare isn’t over. Collisions can happen!
  • 119. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Avoiding Collisions
  • 120. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Avoiding Collisions 1. Isolate the test environment(s) a. Restrict access while testing? b. Deploy new containers? c. Make database clones?
  • 121. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Avoiding Collisions 1. Isolate the test environment(s) a. Restrict access while testing? b. Deploy new containers? c. Make database clones? 2. Treat any shared data as immutable a. Parallel tests should not alter shared data b. If any tests must temporarily alter shared data, run them serially separately
  • 122. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Avoiding Collisions 1. Isolate the test environment(s) a. Restrict access while testing? b. Deploy new containers? c. Make database clones? 2. Treat any shared data as immutable a. Parallel tests should not alter shared data b. If any tests must temporarily alter shared data, run them serially separately 3. Use dynamic data prep as much as possible a. Tests cannot collide on data they don’t share
  • 123. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Major Takeaways
  • 124. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Major Takeaways 1. 2 types of test data: product data and test case data
  • 125. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Major Takeaways 1. 2 types of test data: product data and test case data 2. Product data can be prepared statically or dynamically
  • 126. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Major Takeaways 1. 2 types of test data: product data and test case data 2. Product data can be prepared statically or dynamically 3. Test case data either control how tests run or reflect product data
  • 127. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Major Takeaways 1. 2 types of test data: product data and test case data 2. Product data can be prepared statically or dynamically 3. Test case data either control how tests run or reflect product data 4. Handle references and shared data carefully
  • 128. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Choose the best strategies to defeat your nightmare!
  • 129. Managing the Test Data Nightmare | Pandy Knight | @AutomationPanda | AutomationPanda.com Thanks! Pandy Knight Automation Panda Applitools Developer Advocate Test Automation University Director