27 votes

Test unitaire ou test fonctionnel?

J'ai récemment entendu parler de Tests Fonctionnels sur les Tests Unitaires.

Je comprends que les Tests Unitaires les tests de chacune des possibilités d'un morceau de code à partir de ses plus atomique forme. Mais ce que sur les Tests Fonctionnels?

Cela me semble être seulement de tester si le code fonctionne, mais est-il aussi fiable que le Test Unitaire?

J'ai dit il y a deux école de pensée en la matière. Certains préfèrent les Tests Unitaires, d'autres Tests Fonctionnels.

Est-il bon de ressources, des liens, des livres, des références ou une de vous qui peut les expliquer et elighten mon chemin sur le sujet?

Merci!

26voto

Jason Points 125291

Les tests unitaires par rapport aux tests fonctionnels ne sont pas un xor , mais plutôt un and . Le test unitaire consiste à tester les unités isolément tandis que le test fonctionnel consiste à tester le tout en intégration (toutes les unités fonctionnent-elles correctement ensemble?).

Les deux sont des éléments nécessaires de bonnes pratiques d'ingénierie logicielle.

25voto

TrueWill Points 14855

Jason réponse est bonne. Différents types de tests ont des objectifs différents, et peuvent être superposées pour obtenir de meilleurs résultats (une bonne conception, la conformité aux spécifications, réduit les défauts).

  • Les tests unitaires = les lecteurs de la conception (avec Test-Driven Development, ou TDD)
  • Les tests d'intégration = faire toutes les pièces de travailler ensemble
  • L'acceptation par le client de test = répond-il aux exigences du client
  • Test manuel = recouvre souvent l'INTERFACE utilisateur; dédié testeurs peuvent trouver ce manque d'automatisation
  • Le test de charge = comment le système réalistes, avec des quantités de données

Il ya un certain chevauchement entre ces catégories, les tests unitaires pouvez spécifier le comportement, par exemple.

Et il en existe d'autres; pour plus que la plupart des gens de soins de savoir, de voir de Test de Logiciels.

Un point les gens manqué, c'est que le test unitaire est de tester des morceaux de code dans l'isolement. Bon les tests unitaires n'ont pas accès à la base de données, par exemple. Cela a deux avantages: il permet l'exécution des tests rapides de sorte que vous allez exécuter le plus souvent, et il vous oblige à écrire faiblement couplé classes (meilleure conception).

Vous avez demandé ressources; je recommande Roy Osherove du livre L'Art de Tests Unitaires avec Exemples .NET. Alors qu'aucun livre n'est parfait, cela donne beaucoup d'excellents conseils sur la rédaction d'un bon de tests.

EDIT: Et pour l'écriture des tests sur un logiciel existant, rien ne vaut Michael Plumes " livre de Travailler de façon Efficace avec le Code existant.

11voto

RHSeeger Points 9217

Les tests unitaires les tests de vos unités de code (méthodes, etc) pour s'assurer qu'ils font ce que vous attendez d'eux.

Des tests fonctionnels, les tests de la conception de votre système pour vous assurer que les morceaux d'interagir correctement. Si vous écrivez une commande qui prend et int et retourne une chaîne de caractères et de le tester pleinement, vous pouvez être sûr qu'il fonctionne. Mais si vous n'avez pas de système de tests, vous ne remarquerez que le reste du code pense qu'il peut accepter un nul mais il ne peut pas.

Les deux types de tests sont importants.

edit: Pour ajouter un point de vue légèrement différent de ce que gbjbaanb dit:

  • Unité de test = mon code fonctionne
  • Test fonctionnel = mes travaux de conception
  • Test d'intégration = mon code est à l'aide de votre 3ème partie stuff correctement (bases de données, etc)
  • Test de réception usine = mon système fonctionne
  • Site de Test d'Acceptation = votre code suce, ce n'est pas totalement ce que j'ai demandé!?!

6voto

gbjbaanb Points 31045
  • Test de l'unité = le plus bas, le niveau de granularité.
  • Test fonctionnel = médiocre, modulaire niveau.
  • Test d'intégration = plus haut niveau de l'application.
  • Test de réception usine = voir tous les travaux
  • Site de Test d'Acceptation = voir tous fail :)

Tous les ci-dessus sont utiles, mais ils ne sont pas mutuellement exclusives. Vous devriez faire la plupart d'entre eux, mais la quantité de temps que vous passez sur chaque partie dépend des résultats que vous obtiendrez d'eux, c'est tout. Si votre code est trop modulaire pour être facilement unité testée, puis passer vos efforts sur les tests fonctionnels. Si vous êtes à la rédaction d'une bibliothèque de composants de petit, de passer du temps sur les tests unitaires, et si vous écrivez des systèmes de contrôle pour les missiles, vous devez certainement être site de tests d'acceptation (comme les explosions, même quand il échoue, c'est amusant :) )

4voto

philant Points 17345

Les tests fonctionnels, également appelé Système de testvise à vérifier l'ensemble du système, et de vérifier les conditions de fonctionnement sont satisfaites.

Unité de test vise à tester les "parts", c'est à dire des fonctions ou des méthodes le système est construit à partir de l'isolement. Il est parfois appelé le test du Développeur. Les tests unitaires peuvent être difficile, après le fait, c'est pourquoi TDD écrit les tests avant le code.

Ceux-ci sont complémentaires comme les unités peuvent fonctionner de façon indépendante et non lorsqu'il est intégré tous ensemble, ou ils peuvent passer les tests unitaires, et de ne pas remplir toutes les exigences du produit.

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