3 votes

Comment puis-je tester en unité le contenu de ma base de données ?

Nous avons un cas où nous testons une application swing. Nous avons un responsable de l'assurance qualité qui, jusqu'à présent, effectuait des tests manuels de l'application. Nous avons réalisé que les tests manuels prennent beaucoup de temps à répéter et nous avons donc investi du temps dans les tests automatisés de notre interface utilisateur en utilisant Fest.

L'autre côté de la médaille est de tester les données de la base de données. Cela signifie qu'après avoir effectué certaines étapes dans l'interface graphique, nous devons vérifier dans la base de données si les données que nous attendons y sont présentes ou non.

Comme c'est un responsable de l'assurance qualité qui écrit ces tests unitaires pour nous, nous aimerions lui faciliter la tâche autant que possible en lui fournissant une sorte de cadre pour le faire.

Existe-t-il une sorte de cadre permettant de tester la base de données par rapport aux données dont nous disposons ? Quelque chose comme un attendu et un réel comme avec assert de JUnit.

En gros, nous recherchons un cadre qui possède ces caractéristiques :

  1. Les données "attendues" doivent être faciles à fournir, par exemple sous la forme d'un fichier YAML, JSON, Excel ou CSV. Le XML et l'écriture de code pour créer des beans en Java prennent beaucoup de temps.
  2. Nous aimerions créer les données attendues de telle sorte que seules les colonnes présentes dans les données attendues soient vérifiées dans la base de données.
  3. Cela ne nous dérange pas d'étendre le cadre de travail pour qu'une personne qui ne connaît pas beaucoup Java puisse travailler facilement avec.....

3voto

ManojGumber Points 1615

Dbunit semble être une solution pour vous.

DbUnit peut également vous aider à vérifier que les données de votre base de données correspondent à un ensemble de valeurs attendues.

2voto

Sean Patrick Floyd Points 109428

Cela semble être un cas d'utilisation pour DBUnit

1voto

mikey Points 439

Vous pouvez également considérer FitNesse comme un outil facile à utiliser. Bien que vous deviez investir plus de temps dans les coulisses pour créer les tests, ce sera un outil facile à utiliser pour le testeur. Voir http://fitnesse.org/

0voto

Frank Points 6174

Nous avons récemment été confrontés à une situation similaire et avons finalement opté pour notre propre cadre. Nous nous basons sur l'excellent bibliothèque scala specs (qui peut également fonctionner avec le runner de JUnit). La principale différence par rapport à votre cas sera probablement que notre responsable de l'assurance qualité a un peu de connaissances en programmation et que nous écrivons des scénarios de test supplémentaires plus complexes dans le même cadre.

Cependant, pour couvrir les principales fonctionnalités, l'idée centrale est de définir un langage spécifique au domaine pour tester vos données. Cela le rend très facile à utiliser pour un AQ (après les frais initiaux pour apprendre à utiliser le langage, ce qui est disponible pour lui, etc.)

Pour répondre plus concrètement à vos points de vue sur les caractéristiques :

  1. Scala fonctionne extrêmement bien avec le XML. Aucun code d'analyseur n'est requis, le code passe-partout est réduit au minimum. Écrivez vous-même le comparateur de base de données XML et donnez-lui accès via le DSL, puis l'AQ peut simplement écrire un fragment XML à vérifier dans la base de données.

  2. Idem que ci-dessus. Vous fournissez vous-même le comparateur, il est donc simple de s'en assurer.

  3. Scala fonctionne très bien avec Java, car il se compile en bytecode Java. Vous pouvez réutiliser tout votre code Java existant pour créer le DSL, ou même laisser votre code de test y accéder.

Les principaux avantages pour nous étaient que nous pouvions réutiliser le modèle de données Hibernate pour effectuer des tests plus complexes sur le modèle de données, nous pouvions toujours accéder à tout notre code Java comme d'habitude, et le DSL est très facile à lire, même pour les non-programmeurs. (Ce dernier point est très pratique lorsque vous essayez d'expliquer à un type de manager ce que fait réellement ce truc).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X