49 votes

Comment testez-vous votre T-SQL?

Comment testez-vous votre T-SQL? Quelles bibliothèques / outils utilisez-vous?

Quel pourcentage de votre code est couvert par les tests unitaires et comment le mesurez-vous? Comment décidez-vous des modules à tester en premier?

Pensez-vous que le temps et les efforts que vous avez investis dans votre harnais de tests unitaires ont porté fruit ou non?

Si vous n'utilisez pas de tests unitaires, pouvez-vous expliquer pourquoi?

23voto

Bob Points 9217

Comment pensez-vous de l'unité de tester votre T-SQL? Qui bibliothèques/outils utilisez-vous?

Jetez un oeil à cette TSQLUnit et ce tSQLt.

J'ai expérimenté avec l'aide de quelques-uns des différents cadres dans de nombreuses langues à test de T-SQL, tel un junit ou nunit. La raison pour laquelle je suis allé cette voie était de prendre le parti de la richesse des environnements de tests dans ces autres langues. Si par exemple vous utilisez nunit il a une belle ligne de commande et l'interface graphique spectateur à regarder l'état de vos tests et parce que votre aide .net pour écrire vos tests, il se raccorde dans sql server très facilement. JUnit a quelques belles intégration avec beaucoup de commerciaux et open source IDE environnements tels que NetBeans et l'IDÉE de faire des T-SQL test plus comme le code Java de test, qui est très riche. Le point négatif est que vous ne sont pas seulement écrire des T-SQL, vous êtes également à l'écriture de java ou .net pour tester votre T-SQL.

J'ai également utilisé Ruby avec le Râteau(c'est comme faire ou ant) et le système des appels à sqlcmd pour exécuter des scripts sql qui à tourné le contenu des tests. Les scripts valeurs de retour et les chaînes de caractères de retour à ruby pour la réussite ou l'échec d'un essai. J'ai aimé cette approche le mieux qu'il était très maigre et facile pour les autres de ramasser sur. Les autres itinéraires mentionnés ci-dessus nécessaires aux développeurs de l'utiliser .net ou java qui, si vous avez tous les DBA types peuvent être difficiles à surmonter où le rubis avec des scripts sql approche est plus facile à vendre à partir de mon expérience. DBA types ont tendance à être ouvert et capable de ramasser comme les langages de script facile et Ruby a une faible courbe d'apprentissage et les scripts sont faciles à exécuter par rapport à un .net ou java de la classe.

Quel est le pourcentage de votre code est couvert par les tests unitaires et comment le mesurer?

Probablement que 20% seulement parce que la plupart des bases de données systèmes ont toujours pas eu de tests créés pour eux, puisqu'ils ont été créés, de sorte que je suis dans le processus de rétro activement ajoutant les tests et l'ajout de tests de nouveaux défauts et les améliorations à venir.

Pensez-vous que le temps et les efforts que vous avez investi dans votre unité d'exploitation du test a payé ou pas?

La base de données est le pain et le beurre de la plupart des entreprises. Il est toujours profitable à mon avis. Si votre entreprise tolère l'ordure et le taux d'échec élevé pour le client, aucun test n'est probablement pas la peine car elle n'est pas libre de le faire.

Si vous n'utilisez pas l'unité de test, pouvez-vous expliquer pourquoi?

J'aimerai voir si quelqu'un arrive avec une réponse pour ce qui n'est pas absurde. Un peu comme pourquoi ne pas vous mettre votre enfant dans un siège de voiture lors de la conduite sur la route..."Ils coûtent trop cher"..."Prend trop de temps pour mettre l'enfant en elle".."Il est en sécurité sans lui".."Ce qui pourrait aller mal à le justifier".."Il n'y a tout simplement pas assez de temps" Tous ces éléments sont des bs.

Oui, je sais, un peu extrême peut-être, mais vraiment si vous avez un système et il apporte de la valeur de l'entreprise, il devrait être unis testés pour aider à attraper quelques problèmes avant qu'ils ne deviennent des problèmes de production. Les tests unitaires n'est pas une panacée, mais c'est un outil que nous avons à faire le mieux que nous pouvons.

Je dirais globalement en quelque sorte, la plupart des gens donnent la base de données d'un laissez-passer gratuit quand il s'agit de test structuré. Je n'ai aucune idée pourquoi, mais je l'ai vu à la société après société. J'aimerais voir le changement.

6voto

Ed Harper Points 13289

Pour un outil de test unitaire, j'ai eu plus de succès avec DBFit .

Je n'ai jamais trouvé d'outil pour mesurer la couverture de test TSQL.

Après avoir admis que la configuration des tests était très pénible, j'ai constaté que je pouvais améliorer la qualité de mon code en testant à l'unité, lorsqu'un projet atteint un niveau de complexité plus que trivial.

2voto

Cade Roux Points 53870

Comme un code, quelque chose en T-SQL doivent être analysés différemment des autres. Si vous code-générer beaucoup de statique des choses (comme des déclencheurs ou des points de vue), généralement les tests de charge est plus légère.

Notre système est presque entièrement codé en T-SQL.

Comment pensez-vous de l'unité de tester votre T-SQL? Qui bibliothèques/outils utilisez-vous?

Nous avons connu de bons résultats que nous comparer. Sur notre analyse mensuelle pistes de nous comparons mois, du mois et de l'exécuter sur run pour comprendre l'impact de code et les modifications de données. Notre outil principal est une procédure stockée qui va comparer les deux tables/vues/sous-ensembles et d'identifier les différences (avec seuil d'options).

Quel est le pourcentage de votre code est couvert par les tests unitaires et comment le mesurer?

Nous validons les données produites dans la plupart des processus contre l'ancien comportement. Lors de la prise de changements de code, en raison des exigences de l'entreprise, une analyse d'impact est effectuée en comparant les résultats de deux pistes. En outre, nous comptons fortement sur les rapports d'exception pour déterminer à l'avance lorsque les données ne sont pas conformes aux attentes de configuration/(contraintes dans le schéma si possible).

Pensez-vous que le temps et les efforts que vous avez investi dans votre unité d'exploitation du test a payé ou pas?

Oui

Si vous n'utilisez pas l'unité de test, pouvez-vous expliquer pourquoi?

Notre unité de test est à chacun de nos "process" les niveaux. Chaque processus correspond généralement à une seule procédure stockée - de sorte que l'unité que nous avons test. En comparant les résultats finaux correspondrait à l'essai du système.

1voto

Suirtimed Points 625

Nous avons récemment changé de T-SQL Unité de Visual Studio 2010 framework de test Unitaire. Le plus grand problème est que nous avons besoin pour gérer notre propre étendue de la transaction dans les tests afin de laisser la base de données "propre" pour la prochaine épreuve(s). C'est quelque chose qui T-SQL unité fournit dès le début.

Notre objectif est d'avoir 100% de couverture pour notre procédures stockées. Il nous permet de changer la table sous-jacente de la structure et des relations en tant que de besoin, sans avoir à être absolument de pair avec le développement (nous avons indépendante des données et des équipes de développement). Nous n'avons pas commencé à mesurer la couverture de test encore. Nous sommes dans le processus de développement de notre premier déploiement en production avec cette technologie de la pile. Pour nous, l'interface entre les applications et les données sont stockées procédures. Nous avons d'abord construire les procédures stockées suffisant pour répondre aux besoins de la demande de l'équipe, puis une fois que la signature est devenu assez stable pour se rendre à l'intégration continue, puis nous allons construire nos tests unitaires. Nous voulions faire TDD, mais nous avons un délai qui est tout simplement pas une option pratique.

Nous n'avons pas mesuré le ROI sur le test du harnais, mais l'expérience nous a montré que les modifications apportées à la base de données de production ont été très coûteuses.

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