2010-07-10 3 views
1

Après avoir écrit une requête complexe ou une procédure stockée, comment vérifiez-vous que les résultats sont précis à 100% et assurez-vous que ce sera le cas pour tous les paramètres d'entrée? Mon approche personnelle consiste à tester, tester et tester tout au long du développement, en vérifiant que les valeurs NULL n'apparaissent pas là où je ne m'y attendais pas, que les lignes ne sont pas supprimées ou doublées, puis J'ai rempli la requête que j'effectuerais 'une quantité' de tests en prenant des enregistrements aléatoires du jeu de résultats et ensuite vérifier que ceux-ci sont comme prévu.Vérification des résultats de la requête

+1

Besoin de plus de détails. C'est une question TRES vaste et elle peut avoir des réponses évidentes et pas si évidentes. Vous devez avoir confiance en votre programmation, alors que vous devriez programmer aussi bien que possible, en essayant de prévenir tous les cas possibles futurs qui peuvent vous ralentir plus que cela ne le fera dans le futur. –

+0

Merci Kerry - tu as raison - je devrais avoir confiance en ma programmation (juste tant qu'il n'est pas 17h20 un vendredi!). –

Répondre

0

Lors de l'écriture de requêtes complexes, j'écris d'abord toujours mes résultats attendus pour chaque ensemble d'entrées souhaitées. Dessinez votre ensemble de données et compilez une matrice de résultats en fonction de vos entrées. Au fur et à mesure que vous commencez à générer la requête complexe, vous pouvez vous assurer que chaque partie produit les résultats corrects en fonction de votre matrice de test initiale.

J'ai tendance à garder mon ensemble de données très «simple» et minimal pour m'assurer que chaque cas spécifique de filtrage/conditions de résultat est satisfait. Même si le SQL lui-même est incroyablement complexe, la quantification de vos résultats pour validation lors de la conception et de l'implémentation est déroutante et compliquée et peut conduire à des résultats incorrects sans en être conscient. Une fois que je serai à 100% confiant sur mes données d'échantillon, je revérifierais mes résultats en testant un scénario de mise en scène de données de production (ou un ensemble de données plus important).

+0

Je suppose que toutes les questions relatives à la création ou l'acquisition de données d'exemple devraient être pour un autre fil. :) Je vais essayer cette approche dès que j'en aurai l'occasion et voir comment ça se passe pour moi - merci Rick. –

2

Les requêtes complexes (= difficiles à lire) peuvent souvent être écrites comme une séquence de requêtes simples (= faciles à lire) exécutées sur une table #temp. Au cours du développement, je commence par mettre la série d'étapes simples dans un proc stocké, puis je compare les résultats à la requête finale.

+2

Restez simple - la devise des développeurs sains! Cela ressemble beaucoup à l'approche que je prendrais - parfois au prix d'un peu d'E/S ou de CPU, d'esprit. Écrivez du code performant maintenant, optimisez plus tard si nécessaire. –

0

Essayez d'abord toutes les sous-requêtes séparément. Rejoignez vos tables une à la fois. Vérifiez les contraintes dans la base de données pour éviter de passer beaucoup de temps sur des situations qui ne peuvent pas se produire (les contraintes sont vos amis). Si la requête devient très difficile, éliminez les parties qui peuvent être créées en tant que vues.

Pensez.

Très sous-estimé, la pensée est. (C'est probablement parce que pour un gestionnaire un programmeur assis là pensant ressemble à un programmeur assis là à ne rien faire.)

Questions connexes