SlideShare a Scribd company logo
1 of 120
Download to read offline
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Managing the
Test Data Nightmare
Andrew Knight
Lead Software Engineer in Test
PrecisionLender, a Q2 Company
AutomationPanda.com
@AutomationPanda
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Scenario: Create a new loan application
Given the Chrome browser is open
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
test data
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
test data
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
When the user creates a new loan application for “home mortgage”
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
When the user creates a new loan application for “home mortgage”
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
When the user creates a new loan application for “home mortgage”
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
How should we manage
test data?
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Form a good strategy
to avoid a nightmare.
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Product Data
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Product Data
Everything in the database:
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Product Data
Everything in the database:
● User accounts
● Administration settings
● Product customizations
● Records
● Files
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
How to set up product data?
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep
● Created before tests run
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep
● Created before tests run
● Good for slow or complicated data
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Static Data Prep Strategy Advantages Disadvantages
Manual configuration
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Factors for Static Data Prep
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Factors for Static Data Prep
1. Size?
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Factors for Static Data Prep
1. Size?
2. Freshness?
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Factors for Static Data Prep
1. Size?
2. Freshness?
3. Update frequency?
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
That’s product data.
What about test case data?
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Given the Chrome browser is open
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Given the Chrome browser is open
// inputs.json
{
“browser”: “Chrome”
}
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Given the page “https://www.myloanapp.com” is loaded
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
When the user creates a new loan application for a home mortgage
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
When the user creates a new loan application for a home mortgage
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Test Case Data
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
The nightmare isn’t over.
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
The nightmare isn’t over.
Collisions can happen!
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Avoiding Collisions
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Major Takeaways
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Major Takeaways
1. 2 types of test data: product data and test case data
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew 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 | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Choose the best strategies
to defeat your nightmare!
Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
Andrew “Pandy” Knight
Lead Software Engineer in Test
PrecisionLender, a Q2 Company
AutomationPanda.com
@AutomationPanda
Thanks!

More Related Content

Recently uploaded

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 

Recently uploaded (20)

%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 

Featured

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Managing the Test Data Nightmare

  • 1. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Managing the Test Data Nightmare Andrew Knight Lead Software Engineer in Test PrecisionLender, a Q2 Company AutomationPanda.com @AutomationPanda
  • 2. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
  • 3. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
  • 4. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
  • 5. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
  • 6. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
  • 7. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
  • 8. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
  • 9. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
  • 10. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application
  • 11. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Scenario: Create a new loan application Given the Chrome browser is open
  • 12. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 13. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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”
  • 14. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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% |
  • 15. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 16. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 17. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 18. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 19. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 20. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 21. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 22. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 23. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 24. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 25. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
  • 26. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com test data
  • 27. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com test data
  • 28. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 29. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 30. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
  • 31. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com When the user creates a new loan application for “home mortgage”
  • 32. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com When the user creates a new loan application for “home mortgage”
  • 33. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com When the user creates a new loan application for “home mortgage”
  • 34. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com How should we manage test data?
  • 35. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Form a good strategy to avoid a nightmare.
  • 36. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Product Data
  • 37. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Product Data Everything in the database:
  • 38. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Product Data Everything in the database: ● User accounts ● Administration settings ● Product customizations ● Records ● Files
  • 39. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 40. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com How to set up product data?
  • 41. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Static Data Prep
  • 42. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Static Data Prep ● Created before tests run
  • 43. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Static Data Prep ● Created before tests run ● Good for slow or complicated data
  • 44. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Static Data Prep ● Created before tests run ● Good for slow or complicated data ● May make tests run faster
  • 45. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 46. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 47. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 48. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 49. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 50. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 51. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 52. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 53. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 54. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages
  • 55. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages Manual configuration
  • 56. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Static Data Prep Strategy Advantages Disadvantages Manual configuration Anyone can do it, Extra tools are not needed
  • 57. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 58. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 59. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 60. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 61. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 62. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 63. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 64. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 65. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 66. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 67. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 68. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Factors for Static Data Prep
  • 69. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Factors for Static Data Prep 1. Size?
  • 70. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Factors for Static Data Prep 1. Size? 2. Freshness?
  • 71. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Factors for Static Data Prep 1. Size? 2. Freshness? 3. Update frequency?
  • 72. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Factors for Static Data Prep 1. Size? 2. Freshness? 3. Update frequency? 4. Difficulty (especially for legacy systems)?
  • 73. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Factors for Static Data Prep 1. Size? 2. Freshness? 3. Update frequency? 4. Difficulty (especially for legacy systems)? 5. Bureaucracy?
  • 74. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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?
  • 75. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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?
  • 76. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com That’s product data. What about test case data?
  • 77. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
  • 78. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 79. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 80. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 81. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Given the Chrome browser is open
  • 82. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Given the Chrome browser is open // inputs.json { “browser”: “Chrome” }
  • 83. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Given the Chrome browser is open // inputs.json { “browser”: “Chrome” } # bash variables $ export TEST_BROWSER=Chrome
  • 84. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 85. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 86. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 87. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Given the page “https://www.myloanapp.com” is loaded
  • 88. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Given the page “https://www.myloanapp.com” is loaded // inputs.json { “browser”: “Chrome” “URL”: “https://www.myloanapp.com” }
  • 89. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 90. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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” } }
  • 91. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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” } }
  • 92. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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” } }
  • 93. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 94. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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” } }
  • 95. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 96. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 97. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 98. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 99. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 100. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com When the user creates a new loan application for a home mortgage
  • 101. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com When the user creates a new loan application for a home mortgage
  • 102. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 103. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Test Case Data
  • 104. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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.
  • 105. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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.
  • 106. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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.
  • 107. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com
  • 108. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com The nightmare isn’t over.
  • 109. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com The nightmare isn’t over. Collisions can happen!
  • 110. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Avoiding Collisions
  • 111. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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?
  • 112. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 113. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 114. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Major Takeaways
  • 115. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Major Takeaways 1. 2 types of test data: product data and test case data
  • 116. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 117. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 118. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew 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
  • 119. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Choose the best strategies to defeat your nightmare!
  • 120. Managing the Test Data Nightmare | QA Summit by Xpanxion | Andrew Knight | @AutomationPanda | AutomationPanda.com Andrew “Pandy” Knight Lead Software Engineer in Test PrecisionLender, a Q2 Company AutomationPanda.com @AutomationPanda Thanks!