web-dev-qa-db-fra.com

Les tests logiciels sont-ils vraiment nécessaires?

Je suis un étudiant travaillant sur mon B.E (CS) et ma question est la suivante:

  1. Les tests dans le champ Software sont-ils nécessaires?
  2. Si nous créons un logiciel avec beaucoup de soin, alors pourquoi devrions-nous tester?
  3. Après des tests, pouvons-nous être Sûr que nous avons atteint cet objectif (le produit/logiciel fonctionne comme prévu) car nous avons fait le test pour cela? Est-il possible?

Ma question: Test du logiciel requis?

33
Ant's

Oui. Parce que peu importe la qualité que vous êtes, vous ne pouvez pas penser à tout.

  • Vous serez également invité à rendre votre logiciel faire des choses que vous n'avez jamais eu l'intention de faire.
  • Vous allez également jamais avoir des exigences qui sont si claires que vous pourrez penser à toutes les possibilités de s'assurer que le code ne casse pas.
  • Vous travaillerez également avec les logiciels et les API d'autres personnes qui ne fonctionneront pas toujours comme prévu, mais vous supposerez que cela le fait, ou devrait conduire à un défaut dans votre cas "parfait".
79
jmq

Oui

Pour la même raison qu'un chef goûte sa nourriture tout en le faisant cuire.

78
Steven A. Lowe

Je travaille avec quelqu'un qui pense comme ça, il pense que parce qu'il est un programmeur principal, il n'a plus besoin de tester son code. La société ne comprend pas à quel point cette attitude est dangereuse et au lieu de le tirer parti, ils ont embauché plus de programmeurs pour s'attaquer au carnet de bugs. Ne sachant pas où cet arriéré vient de penser que cela fait partie de la programmation. Fondamentalement, nous avons 3 programmeurs qui travaillent sous ce mode et une équipe de 20 qui ne font rien d'autre que de tester et de réparer les bugs ces trois créations.

ABSENCE DE [ ~ # ~] approprié [~ # ~ ~] Test [~ # ~] tue [~ # ~ ~].

Donc, à moins que vous soyez Dieu ou quelle que soit la version d'un certain parfait, tout savoir (maintenant cela, j'aimerais voir) ou sauf si vous ne souhaitez que vous vouliez être tiré très vite, je vous suggère fortement de commencer à tester.

18
Newtopian

Le logiciel est écrit par des personnes.

Les gens sont imparfaits et font des erreurs.

Comme la complexité d'une entreprise monte, le nombre potentiel (et l'impact) des erreurs, des supervisions ou des objets oubliés augmente - généralement exponentiellement.

Donc oui, les tests sont nécessaires. Il apporte l'équilibre et la perspective.

9
quickly_now

Voulez-vous vous lancer sur un vol qui dirige un système d'exploitation que vous connaissez vous avez utilisé sur votre ordinateur portable et vous a donné un écran de mort dans votre couleur préférée? Pensez-y.

Aucun codeur n'est parfait. Loin, loin, loin de là. Vous avez besoin de tests et des testeurs apportent souvent une perspective (également appelée cas d'utilisation) que les développeurs manquaient.

Faites une recherche sur les bugs logiciels les plus célèbres sur Google pour savoir ce que je veux dire.

Et au niveau des collèges, prenez des connaissances sur le développement dirigé par des tests, des tests unitaires et des pratiques agiles pour savoir où les choses se trouvent actuellement.

6
Fanatic23

Errare humanum est

Il n'y a pas de logiciel sans bug.

Le développeur le plus qualifié écrit le code avec des bugs. Même si un développeur parfait exisit, il y aurait toujours des bugs en raison des divergences entre:

  • documents de besoins et de spécifications des utilisateurs
  • spécification et conception
  • quincaillerie et environnements logiciels attendus et réels
  • hier et aujourd'hui, la vérité: tout ce qui est ci-dessus est soumis à des modifications qui ne sont pas parfaitement signalées à chaque étape du processus de développement.

Le développeur parfait n'est qu'une partie de la chose entière. Et les développeurs parfaits n'existent pas.

4
mouviciel

Le test est un must absolu pour toute application non triviale (taille ou fonction) qui doit être réellement utilisée. Vous ne trouverez pas n seul développeur qui se soucie de son métier (comme en témoigne leur visite de ce site) qui répondra et disent que les tests ne sont pas nécessaires.

En plus de ce qui a déjà été publié, une suite complète de tests d'unités automatisées sur une application donnée vous rendra plus confiant dans les futures changements de code. Cette confiance plus élevée (en tant que tests d'unités fournissant un grand filet de sécurité) entraînera des modifications de code plus rapides des applications existantes (en raison d'une réduction de rechange/double vérification).

4
jlnorsworthy

Outre toutes les autres grandes réponses, même si vous connaissez sa liberté parfaite et sans bug, pensez aux autres programmeurs qui doivent faire face à votre code à l'avenir. Ils ne le sauront pas comme vous le ferez et voudront vous fier à vos tests pour vous assurer qu'ils n'ont rien brisé après leur changement. Ceci, bien sûr, s'applique également à vous-même après que vous n'aviez pas vu votre code dans un an!

3
Chris Knight

oui.

Voici une autre perspective légèrement plus subtile qui n'a pas encore été couverte:

Ne sous-estimez jamais le besoin de "vérification indépendante". C'est la même raison pour laquelle il est bon d'avoir quelques éditeurs indépendants sur votre travail avant de soumettre un grand nombre d'écritures pour la publication. Peu importe la qualité d'un écrivain, vous allez occasionnellement cerveler - et écrivez quelque chose comme "dans" à la place de "ça", ou quelque chose comme ça. Si vous le relisez vous-même, même très soigneusement, vous le manquerez toujours, car votre cerveau accepte automatiquement votre flux de processus de pensée comme étant correct et glousse sur l'erreur. À un nouveau jeu d'yeux, cette sorte d'erreur est généralement assez criante.

Vous obtenez la même chose dans la programmation: il est assez facile d'entrer dans un flux où votre code ou votre "test de développement" de base de votre propre code - semble correct car vous le testez et en l'utilisant d'une certaine manière. Mais alors quand une autre paire de mains vient et clique sur des choses d'une manière légèrement différente, tout se bloque.

Maintenant, bien sûr, vous pourrait En théorie, descendez la voie de la vérification officielle de toutes les possibilités et une branche logique dans votre code, mais pour un logiciel non trivial, cela sera beaucoup plus coûteux et le temps -Consumer que d'avoir quelqu'un d'autre frapper sur le code pour vous. Et vous manquerez probablement des choses que vous n'avez jamais pensées.

3
Bobby Tables

La plupart des programmes réels de la vie réelle:

a) contiennent des centaines de lignes de code ou plus, éparpillées à travers de nombreux fichiers;
[.____] b) sont développés par plus d'un programmeur;
[.____] c) utilisé dans des environnements différents de l'environnement du développeur

Ainsi, si vous ne vérifierez pas comment le programme fonctionne dans une situation réelle, la chance de ne pas fonctionner du tout serait proche de 100%.

3
Nikita Barsukov

Ce qui n'a pas encore été touché: même si votre code est parfait, vous n'êtes toujours pas en sécurité. Les compilateurs ont des bugs pouvant causer un code même parfait pour se comporter de manière incorrecte après la compilation. Les systèmes d'exploitation ont des bogues qui peuvent provoquer un binaire parfaitement binaire de manière incorrecte lorsqu'il est exécuté. Le matériel contient des bugs pouvant causer des problèmes.

C'est aussi pourquoi les tests sur une machine ne suffisent pas pour les produits commerciaux. Ils doivent être testés sous autant de combinaisons de matériel et de logiciels qu'ils peuvent rencontrer à l'état sauvage, comme cela est réalisable.

2
jwenting

Le chef de l'équipe écrit le logiciel de la navette spatiale a volé avant chaque lancement pour signer que le logiciel ne nuirait pas à la navette.

Que penseriez-vous lui donner la confiance de le faire?

2
user1249

Vous testez constamment le code simplement en la compilant et en l'utilisant. Dans certains IDE Vous obtenez des chèques de santé de la santé à la santé lorsque vous tapez. Sauf si vous n'avez jamais exécuté votre code, vous effectuez des tests.

Combien vous testez-vous est vraiment la racine de ce type de question et la réponse à cela revient au risque. Vous testez autant qu'il est logique de tester à partir d'un point de vue de la gestion des risques. Testez tout ou rien n'est généralement impossible. Les tests à côté de rien sont généralement un mauvais coup. Tout est compris entre le jeu équitable en fonction du niveau de risque et de l'exposition de votre livrable.

1
Bill

Je suggérerais de prendre un bon cours de calcul tolérant à la faute. Design prudent de logiciels ne sont qu'un des piliers pour obtenir une robustesse dans votre produit logiciel. Les deux autres piliers sont des tests suffisants et des conceptions redondantes. L'intention de base est de prendre en compte un nombre exponentiel de conditions de défaillance inconnues et de la priorité à la gestion de certaines des celles connues:

1.) Éliminer autant de défaillances possibles grâce à la conception et à la bonne mise en œuvre 2.) Éliminer les défaillances imprévues de la phase de conception et une mise en œuvre incorrecte grâce à diverses formes de test (unité, intégration, aléatoire) 3.) Traiter les défaillances de gauche sur la redondance ( temporel => recalculer, réessayer ou spacial => garder des copies, la parité)

Si vous éliminez la phase de test, vous ne vous laissez que des phases de conception et de redondance pour répondre aux échecs.

De plus, à partir d'un point de vue du produit, vos parties prenantes (par exemple, la direction, les utilisateurs, les investisseurs) voudront une certaine assurance que votre produit répond à certaines spécifications, critères, etc. de la qualité et de la sécurité, n'est-ce pas testé le logiciel qui Vous avez construit juste pour avoir un "chèque de santé mentale"? Toutes ces raisons rendent les tests logiciels plus convaincants.

0
Alex

Tous les programmes ont des bugs, au moins pour commencer.

Certaines études ont été convergent sur environ 1 bogue par quinze lignes de code non testé.

Une leçon d'histoire:

Dans les années 1960, IBM avait besoin d'un programme "NOP" afin qu'ils puissent exécuter certaines fonctionnalités dans JCL sans exécuter un programme. Les développeurs ont proposé un programme d'assembleur d'une ligne dans laquelle le code complet a été contenu dans son nom "IEFBR14" le code réel:

       BR 14 * brach to return address in register 14

Au cours de son long life, ce programme d'une ligne a été soumis à 2 rapports de bogues et cinq amendements.

0
James Anderson