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

Langage SQL Discussion :

Tests Fonctionnels sur requête SQL


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 19
    Par défaut Tests Fonctionnels sur requête SQL
    Bonjour,

    J'aimerai savoir quel outil et quel techniques vous utilisez pour tester vos requêtes SQL?

    Je n'ai jamais fait de test fonctionnel sur des requêtes SQL mais j'aimerai en mettre en place pour m'assuré du resultat et surtout pour la maintenabilité.

    J'avais pensé utiliser une base de données vide et sur mon setup de test créer les tables nécessaire ainsi que les données représentant tous les cas possible et ainsi pouvoir prévoir le résultat.

    Est-ce une bonne techniique? En existe-t-il des meilleurs? Lequelle utilisé vous et pourquoi?

    Merci
    Phil

  2. #2
    Expert confirmé
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Par défaut
    J'avais pensé utiliser une base de données vide et sur mon setup de test créer les tables nécessaire ainsi que les données représentant tous les cas possible et ainsi pouvoir prévoir le résultat.
    excellent.

    Mais on n'a souvent malheureusement pas le temps et on ne dispose pas de toutes les bases qu'on voudrait. Mais c'est la bonne méthode.

  3. #3
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 19
    Par défaut
    J'ai commencer a faire mes tests et pour les tables, j'ai laissé tombé toutes les clée primaire et foreign key (pour facilité l'entré de donnée lors du setup du test) et je rempli seulement les champs utiles pour mes tests.

    D'apres moi les tests restent valide, mais est ce vraiment le cas?

    Est ce que cela est une bonne manière de faire?

    Merci

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    ...j'ai laissé tombé toutes les clée primaire et foreign key...
    c'est exactement ce qu'il ne faut pas faire !
    Il faut que votre modèle de données soit EXACTEMENT celui de la production et avec le même volume de données.
    En effet le moteur SQL utilise les statistiques des index qu'il dispose pour trouver la bonne manière de traiter votre requête. Si vous ne mettez pas les clef les index sous jacents ne seront pas créés et les plan de requêtes seront à chier...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 19
    Par défaut
    Ce que je veux tester c le resultat de mes requetes. Je ne veux pas avoir le meme volume de donnée que le modele déployer sinon c impossible de prévoir le resultat de ma requete.

    La technique que j ai utilisé c'est d'ajouter des lignes dans mes tables pour correspondre a tous les cas possible. Ainsi je peux verifier a l'aide de mes tests que ma requete s'execute correctement. Aussi, si jamais quelqu'un modifie une sous-requete, le test s'assure que ma requette donne le même resultat.

    Donc pour ce genre de test je crois que je ne doit pas me soucier des statistique et du temps d execution.

    Peut-etre devrais je me faire des test pour cela... mais je ne vois pas vraiment l'utilité de tester avec le meme volume de donnée avec les index et statistiques

    Merci

  6. #6
    Expert confirmé
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Par défaut
    Citation Envoyé par SQLpro
    c'est exactement ce qu'il ne faut pas faire !
    Il faut que votre modèle de données soit EXACTEMENT celui de la production et avec le même volume de données.
    En effet le moteur SQL utilise les statistiques des index qu'il dispose pour trouver la bonne manière de traiter votre requête. Si vous ne mettez pas les clef les index sous jacents ne seront pas créés et les plan de requêtes seront à chier...
    Il ne faut certes pas virer les contraintes ni les index, car ça fausserait tout, mais sa question portait sur les tests fonctionnels. Dans ce cas ce n'est ni la performance ni la volumétrie qui l'intéresses mais simplement avoir des cas de test fonctionnels typiques. C'est certes légèrement hors sujet du SQL pur du forum "Langage SQL", mais je pense que la question est intéressante et une réponse non technique peut l'être aussi

    Donc ou bien on fait une base quasi vide (mais de structure identiques index, foreign key) avec les cas typiques, pour ne pas perdre son temps à chercher ses cas, ou bien on prends une base à volumétrie réelle mais il faut avoir pris un temps certains pour identifier tout les cas typiques.

    Malheureusement je n'ai eu souvent le temps que de faire la 2é méthodes avec toujours un risque de ne pas faire tout les tests fonctionnels voulus car pas suffisamment de temps pour identifier dans un volume énorme tout mes cas typiques. Je ne suis pas un expert en plan de test, il faudrait que quelqu'un connaissant bien le principe des plans de tests intervienne.

    edit: le plus souvent par manque de temps, on rajoute à la main des cas typiques à une copie de prod que l'on a en environnement de développement.

  7. #7
    Membre averti
    Inscrit en
    Mai 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 19
    Par défaut
    La technique que j'utilise est la suivante:
    J'ai une base de données completement vide (sans vues, tables ou SP).
    Je me suis créer des classe contenant la definition de mes tables et de mes vues ainsi que le script sql permettant de les recréer. J'ai appeler ces classes CatalogueVues et CatalogueTables.

    Sur le setup de mon test, j'execute une requête qui m'assure que la base de données est completement vide. Ensuite je récupere la vue que je veux tester de mon CatalogueVues. Je met en place l'environement nécessaire pour créer cette vue (tables et sous vue nécessaire) et ensuite je crée la vue.

    Sur chacun des tests j'insert les lignes nécessaire pour tester le cas spécifique que mon test vise. L'insertion est faite par un helper qui me permet de recréer certain éléments avec des condition particuliere dans ma bd. Ce helper a aussi des test unitaire et fonctionnel ce qui me permet d'assurer que les données se retrouve bel et bien dans mes tables et que ces données sont conformes.

    Pour l'instant j'ai enlever toutes les clées primaire et étrangere de la définition de mes tables (pour des question de manque de temps), mais je me suis appercu que cette pratique oblige le programmeur à avoir une bonne connaissance des liens entre chacuns des objet et que certains tests peuvent etre incorrect s'il y a eu une mauvaise injection des données ce qui fait que les tests ne sont pas à 100% fiables (mais sont tout de meme tres pratiques). Pour ceux qui se trouve dans la meme situation que moi(pressé par le temps), je crois que le mieux est de commencer avec des tables sans les clées et que toutes les insertion soit faite a partir d'une classe externe au tests (helper). Cela permet par la suite de développer un nouveau helper qui tient compte des clées primaire et des clées étrangere sans avoir a modifier les tests déjà en place.


    PS: je ne suis pas un pro des test fonctionnel sur les requettes SQL, j'en suis seulement a mes débuts. Je crois que cette technique est bonne (en fait c ce que j'ai trouver de mieux) mais j'aimerais bien avoir vos commentaire sur cette technique (ou si vous avez une meuilleur technique)

    Merci
    Phil

  8. #8
    Inactif
    Inscrit en
    Juin 2008
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 304
    Par défaut
    Bonjour,

    Citation Envoyé par The Vandals Voir le message
    j'aimerai en mettre en place pour m'assuré du resultat et surtout pour la maintenabilité.
    Je voudrai moi aussi faire des tests sur une BD et Je n'ai jamais fait de test fonctionnel sur des requêtes SQL

    J'aimerai savoir quel outil et quelles techniques vous utilisez pour tester vos requêtes SQL ?

    Pour la 7em réponse (Je n’est pas bien comprit si quelle qu’un peut m’expliquer)

    Merci d’avance.

Discussions similaires

  1. [SQL] Problème syntaxique sur requête SQL
    Par Velkan.nexus dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 15/10/2007, 07h11
  2. [SQL] Question sur requête SQL
    Par Cheeper dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/06/2007, 17h56
  3. [SQL-Server] Problème d'accents sur requête SQL, de php à SQLServer
    Par pontos dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/04/2007, 14h58
  4. aide sur requête sql
    Par Vodkha dans le forum Langage SQL
    Réponses: 9
    Dernier message: 30/08/2005, 17h53
  5. Aide sur Requête SQL
    Par devdev dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/05/2005, 12h33

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