Question

J'ai récemment entendu parler de tests fonctionnels sur les tests unitaires.

Je comprends que les tests des tests unitaires chacune des possibilités d'un morceau de code donné de sa forme la plus atomique. Mais qu'en est-tests fonctionnels?

Ce me semble tester que si le code fonctionne, mais est-il aussi fiable que l'unité de test?

On m'a dit qu'il y avait deux écoles de pensées pour la question. Préférerait test CERTAINS Unité, d'autres tests fonctionnels.

Y at-il de bonnes ressources, des liens, des livres, de références ou de vous tous ceux qui peuvent expliquer et elighten mon chemin sur le sujet?

Merci!

Était-ce utile?

La solution

La réponse de Jason est correcte. Différents types de tests ont des objectifs différents, et peuvent être en couches pour obtenir les meilleurs résultats (bonne conception, les spécifications de réunion, des défauts réduits).

  • tests unitaires = conception disques (avec développement piloté par les tests ou TDD)
  • L'intégration des tests = faire toutes les pièces travaillent ensemble
  • les tests d'acceptation du client = répond-il aux exigences du client
  • test manuel = couvre souvent l'interface utilisateur; testeurs dédiés peuvent trouver ce manque d'automatisation
  • test de charge = comment bien le système effectue avec des quantités réalistes de données

Il y a un certain chevauchement entre ces catégories; tests unitaires peuvent spécifier le comportement, par exemple.

Et il y a d'autres; pour plus de la plupart des gens se soucient de savoir, consultez Software Testing .

Un peuple Maladroit est que les tests unitaires teste des morceaux de code isolément . De bons tests unitaires ne frappent pas la base de données, par exemple. Cela présente deux avantages:. Il fait l'exécution des tests rapides afin que vous puissiez les exécuter plus souvent, et il vous oblige à écrire des classes couplées de façon lâche (meilleure conception)

Vous avez demandé des ressources; Je recommande le livre de Roy Osherove L'art de tests unitaires avec les exemples .NET. Bien qu'aucun livre est parfait, celui-ci donne d'excellents pointeurs sur l'écriture de bons tests.

EDIT: Et pour les tests d'écriture contre les logiciels existants, rien ne vaut le livre de Michael Feathers Travailler efficacement avec Legacy code .

Autres conseils

Les tests unitaires par rapport à des tests fonctionnels ne sont pas un xor, mais plutôt un and. Les tests unitaires sont sur les unités test dans l'isolement lors des tests fonctionnels teste sur l'ensemble de l'intégration (faire toutes les unités fonctionne bien ensemble?).

sont deux éléments nécessaires de bonnes pratiques de génie logiciel.

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

Tests Tests fonctionnels conception de votre système pour vous assurer que les pièces interagissent correctement. Si vous écrivez une commande qui prend et int et renvoie une chaîne et tester complètement, vous pouvez être sûr qu'il fonctionne. Mais si vous ne disposez pas de tests de système, vous ne pouvez jamais remarquer que le reste du code pense qu'il peut accepter une valeur nulle, mais il ne peut pas.

Les deux types de tests sont importants.

modifier: Pour ajouter une vue légèrement différente de ce que gbjbaanb dit:

  • Test unitaire = mon code fonctionne
  • Test de fonctionnement = ma conception fonctionne
  • Test d'intégration = mon code utilise votre substance 3ème partie correctement (bases de données, etc.)
  • Factory Acceptance Test = mon système fonctionne
  • Site Acceptance Test = votre code est nul, ce tout n'est pas ce que je demandais!
  • Test unitaire = le plus bas, niveau granulaire.
  • Test de fonctionnement = moyenne, niveau modulaire.
  • Test d'intégration = niveau d'application supérieur.
  • Acceptation Test Factory = voir fonctionner le tout
  • Site Acceptance Test = voir tout échec:)

Tout ce qui précède sont utiles, mais ils ne sont pas mutuellement exclusifs. 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 obtenez d'eux, voilà tout. Si votre code est trop modulaire pour être facilement testé unitairement, puis passer vos efforts sur les tests fonctionnels. Si vous écrivez une bibliothèque de petits composants, passez votre temps sur l'unité de les tester, et si vous écrivez des systèmes de contrôle pour les missiles militaires, vous devriez certainement être l'acceptation du site les tests (comme des explosions, même quand il n'est amusant :))

Les tests fonctionnels, aussi appelé href="http://en.wikipedia.org/wiki/Functional_testing" test du système , vise à tester le système complet, et la vérification les exigences fonctionnelles sont satisfaites.

tests unitaires vise à tester les « unités », à savoir les fonctions ou les méthodes du système est construit à partir de isolément . Il est parfois appelé test des développeurs. Les tests unitaires peut être difficile après le fait, c'est pourquoi TDD écrit le test avant le code .

Ce sont les unités peuvent travailler de façon autonome et non complémentaire lorsqu'ils sont intégrés tous ensemble, ou ils peuvent passer les tests unitaires, et non répondre à toutes les exigences du produit.

Tests unitaires et tests fonctionnels ont deux résultats différents.

Tests unitaires vérifie qu'un petit morceau de code fonctionne comme prévu. Il est généralement fait par le développeur pour faire en sorte que le code fonctionne correctement. Ils sont généralement automatisés par un test-cadre ainsi.

Test fonctionnel vérifie qu'une fonctionnalité fonctionne comme prévu en passant par un certain chemin à travers le programme. Ils sont généralement exécutés par une personne sur le logiciel assurant que le programme fonctionnera comme il leur est censé pour l'utilisateur. Il, en tant que tel, est plus haut niveau, et ainsi tester plusieurs unités à la fois.

Je pense que les deux sont importants. Si vous avez des ressources limitées, cependant, doivent choisir / choisir des techniques, et je pense que cela dépend des produits que vous créez, mais pour ce que je fais (produits de contrôle automobile utilisés par l'homme par certains boutons) tests fonctionnels sont les plus importants. Il vérifie et assure, que lorsque l'utilisateur obtient le produit, il fait ce qu'il est censé faire. Cela ne signifie pas que nous devrions retirer des tests unitaires, mais si push-vient à shove, fonctionnelle est le plus important pour assurer une grande expérience utilisateur et d'obtenir le produit à la porte.

Si vous produisez, par exemple, un moteur de base de données (ou d'un autre produit qui est pas nécessairement orientée utilisateur), tests unitaires peuvent être ce que vous devriez vraiment faire.

fait ce qu'il est censé un des tests d'essai Unité un morceau de code et confirme pour un programmeur qu'un autre morceau de code. Dans Test Driven Development, le test unitaire est écrit d'abord et observé à l'échec, avant que le code est écrit faisant passer le test. Les programmeurs sont intéressés par des tests unitaires. Unité de test sont rapides à exécuter.

Test Tests de fonction de votre exigence de boîte noire et démontre qu'un morceau de fonctionnalité utilisateur est en place. Par exemple, si j'appuie sur le gros bouton rouge, la cloche se met à sonner. Le test fonctionnel peut-être pas même le code de test. Peut-être est un processus mécanique qui provoque la cloche sonne ayant appuyé sur le bouton. Les clients sont intéressés par des tests fonctionnels car ils confirment qu'un processus de haut niveau si l'on travaille de manière à ce qu'ils comprennent. Ils sont souvent lents à exécuter.

Il y a une place pour les deux dans la plupart des travaux de développement.

Les tests unitaires sont là pour tester de petites unités de code, pour voir qu'ils fonctionnent comme prévu.

Le test fonctionnel est là pour vérifier que la fonctionnalité globale du système est comme prévu.

Ils sont à différents niveaux et les deux doivent être utilisés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top