Y a-t-il quelqu'un qui puisse définir clairement ces niveaux de test car je trouve difficile de faire la différence lorsque je fais du TDD ou des tests unitaires. S'il vous plaît, si quelqu'un peut expliquer comment et quand les mettre en œuvre?
Y a-t-il quelqu'un qui puisse définir clairement ces niveaux de test car je trouve difficile de faire la différence lorsque je fais du TDD ou des tests unitaires. S'il vous plaît, si quelqu'un peut expliquer comment et quand les mettre en œuvre?
Réponses:
Brièvement:
Test unitaire - Vous testez chaque morceau de code individuellement. 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 d'autres 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 étudier les tests en boîte blanche et en boîte noire. Il y a aussi des tests de performance et de charge, et des tests des «ilities» à considérer.
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: en cas d'échec, 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.
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é mise en œuvre 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 l'interaction entre plusieurs unités. 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 réussi ses tests unitaires).
Test de régression Des tests de régression sont effectués chaque fois que quelque chose a été modifié 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, 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 Les 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) répond à 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 dernier contrôle 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 ainsi que 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.
J'essaierai:
Test unitaire: ma méthode unique fonctionne-t-elle correctement? (PAS de dépendances, ou de dépendances simulées)
Test d'intégration: mes deux modules développés séparément fonctionnent-ils correctement lorsqu'ils sont assemblés?
Test de régression: ai-je cassé quelque chose en changeant / en écrivant un nouveau code? (l'exécution de tests unitaires / d'intégration avec chaque commit est un test de régression techniquement (automatisé)). Plus souvent utilisé dans le contexte du contrôle qualité - manuel ou automatisé.
Test d'acceptation : test effectué par le client, qu'il "accepte" le logiciel livré
Je ne peux pas commenter (réputation trop basse: - |) alors ...
@Andrejs fait un bon point sur les différences entre les environnements associés à chaque type de test.
Les tests unitaires sont généralement exécutés sur la machine des développeurs (et éventuellement pendant la construction de CI) avec des dépendances simulées avec d'autres ressources / systèmes.
Les tests d'intégration doivent par définition avoir (un certain degré) de disponibilité de dépendances; les autres ressources et systèmes étant appelés ainsi l'environnement est plus représentatif. Les données à tester peuvent être simulées ou constituer un petit sous-ensemble obscur de données de production réelles.
Les tests UAT / d'acceptation doivent représenter l'expérience du monde réel pour les équipes d'assurance qualité et commerciales acceptant le logiciel. Il faut donc une intégration complète et des volumes de données réalistes et des ensembles de données complets masqués / obscurcis pour offrir des performances réalistes et une expérience utilisateur finale.
D'autres "ilities" sont également susceptibles d'avoir besoin que l'environnement soit aussi proche que possible de la réalité pour simuler l'expérience de production, par exemple les tests de performance, la sécurité, ...