Il est bien connu que les tests de bout en bout et d'intégration sont coûteux. Bien sûr, si nous développons des applications où des gens pourraient mourir en cas de problème, c'est un investissement intéressant. Cependant, dans les applications où les erreurs ne sont pas la fin du monde, ne serait-il pas moins cher de sauter complètement les tests E2E et les tests d'intégration et de créer un plan de sauvegarde en cas de problème? Comme un test manuel des user stories + tests unitaires + l'utilisation d'un langage typé est-elle suffisante?
Comme par exemple, si une boutique en ligne a perdu une commande, elle pourrait envoyer l'article gratuitement + un autre article comme excuse. L'utilisateur final pourrait se retrouver encore plus heureux de cette façon et l'entreprise économise globalement de l'argent.
Je suppose que ma question est, en général, combien coûte un test d'intégration et un test E2E et combien d'argent cela permet-il d'économiser? Existe-t-il un moyen de faire un calcul risque / coût pour cela?
Réponses:
Peu importe que vous implémentiez E2E et des tests d'intégration ou non, vous avez besoin d'un plan de sauvegarde dans les deux cas . Ne vous attendez jamais à ce qu'un système soit exempt de bogues simplement parce qu'il a été testé.
Ainsi, dans votre estimation de coût, vous ne comparez pas le coût d'implémentation des tests E2E avec les coûts estimés par votre plan de sauvegarde en cas de panne, vous comparez:
contre.
Si vous pouvez utiliser ces tests E2E plusieurs fois, il y aura généralement un certain nombre de tests où les coûts atteindront le seuil de rentabilité. Cela devrait être la mesure que vous appliquez pour planifier à l'avance les tests E2E que vous effectuerez manuellement et ceux que vous automatiserez.
Notez qu'il peut y avoir certains types de tests E2E qui peuvent être mis en œuvre facilement, où le retour sur investissement est immédiatement clair, mais il existe également des types de tests E2E où le développement et la maintenance peuvent être plus coûteux que de les faire manuellement sur une période de plusieurs années.
la source
Peut-être contre-intuitivement, les tests automatisés peuvent réellement réduire le temps de développement par rapport à l'absence de tests. C'est donc un gagnant-gagnant.
L'idée est que les tests contribuent à plusieurs niveaux
Forcer la collecte et la spécification d'exigences strictes
Cela a un impact énorme sur la vitesse de développement. Pas de retour en arrière pour demander plus de détails, pas de malentendus, pas de fonctionnalités inutiles, etc.
Les développeurs savent quand une fonctionnalité est terminée
La plupart des tests sont effectués par des développeurs lors de l'écriture du code plutôt que par des testeurs vérifiant un produit fini. L'automatisation de ces tests réduit cette charge de travail
Bugs introduits par de nouvelles fonctionnalités détectés instantanément.
Celles-ci peuvent facilement vous coûter un sprint et nécessiter la réécriture d'une fonctionnalité entière si elles ne sont pas détectées.
Cycle de libération plus rapide
Cela signifie moins de code en vol, ce qui signifie moins de fusion, ce qui signifie moins de travail et moins de complexité pour les développeurs
Surtout si vous avez une configuration de framework de test, l'écriture de ces tests prend moins de temps que vous économisez dans ces efficacités.
De plus, vous économisez du temps de test manuel et vous obtenez un meilleur produit à la fin.
la source
Ma réponse? Peut-être, probablement pas .
Les tests EOE sont bons lorsqu'ils sont très simples. Si vous prévoyez de couvrir des scénarios de base, vous pouvez réussir à obtenir un certain avantage avec les tests EOE. Mais si vous avez une application vraiment complexe et volumineuse (mission critique ou non), ces tests EOE seront coûteux à maintenir et vous devez connaître votre scénario pour évaluer s'il en vaut la peine.
Il y a quelques années, le blog des tests Google abordait ce sujet. Je ne peux qu'être d'accord avec l'auteur. Un bon test doit être rapide , fiable et isoler les défaillances , des fonctionnalités que les tests EOE ne sont pas capables de vous fournir.
J'ai travaillé sur une application qui a plus de 12 heures de tests de bout en bout couvrant de nombreux scénarios. Finalement, nous avons réussi à distribuer ces tests sur différentes machines, en contrôlant le début, l'exécution et la fin des tests, en collectant et en fusionnant les résultats. L'application testée était une application monolithique (ce qui est plus facile à installer et à exécuter pour tester) et était un cauchemar pour maintenir les tests.
La plupart du temps, nous maintenions les tests au lieu d'attraper des bogues à partir de leurs résultats. Découvrir l'origine d'un bug sur un test de bout en bout prend beaucoup de temps. Nous avons également traité de nombreux tests «faux négatifs» et peu de temps pour comprendre le problème et le corriger: problèmes de chargement de l'applet Java, élément attendu introuvable sur la page (ainsi que d'autres problèmes de vitesse d'automatisation), conserver le code de requête qui sont juste utilisés sur le test de mémoire de la base de données (car la requête d'origine utilise un code spécifique à la base de données), etc.
Tout cela a besoin de personnel pour rester opérationnel. À la fin, nous commençons à supprimer certains tests EOE et à les remplacer par de nombreux tests unitaires / d'intégration.
Donc, mon conseil prudent est d'utiliser la pyramide de test de Google:
la source
D'après mon expérience, les tests E2E, quelle que soit la criticité de l'application, sont toujours prudents. Je pense toujours en termes de pire scénario, si les choses vont en forme de poire, êtes-vous à l'aise de vous tenir devant la direction et de justifier votre approche? Sinon, vous devez changer votre approche. De nombreuses organisations minimisent l'importance et les ressources allouées aux tests, mais soyez assurés que lorsque les choses tournent mal, tout le monde cherche quelqu'un à blâmer et si vous avez pris la décision de limiter les tests ou donné ces conseils, vous êtes le seul à licencier ligne.
Le développement de logiciels nécessite trop souvent un œil sur la politique organisationnelle.
la source
"Il est bien connu que les tests de bout en bout et d'intégration sont coûteux."
Je pense que je ne suis pas d'accord avec cette affirmation.
Premièrement, les tests E2E sont ce qui compte pour les utilisateurs finaux et peuvent être les options les plus rentables et les plus économiques pour tester des systèmes complexes. Par exemple, lorsque quelqu'un achète une voiture, la plupart des gens ne la démontent pas et ne commencent pas à tester le carb, la boîte de vitesses et les roues isolément. Au lieu de cela, ils le prennent pour un essai routier.
Deuxièmement, en termes d'outillage, E2E n'a pas tendance à ralentir l'évolution interne du produit et dure plus longtemps. Si vous y réfléchissez, la surface fonctionnelle réelle de la plupart des produits change rarement autant, tandis qu'en interne, elle peut être soumise à toutes sortes de développements. Par conséquent, une fois que l'outil de test est opérationnel, il dure généralement extrêmement bien. Par exemple, si nous revenons à l'analogie avec la voiture. Le même cas de test "à prendre pour un lecteur" fonctionnerait à peu près sur Ford Model T comme sur Tesla. Tout comme les investissements dans les routes roulantes, les souffleries, les configurations de tests d'étanchéité, etc. Combien de tests de composants internes auraient eu un si bon retour sur investissement sur leur durée de vie?
Là où les tests E2E ont tendance à être plus chers / inappropriés, c'est dans la configuration initiale et s'ils sont utilisés pour tout tester. De manière pragmatique, je pense que la meilleure façon d'éviter ce piège est de prioriser l'automatisation des tests de choses qui:
Utilisez n'importe quelle forme de test, y compris E2E, qui vous semble appropriée. Concentrez-vous sur ceux-ci.
la source
Vous ne pouvez pas vraiment comparer le coût des tests d'intégration au coût d'un meilleur scénario où un bogue n'affecte qu'une seule commande. Un bug logique serait tout aussi susceptible d'affecter un grand nombre de commandes. Dire qu'un bug signifie qu'aucun paiement n'est capturé - cela pourrait avoir des effets désastreux pour toute entreprise.
Vous devriez vous demander quel est le pire des bogues qui pourrait, en réalité, se retrouver en production en raison du manque de tests E2E. Et souvenez-vous de la loi Murphys.
la source
Je suppose que cette question concerne les applications Web d'entreprise.
Ma recommandation pour les choses moyennement critiques:
Je pense que la plupart des tests devraient être au niveau de l'API ou au niveau des composants. Je ne me soucie pas des tests unitaires qui exécutent uniquement certaines fonctions internes.
la source