J'ai une fonction qui enregistre des photos (stockées dans la base de données, app donne l'option utilisateur pour enregistrer dans un répertoire) à un répertoire donné.Maintenant, cela ne fonctionnait pas correctement.Je viens de le corriger.Maintenant, dois-je écrire test unitaire ou test d'intégration pour la fonction?Dois-je écrire un test d'intégration ou un test unitaire?
Répondre
Pour votre cas, vous voulez écrire un test d'intégration pour couvrir le scénario que vous avez mentionné. J'ai un full post on this topic. Cependant, voici une version résumée spécifique à votre question:
Dans son livre L'art des tests unitaires, Roy Osherove décrit un principe clé selon lequel un test unitaire doit être «digne de confiance». En surface, cela semble assez évident. Cependant, ce sous-jacent met en évidence certaines des différences clés entre un test unitaire et un test d'intégration. Avec un test fiable, vous devez pouvoir faire confiance aux résultats 100% du temps. Si le test échoue, vous voulez être certain que le code est cassé et doit être corrigé. Vous ne devriez pas avoir à demander des choses comme "La base de données était-elle en panne?", "La chaîne de connexion était-elle OK?", "La procédure stockée a-t-elle été modifiée?". En posant ces questions, cela montre que vous n'êtes pas capable de faire confiance aux résultats et que vous avez probablement un «test unitaire» mal conçu. Comme votre scénario décrit une situation avec des dépendances multiples similaires, vous voulez le couvrir avec un test d'intégration. Encore une fois, pour plus de détails, voir également my full post here.
Bonne chance!
excellent point sur les «tests de confiance» –
Merci pour votre commentaire. Le concept de Roy m'a certainement aidé aussi. Bienvenue sur stackoverflow aussi! –
Il suffit de lire cette réponse, et il répond totalement à mes questions. Je suis un peu novice en matière de développement «professionnel», ce qui m'a permis de mieux comprendre les tests d'intégration, ce que je n'ai pas bien compris. Je vous remercie! –
Les tests d'intégration et les tests unitaires ont des portées et des fins:
- tests unitaires tester de petits morceaux de code (comme une fonction) dans l'isolement du reste du programme, couvrant idéalement tous les cas limites possibles (comme exceptions, paramètres NULL, etc.)
- Les tests d'intégration testent une application entière du point de vue d'un cas d'utilisation. Ils ne peuvent jamais couvrir tous les cas de bords, mais ils peuvent intercepter les problèmes d'interaction entre les parties du code et le code de la colle qui les unit. Les tests unitaires manquent souvent
Pour une fonction unique, vous pouvez vraiment avoir seulement un test unitaire, et vous devriez. Mais vous pouvez également avoir un test d'intégration qui montre que lorsque l'utilisateur appuie sur un bouton donné, une photo est écrite dans le répertoire, et peut également être ouverte dans le programme.
Certaines personnes appelleraient un test pour un DAO un test d'intégration; d'autres diraient que c'est un test unitaire. Peu importe comment vous l'appelez, je dirais que vous devriez avoir un test unitaire pour toutes les fonctionnalités DAO et un test d'intégration pour le comportement front-to-back incorporé dans le cas d'utilisation qui dit «donner à l'utilisateur l'option de enregistrer dans le système de fichiers. " J'aurais des tests d'intégration pour les deux scénarios, car il semble que les deux sont possibles dans votre système.
Je pense que cela dépend de la source de votre problème. Si la fonction elle-même peut présenter des problèmes dans différents scénarios, vous pouvez effectuer des tests unitaires pour tester ces scénarios sur votre fonction. Si l'intégration de votre fonction et d'autres parties de votre programme peut causer des problèmes, vous devriez penser à un test d'intégration. Parfois, une fonction comme la vôtre peut avoir besoin des ressources externes pour faire son travail ce n'est pas une mauvaise idée d'avoir des tests unitaires pour voir ce qui se passera si certaines de ces ressources ne sont pas disponibles
- Les tests d'intégration vous aident à valider si votre logiciel est fonctionne correctement.
- Tests unitaires vous aider à trouver pourquoi votre logiciel est rupture.
Les tests unitaires contribuent dans une certaine mesure au premier objectif. De plus, il a deux avantages:
- Il est généralement beaucoup moins cher à écrire et run un test unitaire avec une portée beaucoup plus petite.
- Il est plus facile d'obtenir une couverture pour l'explosion combinatoire des états de vos composants en utilisant des tests unitaires qu'un test d'intégration. Supposons que vous ayez une configuration impliquant trois composants. Chacun d'eux a 3 états différents. Ensuite, l'intégration testant l'ensemble de l'installation impliquerait de vérifier 3 * 3 * 3 = 27 conditions. L'unité testant les composants individuels nécessiterait de tester 3 + 3 + 3 = 9 conditions. (Ceci est simplifié à l'extrême, mais vous l'aurez compris)
De ce fait, les tests unitaires sont généralement plus populaires que les tests d'intégration. Cependant, vous ne pouvez vraiment pas vous passer de tests d'intégration. Les tests d'intégration devraient être la pierre angulaire utilisée pour l'acceptation de votre logiciel. Avoir des tests unitaires prouve seulement que vous avez un tas de choses à faire quelque chose. Un test d'intégration prouve que vous avez logiciel de travail.
- 1. Comment écrire un test unitaire pour "InterruptedException"
- 2. Comment écrire un test unitaire en utilisant un objet simulé?
- 3. Test unitaire: Maven ou Eclipse?
- 4. Comment puis-je écrire un test unitaire pour l'événement Gridview_RowCommand?
- 5. Comment écrire un test unitaire pour vérifier l'erreur de compilation?
- 6. Comment écrire un test unitaire pour le résultat de Dispose()
- 7. Comment faire passer un test unitaire?
- 8. C# - Test unitaire, Mock?
- 9. Eclipse TPTP: Comment profiler un test unitaire?
- 10. Test unitaire n'atteignant pas un code
- 11. Test unitaire avec un fichier d'entrée
- 12. Comment injecter PersistenceContext pendant un test unitaire?
- 13. Servlets de test unitaire
- 14. WCF MSMQ Test unitaire
- 15. asp.net mvc nhibernate test unitaire
- 16. QT Qtestlib, Test unitaire
- 17. Comment écrivez-vous un test unitaire pour un motif regex?
- 18. Cadre de test unitaire universel
- 19. Comment moq un NetworkStream dans un test unitaire?
- 20. Fonction de test unitaire asynchrone
- 21. Test unitaire des indices Lucene
- 22. JFC tutoriel test unitaire/exemple
- 23. Comment créer un test unitaire pour ActualWidth dans Silverlight 4?
- 24. MSTest - test unitaire avec StackOverflowException
- 25. Comment écrire un test simulacres d'une méthode
- 26. C++ - Est-il possible d'implémenter un test de fuite de mémoire dans un test unitaire?
- 27. Échec du test unitaire - Pourquoi?
- 28. propriété ViewResult.ViewName vide test unitaire
- 29. Organiser le test unitaire dans une classe de test
- 30. Mocking l'instanciation d'un objet pour un test unitaire
Je préfère écrire unittests pour les classes uniques et (parfois) les outils d'enregistrement pour le test d'intégration. – stacker