Vue d'ensemble du test unitaire de base de données
Mise à jour : novembre 2007
Vous pouvez utiliser les tests unitaires de base de données pour établir un état de base pour votre base de données, puis vérifier toutes les modifications ultérieures apportées aux objets de base de données. La première étape consiste à écrire des jeux de tests T-SQL qui s'appliquent à un certain objet de base de données et à vérifier que l'objet de base de données fonctionne correctement. Par la suite, comme vous modifiez le schéma sous-jacent, vous utilisez ces tests pour vérifier que les modifications n'ont pas interrompu les fonctionnalités existantes. En écrivant des tests unitaires qui évaluent la réussite ou l'échec des modifications de conception de base de données, vous pouvez garantir que ces modifications sont appliquées comme prévu et sans introduire d'erreurs. Les tests unitaires de base de données sont complémentaires aux tests unitaires de logiciel créés par vos développeurs de logiciels. Les deux jeux de tests unitaires sont requis pour gérer les modifications apportées à la globalité de l'application.
Pour écrire des tests unitaires, vous devez d'abord créer un environnement de développement de base de données isolé distinct de votre base de données de production. À l'aide de Visual Studio Team System Database Edition, vous exécutez les étapes de base suivantes :
Créer un projet de base de données
Importer le schéma de votre base de données de production vers ce projet
Déployer le projet de base de données pour créer une base de données qui utilise le même schéma que la base de données de production
Remplir cette base de données avec des données de test
Une fois que l'environnement de développement de base de données isolé a été établi et rempli par des données, vous pouvez commencer à écrire des tests unitaires pour évaluer les objets de base de données dans cet environnement. Lorsque les objets de base de données ont été testés, ces tests unitaires peuvent être utilisés pour détecter des régressions dans les fonctionnalités en raison de modifications dans la base de données. En testant ces modifications dans un environnement de développement isolé, vous garantissez que votre base de données de production n'est pas compromise. Après avoir entièrement testé vos modifications, vous pouvez redéployer les tests unitaires dans un environnement de test plus important qui contient les modifications d'un autre membre de l'équipe, où ils vous permettront d'identifier et de corriger rapidement les régressions causées par d'autres modifications de base de données.
Vous pouvez également exécuter les tests unitaires dans le cadre du processus de déploiement manuel. Dans ce cas, vous générez un script de compilation à partir d'un jeu étiqueté de sources et modifiez ce script si nécessaire. Déployez la base de données sur un serveur intermédiaire, puis exécutez les tests unitaires de base de données et de logiciel pour vérifier l'état de la base de données et de l'application globale. Une fois tous les tests exécutés, vous pouvez redéployer la base de données dans l'environnement de production. Pour plus d'informations, consultez Gestion des modifications de la base de données.
Création de tests unitaires de base de données
Vous pouvez créer des tests unitaires de base de données qui évaluent les modifications apportées à tout objet de base de données. Toutefois Database Edition inclut une prise en charge supplémentaire pour les fonctions de base de données, les déclencheurs et les procédures stockées. Lorsque vous créez un test pour ces objets, les stubs de code T-SQL pour tester l'objet de base de données sont automatiquement générés et vous pouvez les personnaliser. Pour plus d'informations, consultez Comment : créer des tests unitaires de base de données pour des fonctions, des déclencheurs et des procédures stockées et Comment : créer un test unitaire de base de données vide.
Remarque : |
---|
Vous pouvez créer et exécuter des tests unitaires de base de données sans avoir de projet de base de données ouvert. Toutefois, le projet de base de données qui contient les objets à tester doit être ouvert pour générer des scripts T-SQL à partir de ces objets. |
Conception de tests unitaires
Comme d'autres types de tests intégrés à Visual Studio Team System Test Edition, les tests unitaires de base de données sont intégrés à Visual Studio. À l'aide du Concepteur de test unitaire de base de données, vous pouvez définir des scripts de test Transact-SQL (T-SQL) qui exécutent des scripts de base de données, puis évaluent les résultats de ces scripts par rapport aux conditions de test qui indiquent si l'action de script a réussi ou a échoué.
Le Concepteur de test unitaire de base de données contient les fonctionnalités suivantes :
Fonctionnalité |
Objet |
Barre de navigation : zone de liste Nom du test |
Sélectionnez des tests unitaires individuels dans le projet de test ou sélectionnez Scripts courants pour développer des scripts qui s'exécutent avant ou après chaque test unitaire dans la même classe de test. |
Barre de navigation : zone de liste Test |
Sélectionnez les options Avant le test, Test ou Après le test pour écrire des scripts T-SQL et des conditions de test qui sont évalués à différents moments pendant le test unitaire. Vous pouvez utiliser le script de prétest pour établir un certain état dans la base de données de développement. Vous pouvez utiliser le script de post-test pour rétablir l'état initial de la base de données après l'exécution du test ou, selon les autorisations qui sont requises, pour évaluer la réussite du test. |
Éditeur T-SQL |
Utilisez cet éditeur pour écrire les scripts T-SQL de prétest, de test et de post-test qui sont utilisés dans votre test unitaire. À l'aide de la commande T-SQL RAISERROR, vous pouvez également écrire des instructions assert T-SQL dans votre script de test au lieu d'utiliser des conditions de test. Comme les conditions de test, cette commande peut également être utilisée pour indiquer si le test a réussi ou échoué en fonction de la valeur de gravité. Pour plus d'informations, consultez Utilisation d'assertions T-SQL dans les tests unitaires de base de données. |
Volet Conditions de test |
Utilisez les conditions de test dans cette fenêtre pour évaluer les résultats de l'exécution du script T-SQL. |
Utilisation des conditions de test
Le volet Conditions de test fournit un jeu de conditions de test prédéfinies pour tester des éléments, tels que le nombre de lignes retournées dans un jeu de résultats, le temps nécessaire à l'exécution du script T-SQL, et si un jeu de résultats est vide. Chaque condition de test prédéfinie a une méthode Assert (définie sur la classe TestCondition de base) qui est appelée lors de l'évaluation d'une condition de test. Si une condition de test échoue lors de l'évaluation des résultats de l'exécution par rapport aux résultats souhaités, la condition lève une exception et un résultat d'échec est retourné dans la fenêtre Résultats des tests. Les conditions de test indiquent que le test a réussi en ne levant pas d'exception.
Lorsque vous effectuez le test, le script T-SQL est exécuté en premier et retourne un résultat. En général, il s'agit d'un jeu de résultats. L'implémentation de la condition de test détermine la partie des informations retournées dont la réussite est évaluée. Par exemple, la condition de test Durée d'exécution évalue le temps nécessaire à l'exécution du script T-SQL et la condition de test Valeur scalaire estime une valeur sur une ligne particulière. Un indicateur de réussite ou d'échec s'affiche dans la fenêtre Résultats des tests selon le résultat de cette évaluation. L'indicateur de réussite/d'échec dépend de l'évaluation réussie de toutes les conditions de test pour le script de test. Si une condition lève une exception, le test dans son intégralité échoue.
Il existe six conditions de test prédéfinies, mais dans la mesure où elles sont extensibles, vous pouvez en ajouter d'autres à la liste, si nécessaire. Vous pouvez également utiliser la fonction T-SQL RAISERROR dans le script T-SQL pour produire un résultat de réussite ou d'échec, et le faire apparaître dans la fenêtre Résultats des tests. Pour plus d'informations, consultez Utilisation d'assertions T-SQL dans les tests unitaires de base de données.
Remarque : |
---|
Une condition de test non concluant est ajoutée automatiquement aux tests unitaires que vous générez dans Visual Studio Test Edition et aux tests unitaires de base de données que vous générez dans Database Edition. Les tests sont marqués comme « non concluants » si cette condition de test est évaluée. La condition de test non concluant lève une exception InconclusiveException. Par défaut, cette condition de test est incluse dans tous les tests pour que vous pensiez à ajouter d'autres assertions ou conditions de test. Vous pouvez supprimer facilement cette condition de test en la sélectionnant dans la fenêtre Conditions de test et en cliquant sur l'icône Supprimer la condition de test. |
Pour obtenir une liste complète des conditions de test prédéfinies, consultez Utilisation de conditions de test dans des tests unitaires de base de données.
Les tests peuvent également échouer s'ils dépassent le délai ou s'ils sont interrompus. Pour plus d'informations sur les résultats qui peuvent s'afficher dans la fenêtre Résultats des tests, consultez Résultats de tests de base.
Test unitaire et données de test
Vous pouvez utiliser la fonctionnalité de génération de données de Team Edition for Database Professionals pour ajouter des données de test à votre environnement de base de données. Cette fonctionnalité inclut un groupe de générateurs de données qui produiront les mêmes données en fonction d'une valeur de départ particulière. Cela vous permet de générer les données, d'inspecter la base de données générée pour déterminer les résultats que différents tests doivent produire, puis de rédiger vos tests en conséquence. Pour plus d'informations sur l'utilisation de la génération de données avec le test unitaire, consultez Procédure pas à pas : création et exécution d'un test unitaire de base de données. Pour plus d'informations sur les différents générateurs de données, consultez Vue d'ensemble de la génération de données.
Test au niveau de la ligne de commande
Vous pouvez exécuter des tests unitaires de base de données dans l'IDE ou à partir d'une invite de commandes si vous souhaitez automatiser les séries de tests. Pour plus d'informations, consultez Exécution des tests de la ligne de commande.
Voir aussi
Tâches
Comment : ajouter des conditions de test aux tests unitaires de base de données