2009-02-18 10 views
2

J'ai un cadre de test automatisé pour tester les widgets matériels. Actuellement, seuls les résultats de réussite/échec des cas de test sont stockés dans une base de données relationnelle utilisant Hibernate. Je voudrais changer cela afin que diverses caractéristiques du test sont stockées dans la base de données. (par exemple, combien de gerbilles s'exécutent à l'intérieur du widget, les entrées de différentes assertions dans les tests, etc.).Enregistrement des données de test dans Hibernate

Chaque cas de test est représenté comme une classe Java, donc la première chose à laquelle j'ai pensé était d'utiliser hibernate pour créer une table pour chaque cas de test. Cependant, nous avons beaucoup, beaucoup de cas de test donc je ne pense pas qu'avoir une table pour chaque cas de test est nécessairement la meilleure idée.

La quantité et le type de données pour des cas de test spécifiques ne changeront pas pour différentes exécutions du scénario de test, mais les données nécessaires pour chaque scénario de test seront radicalement différentes. Pour utiliser un exemple stupide: pour le test gerbille-rongeant, nous voulons toujours enregistrer l'âge et la couleur des gerbilles rongeant les fils, mais pour le test de smash nous avons seulement besoin d'enregistrer combien de pierres ont été jetées sur le widget.

Idéalement, nous serions en mesure d'interroger cette information à partir de la base de données en utilisant SQL afin que les données ne peuvent pas être stockées sous forme de blobs binaires ou d'autres entités non-interrogeables.

Des idées sur la façon de structurer la base de données pour répondre à ces exigences? Suis-je totalement hors-base de ne pas vouloir un grand nombre de tables?

Répondre

2

Je dirais que vous avez deux options principales:

Faites vos classes TestCase supclasses d'une superclasse commune puis utilisez l'une des stratégies de cartographie de l'héritage (http://hibernate.org/hib_docs/reference/en/html/inheritance.html) ne vous inquiétez pas beaucoup sur le nombre de tables/colonnes, mais vous devez vous assurer que vous n'atteignez pas une limite de votre moteur de base de données.

Ou vous faites un modèle EAV (http://en.wikipedia.org/wiki/Entity-Attribute-Value_model) Il est extrêmement flexible, mais sachez qu'il provoque des requêtes extrêmement complexes pour des questions simples.

Assurez-vous d'exécuter des tests avec des volumes réalistes avant de valider l'un ou l'autre.

0

Je ne m'inquiéterais pas de beaucoup de tables. Si c'est le bon schéma, alors c'est ce que c'est. Les DB sont conçus pour le gérer.

Questions connexes