Suppose we have large, complex system with large amount of data and complicated business logic.
How to manage test data (Oracle DB) to have fast, reliable acceptance (Selenium etc.) tests starting from known state?
Because of scale and complexity, tests should:
INSERTS
to database - risky duplication of business logic)The customer specifies scenarios to test when a user story has been correctly implemented. A story can have one or many acceptance tests, whatever it takes to ensure the functionality works. Acceptance tests are black-box system tests. Each acceptance test represents some expected result from the system.
Acceptance Testing is the last phase of software testing performed after System Testing and before making the system available for actual use. Types of Acceptance Testing: User Acceptance Testing (UAT): User acceptance testing is used to determine whether the product is working for the user correctly.
What you're describing is called a Sandbox DB. For every new deploy you'll have to provide/populate this DB with the data you need and after tests are done, to drop it.
have several versions/snapshots of DB state
This is what a Fresh Fixture pattern and Prebuilt Fixture pattern will help you with. Also you could look at the Fixture Teardown patterns.
Here you can find some considerations when dealing with such big-data-sandbox-strategies. Like scheduling, master data repository and monitoring.
To successfully manage all that - a CI server have to be put to work. Since you've tagged JAVA, a good options are:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With