JeuWeb - Crée ton jeu par navigateur
Tester les fichiers SQL - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Tester les fichiers SQL (/showthread.php?tid=7455)



Tester les fichiers SQL - Xenos - 04-09-2015

Salut à tous,

Je cherche un "système" (logiciel, plugin, code, peu importe) qui permettrait de tester des fichiers SQL. J'ai, dans mon projet, une floppée de fichiers SQL et j'aimerai savoir si vous connaissez un équivalent de "JUnit/PHPUnit" version SQL.

J'aimerai pouvoir faire les actions suivantes:
• Définir sur quelle base exécuter les tests (té, je veux pas bousiller ma base locale à chaque fois ! Smile )
• Exécuter un fichier SQL pour savoir s'il est exécutable
• Faire des traitements SQL avant de tester un fichier SQL (pour insérer des données par exemple)
• Tester ce que ce SQL me retourne (pour voir s'il me retourne des trucs cohérents)

En connaissez-vous, si possible des gratuits? A défaut, je me ferai des tests PHP qui testeront ces SQL plutôt que des classes PHP.


Ce n'est pas une ressource que je présente, mais une demande de ressources (qui aura donc sa place ici une fois qu'elle aura eu une réponse satisfaisante).


RE: Tester les fichiers SQL - Max72 - 04-09-2015

J'ignore si tout ça sera possible, mais pour tout ce qui touche à mes BDD, j'utilise MySQL Workbench.
Je pense qu'en cherchant un peu il fera le minimum comme tester tes fichiers SQL, sur telle base.


RE: Tester les fichiers SQL - Xenos - 04-09-2015

MySQL Workbench est ce qu'on m'a proposé au taff comme "IDE" SQL... Je l'ai vite dégagé au profit de HeidiSql, que je trouve bien plus stable (sauf si on restart le serveur SQL plusieurs fois, HeidiSQL devient parfois instable) et fiable.

Mais je n'ai pas trouvé de structure de test unitaire dédiée dans ces deux softs (je ne veux pas devoir ouvrir le soft, ouvrir le fichier, lancer l'exec, lire les résultats à l'écran, en déduire si le test a marché, etc).

(je sens que, quand viendra le temps de véritablement mettre ces tests en place, ça va finir en test PHPUnit, qui appelleront les fichiers SQL ^^ )


RE: Tester les fichiers SQL - atra27 - 04-09-2015

Je pense pas que ça existe dans l'état.

Pour simplifier, on voit souvent des tests qui portent non pas seulement le SQL mais sur toute la couche modele (SQL+traitement des résultats).
C'est moins unitaire vu que tu testes 2 choses mais j'ai jamais entendu parler de tests sur les fichiers SQL bruts.

A y réfléchir, je pense pas que ça soit possible. Si on teste du SQL bête et méchant, comment on règle les paramètres d'entrée pour tes requêtes? et comment on teste le retour si toute la couche de post traitement est absente?
Au final si on rajoute ces deux choses, on va se retrouver avec un subset de ce qu'offre déjà un phpunit/junit en standard.

Sinon, un runner phpunit/junit serait surement envisageable pour implémenter ça simplement.

My 2 cents.


RE: Tester les fichiers SQL - Xenos - 05-09-2015

On peut tester les procédures SQL, qui ont des paramètres d'entrée Smile Après, j'ai aussi des SQL qui sont des requètes "à préparer", là effectivement leur test ne pourrait se faire que couplé à un driver client, mais je peux les transformer en procédures aussi.

Je ne comprends pas la question sur le retour: le SQL peut te retourner des résultats, donc tu les vérifies directement au lieu de les traiter pour ensuite en vérifier le traitement. En SQL pur, cela pourrait ressembler à CREATE TEMPORARY TABLE `mes_resultats`(...) puis INSERT INTO `mes_resultats` VALUES (.../*ce que j'attends comme sortie*/...); et enfin SELECT * FROM (.../*Ma requête à tester*/...) AS t OUTER JOIN `mes_resultats` AS mr ON mr.*=t.* /*pseudo-syntax*/ (y'a surement d'autres techniques pour propres pour checker qu'un jeu de résultats est strictement égal à un autre).

A mon avis, je vais effectivement finir sur un PHPUnit classique. Je pourrai même envisager de benchmarker différentes queries pour vérifier leur efficacité.