web-dev-qa-db-fra.com

Test de l'unité? Test d'intégration? Test de régression? Test d'admission?

Y a-t-il quelqu'un qui peut définir clairement ces niveaux de test, car j'ai du mal à faire la différence lors des tests TDD ou unitaires. S'il vous plaît, si quelqu'un peut expliquer comment, quand les mettre en œuvre?

75
Donny

Brièvement:

Test unitaire - Vous testez unitaire chaque morceau de code individuel. Pensez à chaque fichier ou classe.

Test d'intégration - Lorsque vous assemblez plusieurs unités qui interagissent, vous devez effectuer des tests d'intégration pour vous assurer que l'intégration de ces unités ensemble n'a pas introduit d'erreurs.

Test de régression - après l'intégration (et peut-être la correction), vous devriez réexécuter vos tests unitaires. Il s'agit de tests de régression pour s'assurer que de nouveaux changements n'ont pas cassé les unités déjà testées. Les tests unitaires que vous avez déjà effectués ont produit les tests unitaires qui peuvent être exécutés encore et encore pour les tests de régression.

tests d'acceptation - lorsqu'un utilisateur/client/entreprise reçoit la fonctionnalité, il (ou votre service de test) effectuera des tests d'acceptation pour s'assurer que la fonctionnalité répond à ses exigences.

Vous voudrez peut-être également enquêter sur les tests de boîte blanche et de boîte noire. Il y a également des tests de performances et de charge, ainsi que des tests sur les "éléments" à prendre en compte.

99
mikey

Test unitaire: lorsqu'il échoue, il vous indique quelle partie de votre code doit être corrigée.

Test d'intégration: en cas d'échec, il vous indique que les éléments de votre application ne fonctionnent pas ensemble comme prévu.

Test d'acceptation: lorsqu'il échoue, il vous indique que l'application ne fait pas ce que le client attend d'elle.

Test de régression: en cas d'échec, il vous indique que l'application ne se comporte plus comme avant.

93
Mathias

J'essaierai:

  1. Test unitaire: un développeur en rédigerait un pour tester un composant individuel ou une classe.
  2. Test d'intégration: un test plus approfondi qui impliquerait plusieurs composants ou packages qui doivent collaborer
  3. Test de régression: apporter une seule modification à une application vous oblige à réexécuter TOUS les tests et à vérifier TOUTES les fonctionnalités.
  4. Test d'acceptation: les utilisateurs finaux ou le contrôle qualité le font avant de se déconnecter pour accepter la livraison d'une application. Il dit "L'application a répondu à mes exigences."
11
duffymo

Voici une explication simple pour chacun des tests mentionnés et quand ils sont applicables:

Test unitaire Un test unitaire est effectué sur une unité autonome (généralement une classe ou une méthode) et doit être effectué chaque fois qu'une unité a été implémentée ou que la mise à jour d'une unité est terminée.

Cela signifie qu'il est exécuté chaque fois que vous avez écrit une classe/méthode, corrigé un bogue, changé de fonctionnalité ...

Test d'intégration Le test d'intégration vise à tester dans quelle mesure plusieurs unités interagissent entre elles. Ce type de test doit être effectué chaque fois qu'une nouvelle forme de communication a été établie entre les unités ou que la nature de leur interaction a changé.

Cela signifie qu'il est exécuté chaque fois qu'une unité récemment écrite est intégrée dans le reste du système ou chaque fois qu'une unité qui interagit avec d'autres systèmes a été mise à jour (et a terminé avec succès ses tests unitaires).

Test de régression Des tests de régression sont effectués chaque fois que quelque chose a été changé dans le système, afin de vérifier qu'aucun nouveau bogue n'a été introduit.

Cela signifie qu'il est exécuté après tous les correctifs, mises à niveau et corrections de bogues. Les tests de régression peuvent être considérés comme un cas particulier de test unitaire combiné et de test d'intégration.

Test d'acceptation Des tests d'acceptation sont effectués chaque fois qu'il est pertinent de vérifier qu'un sous-système (éventuellement l'ensemble du système) remplit toutes ses spécifications.

Cela signifie qu'il est principalement exécuté avant de terminer un nouveau livrable ou d'annoncer l'achèvement d'une tâche plus importante. Considérez cela comme votre dernière vérification pour voir que vous avez vraiment atteint vos objectifs avant de courir vers le client/patron et d'annoncer la victoire.

C'est du moins la façon dont j'ai appris, même si je suis sûr qu'il existe d'autres points de vue opposés. Quoi qu'il en soit, j'espère que cela vous aidera.

11
Agentlien

Test unitaire: ma méthode unique fonctionne-t-elle correctement? (PAS de dépendances ou de dépendances moquées)

Test d'intégration: mes deux modules développés séparément fonctionnent-ils correctement quand assemblés?

Test de régression: Ai-je cassé quelque chose en changeant/écrivant un nouveau code? (l'exécution de tests unitaires/d'intégration avec chaque validation est un test de régression techniquement (automatisé)). Plus souvent utilisé dans le contexte de l'AQ - manuel ou automatisé.

Test d'acceptation: test effectué par le client, qu'il "accepte" le SW livré

9
Andrejs