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 que le test unitaire, le Test D'intégration, le test de fumée, le Test de régression et quelles sont les différences entre eux? Et quels outils puis-je utiliser pour chacun d'eux?

par exemple, J'utilise JUnit et NUnit pour les tests unitaires et les tests D'intégration. Y a-t-il des outils de test de fumée ou de régression?

591
demandé sur OmG 2009-02-06 15:08:34

20 réponses

  • test unitaire : spécifier et tester 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 ou .

  • test d'Intégration : Test de la bonne inter-fonctionnement de plusieurs sous-systèmes. Il y a toute la gamme, il y, de l'intégration de test entre deux classes, à l'intégration de test avec l'environnement de production.

  • Smoke test (aka sanity check) : un simple test d'intégration où il suffit de vérifier que lorsque le système sous test est invoqué, il retourne normalement et ne explose pas.

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

à ceci, j'ajouterai:

  • test d'acceptation : tester qu'une caractéristique ou un cas d'utilisation est correctement mis en œuvre. Il est similaire à un test d'intégration, mais avec un accent particulier sur le cas d'utilisation à fournir plutôt que sur les composants impliqués.

  • System test : teste un système en tant que boîte noire. Dépendances sur d'autres systèmes sont souvent moqué ou écrasé pendant le test (sinon il s'agirait plutôt d'un test d'intégration).

  • "Pre-flight check : Tests répétés dans un environnement de production, pour atténuer le syndrome "construit sur ma machine". Souvent cela se réalise en faisant une acceptation ou test de fumée dans un environnement de production similaire.

870
répondu ddaa 2018-07-26 16:15:21
  • essai unitaire : essai automatique destiné à tester le fonctionnement interne d'une classe. Il devrait s'agir d'un test autonome qui n'est pas lié à d'autres ressources.
  • Integration test : un test automatique qui se fait sur un environnement, donc similaire aux tests unitaires mais avec des ressources externes (db, accès disque)
  • test de régression : après mise en œuvre de nouvelles fonctionnalités ou d'un bug correctifs, vous testez à nouveau des scénarios qui ont fonctionné dans le passé. Ici vous couvrez la possibilité dans laquelle vos nouvelles fonctionnalités briser les fonctionnalités existantes.
  • Smoke testing : premiers essais au cours desquels les vérificateurs peuvent déterminer s'ils poursuivront les essais.
88
répondu Gerrie Schenck 2009-02-06 12:13:56

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

  • Unité de test: est-ce un peu (aussi isolé que possible)?
  • test D'intégration: ces deux (ou plusieurs) composants fonctionnent-ils ensemble?
  • essai à la fumée: l'ensemble de ce système (aussi proche que possible d'un système de production) fonctionne-t-il assez bien ensemble? (c'est à dire nous sommes raisonnablement confiants de ne pas créer un trou noir?)
  • Test de régression
  • : avons-nous réintroduit par inadvertance des bogues que nous avions précédemment corrigés?
77
répondu Jon Skeet 2009-02-06 12:15:07

une nouvelle catégorie de test dont je viens de prendre connaissance est le:

151920920" Canary test A Canary test est un test automatisé, non destructif qui est exécuter sur une base régulière dans un LIVE environnement, de sorte que si jamais il échoue, quelque chose de vraiment mauvais s'est produit.

exemples:

  • contient des données qui ne devraient jamais être disponibles dans le DEV / TEST paru dans VIVRE.
  • a un processus de fond échoué à exécuter
  • un utilisateur d'ouverture de session
41
répondu AndyM 2013-09-11 03:47:51

anecdote historique apocryphe: "smoke testing" vient de l'ingénierie des sous-marins (hérité de la plomberie) où la fumée littérale serait pompée dans la coque pour voir si tout cela est sorti à nouveau, ce qui serait plutôt un échec dramatique pour un sous-marin!

16
répondu annakata 2009-02-06 12:27:23

Unité de test: Vérifier que le composant particulier (c'est à dire,la classe) créé ou modifié fonctionne comme prévu. Ce test peut être manuel ou automatisé mais ne dépasse pas les limites du composant.

test d'Intégration: Vérifier que l'interaction des composants fonctionner comme prévu. Les tests d'intégration peuvent être effectués au niveau de l'unité ou du système. Ces tests peuvent être manuels ou automatisés.

test de régression: Vérifier que de nouveaux défauts ne sont pas introduits dans le code existant. Ces tests peuvent être manuels ou automatisés.

selon votre SDLC (waterfall, rup, agile, etc) des tests particuliers peuvent être effectués en "phases" ou peuvent tous être effectués, plus ou moins, en même temps. Par exemple, les tests unitaires peuvent être limités aux développeurs qui remettent ensuite le code à des testeurs pour des tests d'intégration et de régression. Toutefois, une autre approche pourrait amener les développeurs à effectuer des tests à l'unité et certains niveau d'intégration et tests de régression (utilisant une approche TDD ainsi que des tests d'intégration continue et d'unités automatisées et de régression).

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

8
répondu rdrex 2009-03-04 01:48:41

réponse de l'un des meilleurs sites Web pour les Techniques D'essai de logiciel:

Types de Tests Logiciels – de Compléter la Liste des Cliquez Ici

enter image description here

c'est une description assez longue, Je ne vais pas le coller ici: mais il peut être utile pour quelqu'un qui veut savoir tout le techniques de test.

Espère que ça vous sera utile :)

7
répondu Kaleem Ullah 2017-08-04 22:59:10

test unitaire : le test d'un module individuel ou d'un composant indépendant dans une application est connu pour être un test unitaire , le test unitaire sera effectué 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 a également été effectué par les développeurs.

test des fumées DANS le test de fumée, ils vérifient la demande en eau peu profonde et large, test de détection de fumée de vérifier la fonctionnalité principale de l'application , si il n'y a aucun problème de blocage dans l'application qu'ils font des rapports à l'équipe de développeur , et de l'équipe de développement va le corriger et réparer le défaut, et de le redonner à l'équipe de test et maintenant, l'équipe de test permettra de vérifier que tous les modules de vérifier tat les modifications apportées dans un module à l'autre module ou pas. DANS LES ESSAIS DE FUMÉE les cas d'essai sont scriptés

test de régression exécution répétée des mêmes cas d'essai pour s'assurer que le module inchangé ne cause pas de défaut. Les tests de régression font l'objet d'un test fonctionnel

6
répondu malini 2014-04-26 12:02:23

TEST DE RÉGRESSION -

"Un test de régression ré-exécute les tests précédents contre le changement de logiciel pour vous assurer que les modifications introduites dans le logiciel actuel n'affectent pas la fonctionnalité du logiciel existant."

5
répondu Nikita G 2010-10-21 05:28:26

Unité de test: Vérifier que le composant particulier (c'est à dire,la classe) créé ou modifié fonctionne comme prévu. Ce test peut être manuel ou automatisé mais ne dépasse pas les limites du composant.

test d'Intégration: Vérifier que l'interaction des composants fonctionner comme prévu. Les tests d'intégration peuvent être effectués au niveau de l'unité ou du système. Ces tests peuvent être manuels ou automatisés.

test de régression: Vérifier que de nouveaux défauts ne sont pas introduits dans le code existant. Ces tests peuvent être manuels ou automatisés.

selon votre SDLC (waterfall, rup, agile, etc) des tests particuliers peuvent être effectués en "phases" ou peuvent tous être effectués, plus ou moins, en même temps. Par exemple, les tests unitaires peuvent être limités aux développeurs qui remettent ensuite le code à des testeurs pour des tests d'intégration et de régression. Toutefois, une autre approche pourrait amener les développeurs à effectuer des tests à l'unité et certains niveau d'intégration et tests de régression (utilisant une approche TDD ainsi que des tests d'intégration continue et d'unités automatisées et de régression).

3
répondu nhfghfgsq 2013-09-17 09:59:06

un type d'essai qui semble digne d'être mentionné dans ce fil est les essais de contrainte/performance/charge qui pourraient être simplement mis en évidence pour trouver les limites au-delà desquelles un certain morceau de logiciel casse. Notez qu'en termes d'outillage, il est essentiel de déterminer précisément la portée de ce que l'on propose aux tests de résistance du point de vue du système. Par exemple, dans le cas d'une "application web" stress tests peuvent inclure dans son champ d'application l'application de serveur web lui-même et donc l' outillage pourrait intervenir sur cette fin. Voici un beau post à propos de essai de charge http

3
répondu Jaime Gago 2013-10-28 21:19:35

Unit testing est destiné à la plus petite partie de la mise en œuvre possible. En java, cela signifie que vous testez une seule classe. Si la classe dépend d'autres classes ce sont des faux.

quand votre test appelle plus d'une classe, c'est un test d'intégration .

suites de test complet peut prendre un long moment à courir, donc après un changement de nombreuses équipes exécuter quelques tests rapides à compléter pour détecter d'importantes ruptures. Par exemple, vous avez cassé l'Uri de ressources essentielles. Il s'agit des " smoke tests .

tests de régression exécutez sur chaque Construction et vous permettent de refactoriser efficacement en attrapant ce que vous cassez. Tout type de test peut être un test de régression, mais je trouve que les tests unitaires sont très utiles pour trouver la source de la faute.

3
répondu Dave 2014-11-07 12:23:58
"151900920 De Tests Unitaires:- les tests unitaires sont généralement effectués par le côté des développeurs,où les testeurs sont en partie développés dans ce type de test où les tests sont faits unité par unité. Dans les cas de test java Junit, il est également possible de vérifier si le code écrit est parfaitement conçu ou non.

Les Tests D'Intégration:- Ce type d'essai est possible après l'essai de l'unité lorsque tous les composants ou certains d'entre eux sont intégrés.Ce type d'essai permettra de s'assurer que lorsque les composants sont intégrées, affectent-elles les capacités de travail ou les fonctionnalistes des autres?

Test De Détection De Fumée:- Ce type de test est effectué en dernier lorsque le système est intégré avec succès et prêt à démarrer sur le serveur de production. Ce type de test permettra de s'assurer que toutes les fonctionnalités importantes du début à la fin fonctionnent correctement et que le système est prêt à être déployé sur le serveur de production.

Test De Régression:- Ce type de test est important pour tester que les défauts involontaires / indésirables ne sont pas présents dans le système lorsque le développeur a corrigé certains problèmes. Ce test permet également de s'assurer que tous les bogues sont résolus avec succès et qu'aucun autre problème ne se pose.

2
répondu mohit sarsar 2014-09-16 10:50:07
  • l'Intégration de Tests : les Tests d'Intégration est de l'Intégrer à un Autre Élément
  • Smoke Test : Test de détection de Fumée est également connu comme la version de Test.Le test de fumée est le processus de test initial effectué pour vérifier si le Logiciel sous test est prêt/stable pour des tests ultérieurs.
  • test de régression: le test de régression est un test rebaptisé. Si le nouveau logiciel est effectué dans un autre module ou non.
  • Unité de Test : C'est un Tests en boîte Blanche .Seuls les développeurs y participent
2
répondu Madhivanan 2014-11-07 12:22:42

Quelques bonnes réponses déjà, mais je voudrais affiner:

"151900920 de tests Unitaires, est la seule forme de tests en boîte blanche ici. Les autres sont en boîte noire. Tests en boîte blanche signifie que vous savez l'entrée, vous connaissez les rouages du mécanisme d'inspecter, et vous connaissez la sortie. Avec la boîte noire test, tu sais seulement ce que l'entrée et la sortie doit être.

clairement, le test unitaire est la seule boîte blanche test ici.

  • unités d'essai éprouvettes spécifiques de code. Habituellement des méthodes.
  • test D'intégration tester si votre nouvelle fonctionnalité du logiciel peut s'intégrer avec tout le reste.
  • test de régression. C'est un test fait pour s'assurer que vous n'avez rien de cassé. Tout ce qui avait l'habitude de fonctionner devrait encore fonctionner.
  • test de fumée est fait comme un test rapide pour s'assurer que tout semble OK, avant de t'impliquer dans les tests plus vigoureux.
1
répondu uriDium 2009-02-06 12:31:31

test de régression - est un type de test SW où nous essayons de couvrir ou de vérifier autour de la correction de bug. la fonctionnalité autour de la correction de bogue ne doit pas être changée ou altérée en raison de la correction fournie. Les questions trouvées dans un tel processus sont appelées des questions de régression.

Smoke Testing: est une sorte de test effectué pour décider s'il convient d'accepter la construction/le logiciel pour d'autres tests D'assurance de la qualité .

1
répondu Sanyal 2015-07-28 16:36:50

"151910920 de tests Unitaires:

test unitaire est un processus de développement de logiciel dans lequel les plus petites parties testables d'une application, appelées unités, sont individuellement et indépendamment scrutés pour un fonctionnement correct. Les tests unitaires sont souvent automatisés, mais ils peuvent aussi être effectués manuellement.

les tests d'Intégration:

(parfois appelé intégration et test, abrégé I & T) est Phase de mise à l'essai du logiciel au cours de laquelle les modules logiciels individuels sont combinés et mis à l'essai en groupe. Elle se produit après l'essai à l'unité et avant l'essai de validation.

test du Système:

est le plus souvent le test final permettant de vérifier que le système à livrer est conforme à la spécification et à son but.

test de régression:

après la mise en œuvre de nouvelles fonctionnalités ou corrections de bugs, vous testez à nouveau des scénarios qui ont fonctionné dans le passé. Ici vous couvrez la possibilité dans laquelle vos nouvelles fonctionnalités briser les fonctionnalités existantes.

Test De Détection De Fumée:

l'objectif n'est pas d'effectuer des tests exhaustifs, mais de vérifier que les fonctionnalités critiques du système fonctionnent correctement. Par exemple, un essai de fumée typique serait - vérifier que l'application lance avec succès, vérifier que l'interface graphique est réactif, etc.

1
répondu Manjunatha B 2015-09-21 09:47:08

Unité de test: il effectue toujours par le développeur après leur développement fait pour trouver la question de leur côté de test avant qu'ils ne rendent toute exigence prête pour QA.

les Tests d'Intégration: Cela signifie testeur de vérifier module sous-module de vérification lorsque certaines données/sortie de fonction sont les disques d'un module à un autre module. Ou dans votre système Si vous utilisez un outil tiers qui utilise vos données système pour intégrer.

Test De Détection De Fumée: testeur effectué pour vérifier le système pour les tests de haut niveau et en essayant de trouver montrer bug de bouchon avant les changements ou le code va en direct.

test de régression: testeur a effectué une régression pour la vérification de la fonctionnalité existante en raison de changements mis en œuvre dans le système pour de nouvelles améliorations ou des changements dans le système.

1
répondu Krunal 2017-07-18 12:29:27

de la Fumée et de la santé mentale de test sont effectuées après un logiciel de construction afin d'identifier si pour démarrer le test. La santé mentale peut ou non être exécutée après un essai de fumage. Ils peuvent être exécutées séparément ou en même temps - santé mentale étant immédiatement après la fumée.

parce que les tests de santé mentale sont plus approfondis et prennent plus de temps, dans la plupart des cas, ils sont bien mérités d'être automatisés.

test de détection de Fumée prend généralement pas plus de 5 à 30 minutes pour l'exécution. Il est plus général: il vérifie un petit nombre de fonctionnalités de base de l'ensemble du système, afin de vérifier que la stabilité du logiciel est assez bonne pour des tests ultérieurs et qu'il n'y a pas de problèmes, bloquant l'exécution des cas de test prévus.

santé mentale test est plus détaillée que la fumée et peut prendre de 15 minutes à une journée entière, selon l'échelle de la nouvelle construction. Il s'agit d'un type plus spécialisé de test de réception, réalisé après progression ou re-test. Il vérifie les fonctionnalités de base de certaines nouvelles fonctionnalités et/ou les corrections de bugs ainsi que certaines fonctionnalités étroitement liées à celles-ci, afin de vérifier qu'elles fonctionnent selon la logique opérationnelle requise, avant que les tests de régression puissent être exécutés à plus grande échelle.

1
répondu Radostta 2017-11-17 11:58:04

le test de fumée a déjà été expliqué ici et est simple. Le test de régression fait l'objet d'un test d'intégration.

tests automatisés peuvent être divisés en seulement 2.

test Unitaire et Test d'Intégration. (c'est tout ce qui compte)

que j'appellerais utiliser l'expression "test long"(LT) pour tous les tests comme le test d'intégration, test fonctionnel, tests de régression, test de l'INTERFACE utilisateur , etc. Et de test de l'unité "petit test".

un tel exemple pourrait être le chargement automatique d'une page web, l'ouverture d'une session dans le compte et l'achat d'un livre. Si le test est réussi, il est plus probable qu'il se déroule de la même manière sur un site vivant(d'où la référence "meilleur sommeil"). Long = distance entre la page web(début) et la base de données(fin).

et ceci est un grand article discutant des avantages de integration testing (long test) plus que unit testing

-1
répondu Blue Clouds 2017-12-09 08:45:56