Bonjour,
Dans le cadre de déroulement de tests unitaires et d'intégration d'une application java, chaque test détruit et recrée l'ensemble des objets base de données nécessaires à son fonctionnement (environ 300 objets) afin d'avoir un environnement reproductible et que le déroulement des tests ne soit pas pollué par des résidus. L'opération de destruction/recréation prend entre 3 et 4 secondes sous Oracle (contre environ 2s sur SQL Server et postgreSQL et moins de 100ms sous H2 in memory). Le nombre de tests commençant à être élevé (plus de 12000), le temps de mise en place du contexte de test devient problématique (presque une journée complète pour faire tourner tous les tests sur oracle)!
Je suis donc à la recherche d'idées pour optimiser ce processus de réinitialisation d'un ensemble d'objets (niveau schema ou tablespace, ça me va aussi). Compte tenu du contexte de test, la sureté des données de la base ne m'importe guère (les fichiers de la bases sont déjà sur un ramdisk, niveau unrecoverable, il n'y a pas pire). Les solutions ne doivent cependant pas influer sur la représentativité des tests.
Ce que j'ai déjà essayé :
* Flashback de la base
* restauration du tablespace contenant les tables
Ces solutions apportent un gain peu significatif (quand il existe seulement, tout dépend de ce que font les tests). Elles présentent en plus l’inconvénient d'introduire du code spécifique à Oracle pour la mise en place du contexte de test (alors que les drop et create ont l'avantage d'être générés dynamiquement de manière générique par l'application pour tous les SGBD cibles)
Merci pour votre attention et vos suggestion
Partager