Question Qu'est-ce qu'un test unitaire, un test d'intégration, un test de fumée, un test de régression?


Qu'est-ce qu'un test unitaire, un test d'intégration, un test de fumée, un test de régression et quelles sont les différences entre eux? Et quels outils puis-je utiliser pour chacun d'entre eux?

Par exemple, j'utilise JUnit et NUnit pour les tests unitaires et les tests d'intégration. Existe-t-il des outils de test de fumée ou de test de régression?


572
2018-02-06 12:08


origine


Réponses:


  • Test de l'unité: Spécifiez et testez un point du contrat de méthode unique d'une classe. Cela devrait avoir une portée très étroite et bien définie. Les dépendances complexes et les interactions avec le monde extérieur sont écrasé ou moqué.

  • Test d'intégration: Testez l'interopérabilité correcte de plusieurs sous-systèmes. Il y a tout un spectre, allant de l'intégration des tests entre deux classes, à l'intégration des tests dans l'environnement de production.

  • Test de fumée (aka contrôle de Sanity): Un test d'intégration simple où nous vérifions juste que lorsque le système sous test est invoqué, il revient normalement et ne fait pas exploser.

    • Le test de fumée est à la fois une analogie avec l'électronique, où le premier test se produit lors de la mise sous tension d'un circuit (s'il fume, c'est mauvais!) ...
    • ... et, Apparemment, avec plomberie, où un système de tuyaux est littéralement rempli de fumée et ensuite vérifié visuellement. Si quelque chose fume, le système fuit.
  • Test de régression: Un test qui a été écrit quand un bug a été corrigé. Cela garantit que ce bug spécifique ne se reproduira plus. Le nom complet est "test de non-régression". Il peut également s'agir d'un test effectué avant de modifier une application pour s'assurer que l'application fournit le même résultat.

Pour cela, j'ajouterai:

  • Test d'admission: Testez qu'une fonctionnalité ou un cas d'utilisation est correctement implémenté. Il est similaire à un test d'intégration, mais en mettant l'accent sur le cas d'utilisation à fournir plutôt que sur les composants impliqués.

  • Test du système: Teste un système en tant que boîte noire. Les dépendances sur d'autres systèmes sont souvent moquées ou écrasées pendant le test (sinon ce serait plutôt un test d'intégration).

  • Vérification pré-vol: Tests répétés dans un environnement proche de la production, pour alléger le syndrome des «builds on my machine». Souvent, cela est réalisé en faisant un test d'acceptation ou de fumée dans un environnement de production.


847
2018-02-06 12:28



  • Test de l'unité: un test automatique pour tester le fonctionnement interne d'une classe. Ce devrait être un test autonome qui n'est pas lié à d'autres ressources.
  • Test d'intégration: un test automatique effectué sur un environnement, similaire aux tests unitaires mais avec des ressources externes (db, accès disque)
  • Test de régression: après avoir implémenté de nouvelles fonctionnalités ou corrections de bugs, vous revérifiez des scénarios qui ont fonctionné dans le passé. Ici, vous couvrez la possibilité dans laquelle vos nouvelles fonctionnalités cassent les fonctionnalités existantes.
  • Test de fumée: premiers tests sur lesquels les testeurs peuvent conclure s'ils continueront les tests.

85
2018-02-06 12:13



Tout le monde aura des définitions légèrement différentes, et il y a souvent des zones grises. Toutefois:

  • Test unitaire: est-ce que ce petit un peu (aussi isolé que possible) fonctionne?
  • Test d'intégration: ces deux composants (ou plus) fonctionnent-ils ensemble?
  • Test de fumée: est-ce que tout ce système (aussi proche que possible d'un système de production) s'accouple assez bien? (Sommes-nous raisonnablement sûrs qu'il ne créera pas de trou noir?)
  • Test de régression: avons-nous par inadvertance réintroduit les bugs que nous avions précédemment corrigés?

74
2018-02-06 12:15



Une nouvelle catégorie de test dont je viens de prendre connaissance est la suivante:

Test des Canaries

 UNE Test des Canaries est un test automatisé et non destructif courir régulièrement dans un VIVRE environnement, de sorte que si jamais il échoue, quelque chose de vraiment grave est arrivé.

Les exemples pourraient être:

  • Des données qui ne devraient être disponibles que dans DEV / TEST sont apparues VIVRE.
  • Un processus d'arrière-plan n'a pas pu s'exécuter
  • Un utilisateur peut-il se connecter?

41
2017-09-11 03:47



Le «test de fumée» vient de l'ingénierie sous-marine (héritée de la plomberie) où la fumée littérale serait pompée dans la coque pour voir si l'un d'entre eux est ressorti, ce qui serait plutôt un échec dramatique pour un sous-marin!


16
2018-02-06 12:27



Test d'unité: vérification de ce composant particulier (c'est-à-dire, classe) fonctions créées ou modifiées telles que conçues. Ce test peut être manuel ou automatisé mais ne dépasse pas la limite du composant.

Test d'intégration: Vérification que l'interaction de composants particuliers fonctionne comme prévu. Les tests d'intégration peuvent être effectués au niveau de l'unité ou au niveau du système. Ces tests peuvent être manuels ou automatisés.

Test de régression: vérification que les nouveaux défauts ne sont pas introduits dans le code existant. Ces tests peuvent être manuels ou automatisés.

En fonction de votre SDLC (cascade, rup, agile, etc), des tests particuliers peuvent être réalisés en "phases" ou peuvent tous être réalisés, plus ou moins, en même temps. Par exemple, les tests unitaires peuvent être limités aux développeurs qui transmettent ensuite le code aux testeurs pour des tests d'intégration et de régression. Cependant, une autre approche pourrait impliquer que les développeurs effectuent des tests unitaires et un certain niveau d'intégration et de tests de régression (en utilisant une approche TDD avec une intégration continue et des tests unitaires et de régression automatisés).

L'ensemble d'outils dépendra largement de la base de code, mais il existe de nombreux outils open source pour les tests unitaires (JUnit). Le QTP de HP (mercure) ou le Silktest de Borland sont tous deux des outils d'intégration automatisée et de tests de régression.


8
2018-04-26 12:02



Test de l'unité: le test d'un module individuel ou d'un composant indépendant dans une application est connu pour être un test unitaire, les tests unitaires seront réalisés par le développeur.

test d'intégration: combiner tous les modules et tester l'application pour vérifier la communication et le flux de données entre les modules fonctionnent correctement ou non, ce test étant également réalisé par les développeurs.

test de fumée  Dans le test de fumée, ils vérifient l'application de manière peu profonde et large. Dans les tests de fumée, ils vérifient la fonctionnalité principale de l'application, s'il y a un problème de bloqueur dans l'application, ils le signaleront à l'équipe de développeurs. défectueux, et le remettre à l'équipe de test et maintenant l'équipe de test vérifiera tous les modules pour vérifier que les changements de tat effectués dans un module auront un impact sur l'autre module ou pas. DANS TEST DE FUMÉE, les cas de test sont scriptés

les tests de régression exécuter les mêmes cas de test à plusieurs reprises pour s'assurer que le module inchangé ne provoque aucun défaut. REGRESSION TESTING est sous test fonctionnel


6
2017-11-26 07:28



Réponse de l'un des meilleurs sites Web pour les techniques de test de logiciels:

Types de tests de logiciels - Liste complète Cliquez ici


6
2017-10-21 05:28



LES TESTS DE RÉGRESSION-

"Un test de régression ré-exécute les tests précédents sur le logiciel modifié pour s'assurer que les modifications apportées au logiciel actuel n'affectent pas la fonctionnalité du logiciel existant."


5
2017-09-17 09:59



Test d'unité: vérification de ce composant particulier (c'est-à-dire, classe) fonctions créées ou modifiées telles que conçues. Ce test peut être manuel ou automatisé mais ne dépasse pas la limite du composant.

Test d'intégration: Vérification que l'interaction de composants particuliers fonctionne comme prévu. Les tests d'intégration peuvent être effectués au niveau de l'unité ou au niveau du système. Ces tests peuvent être manuels ou automatisés.

Test de régression: vérification que les nouveaux défauts ne sont pas introduits dans le code existant. Ces tests peuvent être manuels ou automatisés.

En fonction de votre SDLC (cascade, rup, agile, etc), des tests particuliers peuvent être réalisés en "phases" ou peuvent tous être réalisés, plus ou moins, en même temps. Par exemple, les tests unitaires peuvent être limités aux développeurs qui transmettent ensuite le code aux testeurs pour des tests d'intégration et de régression. Cependant, une autre approche pourrait impliquer que les développeurs effectuent des tests unitaires et un certain niveau d'intégration et de tests de régression (en utilisant une approche TDD avec une intégration continue et des tests unitaires et de régression automatisés).


3
2017-10-28 21:19