I delivered this talk at the QA Summit by Xpanxion in Salt Lake City, Utah in late July 2021. In my talk, I outline strategies for handling different types of test data.
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!