vendredi 23 août 2019

Clean up test fixtures

I have a CloudFormation stack that defines a GraphQL API powered by DynamoDB. I would like to run a test script that:

  • Creates a standard set of fixtures.
  • Runs various tests, including creating, modifying, and deleting data.
  • Deletes all of the fixtures and any other objects created during the test.

The “clean way” to do this would be to create a new stage for the tests, but this is extremely time-consuming (in terms of wall-clock time spent waiting for the result).

The “hard way” would be to keep precise track of every DynamoDB record created during the testing process and then delete them afterward one by one (and/or using many batch updates). This would be a huge pain to code, and the likelihood of error is very high.

An intermediate approach would be to use a dedicated pre-existing stage for integration tests, wipe it clean at the end of the tests, and make sure that only one set of tests is running at a time. This would require writing a script to manually clear out the tables, which sounds moderately less tedious and error-prone than the “hard way”.

Is there an established best practice for this? Are there other approaches I haven't considered?

Aucun commentaire:

Enregistrer un commentaire