IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tests et Performance Java Discussion :

[Stratégie] Test unitaire avec insertion dans une BDD


Sujet :

Tests et Performance Java

  1. #1
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut [Stratégie] Test unitaire avec insertion dans une BDD
    Hello,

    Je souhaite mettre en place sur une application des tests unitaires. Chaque développeur devra écrire ses tests unitaires après chaque développement.
    Cela me permettra de contrôler avant chaque mise en prod qu'il n'y a pas eu de régression introduite à la suite des nouveaux développement.

    Mon problème est pour tester la couche de persistance (maj, insertion, etc..).

    Lorsque le développeur va écrite son test, il va utiliser des valeurs choisies en fonction de l'état de la base à ce moment là.

    Lorsque je jouerai les tests avant la mise en prod, les valeurs inscrites dans le test unitaire seront peut être obsolete ou alors existante en base ce qui fait que lorsque je vais rejouer le test plusieurs fois de suite cela généra des erreurs du à la duplication des données.
    Pour rendre les tests valides à nouveaux il faudra retoucher aux classes de test pour modifier les valeurs. Ce qui n'est pas très intéressant finalement.

    Ce que je souhaiterai c'est que le test unitaire soit écrit une fois pour toute et que celui ci puisse être rejoué un nombre de fois indéfini. Donc ma question, comment positionner un environnement au niveau des données utilisées dans les tests unitaires pour arrivé à faire ce que je souhaite.

    En espérant avoir été clair dans mes explications..

    Merci d'avance pour votre aide!

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 298
    Par défaut
    dbunit fait ça très bien.

  3. #3
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Hello,

    Merci pour cette info. Je mettais déjà penché sur ce framework sans réellement appronfondir.

    Est ce que tu as une expérience d'utilisation de DBUnit? Est ce que ce framework est efficace sur une base de données assez importante?

    Merci d'avance pour ton aide.

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 298
    Par défaut
    Je me sert de dbunit pour mes tests d'intégration de DB sans problème particulier.

    1. Pendant la phase de développement : test unitaire en utilisant hsqldb.
    2. Ensuite les tests unitaires sont joués sur une base d'intégration cible, correspondant à la base de production.

    Les données de tests sont chargées par DBUnit en utilisant des fichiers XML qui correspondent au contenu des tables.
    Pour chacun de ces tests je ne charge que les données qui sont nécessaires pour le bon fonctionnement du test.
    Pour l'instant dbunit correspond parfaitement à mes besoins de test unitaires.

    Je cherche d'autres framework pour les tests de montée en charge.

    Remarque : pb sur le type booléen avec hsqldb, il faut faire une DataFactory spécifique. C'est expliqué sur le site, je te retrouverai la référence si tu en as besoin.

  5. #5
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Hello,

    Merci pour ta réponse.

    Effectivement, ça à l'air de correspondre à mes besoins.
    Je vais appronfondir la doc. Une ou deux petites questions complementaires plus liées à ton expérience sur le framework.

    Est ce que l'utilisation de 2 types bases différentes cela ne pose pas de problème par rapport au sqll produit?
    Est ce que la base est laissée dans son état initial après exécution des tests?
    Est ce que l'on peut lancer des tests unitaires en parallèle? Sans que dbuni s'emmêle les crayons?

    Merci d'avance pour ton aide!

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 298
    Par défaut
    Citation Envoyé par fabszn Voir le message
    Hello,


    Est ce que l'utilisation de 2 types bases différentes cela ne pose pas de problème par rapport au sqll produit?
    J'utilise JPA/Hibernate donc dans mons cas ça ne me pose aucun pb.
    Hsqldb me permet d'avoir un environnement light pendant la phase de dev.
    J'ai déjà eu des mauvaises surprises avec hsqldb en test et oracle en intégration/production.

    Tu peux tout à fait utiliser la même base cible pour la phase de dev, la phase d'intégration et la mise en production.

    Citation Envoyé par fabszn Voir le message
    Hello,
    Est ce que la base est laissée dans son état initial après exécution des tests?
    Avant et après chaque tests tu peux effectuer des org.dbunit.operation.DatabaseOperation
    qui te permettent de contrôler l'état de ta base avant et après les tests.

    En ce qui me concernent j'ai deux List<DatabaseOperation> ( before et after tests ), et chaque test peut personaliser cette liste en fonction de ces besoins


    Citation Envoyé par fabszn Voir le message
    Hello,
    Est ce que l'on peut lancer des tests unitaires en parallèle? Sans que dbuni s'emmêle les crayons?
    En théorie oui, en pratique je n'ai jamais testé.

  7. #7
    Membre Expert
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Par défaut
    Hello,

    Merci pour ces infos! Je vais me pencher sur la doc pour approfondir.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Insertion dans une BDD avec code Ajax/PHP
    Par cobra85 dans le forum jQuery
    Réponses: 5
    Dernier message: 17/10/2013, 20h35
  2. Problème : insertion dans une BDD ACCESS avec VB
    Par Dorni dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 19/05/2009, 14h35
  3. [VB6/mysql]:Problème d'insertion dans une bdd
    Par gaetan.tranvouez dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 14/06/2006, 10h15
  4. [Conception] Pb d insertion dans une BDD des données d un formulaire
    Par xtiand4 dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 02/06/2006, 18h18
  5. [debutant]insertion dans une BDD
    Par EssaiEncore dans le forum ASP
    Réponses: 7
    Dernier message: 10/02/2005, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo