Si le test unitaire est si grand, pourquoi ne sont pas plus les entreprises à le faire?
La première véritable société de logiciels que j'ai travaillé sur les tests unitaires (NUnit). Je ne sais pas qui nous étions réel pointilleux pour ça -- je n'ai aucune idée de ce que notre couverture de code était et j'ai écrit la plupart des tests unitaires. Depuis lors, je ai couru dans quelques entreprises qui font beaucoup de tests, mais il est président de test: s'appuie sur une personne il y, a une faible repeatibility et une faible chance d'attraper des insectes. L'autre attitude est: "c'était quelque chose qu'il voulait y aller avec "dans l'avenir"; fondamentalement, quand l'argent tombe du ciel.
Je manque de tests unitaires -- c'est juste rend la vie plus facile. Mais je trouve que quand je regarde pour un nouveau travail, le test unitaire est quelque chose que les entreprises à "s'y mettre" dans l'avenir ou quelque chose qu'ils ne font pas du tout (ouf, il a été autour pendant un certain temps maintenant!). Je dirais qu'à 60-75% de l'emploi reqs j'ai regardé au cours des 2 dernières années n'ont pas répertoriés unité de dépistage à tous. Je ne peux que penser à un ou deux qui avaient tests unitaires expérience comme une exigence (pour un niveau intermédiaire développeur position).
La question est donc, ce qu'il manque,? Je pense que ça rend les gens plus productifs, mais c'est seulement après avoir passé une solide quantité de temps de le faire réellement. Ne sont pas là toutes les bonnes études sur les économies de coûts de tests unitaires? C'est le type de société que je suis en train de regarder?
Edit: même si le titre est un peu diables-avocat, je me considère comme un test unitaire promoteur.
- Ce genre de domaine travaillez-vous dans? J'ai toujours rencontré des tests unitaires, de varier à l'exhaustivité, partout où j'ai travaillé. Mais mon expérience se situe dans l'imagerie médicale et industrielle, de sorte que peut-être pourquoi...
- Ouais, je suppose que vous avez raison. Mon domaine est généralement line-of-business apps; pas de sa vie dans la balance. Mais parfois, certains de facturation dans la balance, et qui peuvent obtenir coûteux.
- Ce qui est président de test?
- Président de test: elle est assise dans le fauteuil, les lecteurs de l'application, des rapports de bugs.
- doit avoir 50k upvotes pour son honnêteté. Allez les vieux chefs, obtenir la hanche pour le temps d'aujourd'hui. Garder que les tests unitaires de la merde dans les années 90 où il appartient. Plus grande perte de temps. C'est juste quelque chose à porter de sorte que vous pouvez paraître important, mais ne fait absolument rien dans la plupart des cas. Nous avons quelque chose qui s'appelle une IDE de ces jours, nous ne sommes pas de la programmation par la console ou dans le bloc-notes plus. Nous savons que notre code est correct parce que nous pouvons le curseur sur le texte et voir les valeurs. Gardez les tests unitaires dans le passé avec tous les autres vieux de la vieille.
- Ouais, en passant la souris sur les valeurs au sein de votre IDE va vraiment aider à améliorer la qualité du code. Parce que l'état sera toujours le même, et le code ne changera jamais. À droite sur la! Et bonne chance.
Vous devez vous connecter pour publier un commentaire.
Dans mon expérience, il ya un couple de facteurs impliqués dans ce:
Naturellement, il y a d'autres facteurs, mais ce sont juste ce que j'ai pu croiser jusqu'à présent.
1) Il est difficile
2) Il faut du temps
3) Il est très difficile de déterminer la valeur de code de test
Point 3 est un pense-bête. Bon les tests unitaires de réduire les bugs. Mais bon code de production. Comment déterminez-vous de nombreux bugs n'existent pas à cause de vos tests unitaires? Vous ne pouvez pas mesurer ce qui n'existe pas. Vous pouvez pointer vers des études, mais ils ne sont pas parfaitement sur votre gérant d'affaires de la feuille de calcul.
Il est facile de mettre tout le blâme sur “gestion”. Mais est gestion vraiment vous dire précisément pas faire tout les tests unitaires?
De gestion en général n'est pas (et ne devraient probablement pas) de vous dire comment faire votre travail, si c'est la modularisation, les types de données abstraites, des modèles de conception, ou de tests unitaires. Ce sont des outils de trade réussi, compétente ingénieur logiciel s'applique, mais un pauvre ingénieur ne.
Je pense que la vraie réponse à votre question est: le test unitaire est vraiment difficile, et les étudiants en informatique ne sont pas formés pour cela.
Il est facile, quand vous écrivez votre propre classe string. Lorsque vous testez une vraie vie de produit, vous faire face à des défis que personne ne vous a parlé dans les diapositives powerpoint:
La seule chose que nous pouvons blâmer de gestion pour est que le cahier des charges contiennent rarement des exigences sur le niveau de qualité de la prestation.
La prochaine fois que votre patron vous demande de faire une estimation du temps, inclure le temps pour l'écriture d'une unité de tester et de voir ce qui se passe.
La plupart des tests ne sont pas tester n'importe quoi.
Vous écrivez un fileopen() et la fonction d'un unittest qui échoue si le fichier n'existe pas et réussit si le fichier n'existe pas.
Super! Maintenant, avez-vous vérifier si cela fonctionne, avec le nom de fichier dans BIG5 chinois? sur un partage NFS? sur vista avec le fichier sur une clé USB et l'UAC activé?
Le problème est que les tests unitaires sont écrits par le même programmeur qui a écrit la fonction, pour le même ensemble d'hypothèses et avec le même niveau de compétence.
Vraiment le travail, les tests doivent être écrit par quelqu'un d'autre, uniquement pour la publication de spécifications sans les voir le code. - Dans la plupart des sociétés qui viennent d'être écrite specs serait une percée!
Des tests unitaires pour vérifier les erreurs dans le code des fonctions individuelles. Ils peuvent travailler pour les couches d'accès aux données, mathématiques bibliothèques, etc, où les entrées/sorties sont bien connues et la structure interne est complexe, mais pour beaucoup de cas, ils sont juste une perte de temps.
Ils échouent lorsque les erreurs sont dues à des interactions entre les différentes parties de code ou avec le système d'exploitation et l'utilisateur. Des problèmes comme le haut/bas des paramètres PPP gâcher une boîte de dialogue ou dans une langue étrangère réglage de l'échange d'un '.' et ',' on ne retrouve habituellement pas.
Il y a eu des études de faites sur le ROI de tests unitaires - voir cette question.
J'ai trouvé beaucoup de développeurs qui ne sont pas intéressés par les tests unitaires. Il semble que beaucoup de travail avec peu de récompense lorsque vous démarrez. Personne ne veut signer pour le travail supplémentaire et donc, ils résistent. Une fois que les gens commencent, ils ont l'habitude avec enthousiasme rester avec elle, mais les mettre en route peut être difficile.
À côté de la question de l'adoption de tests unitaires, tests unitaires n'est pas toujours la peine, même si en général, je pense qu'il est, lorsqu'il est appliqué correctement. Il n'y a rien de spécial au sujet des tests unitaires qui sauve d'être vulnérable à une mauvaise construction.
Les tests unitaires ont des coûts (création, maintenance, et en cours d'exécution) et ne sont valables que si elles offrent des avantages supérieurs à ces coûts. La création de tests est une compétence comme une autre, elle exige de l'expérience et des connaissances pour le succès. Sans suffisamment d'expérience, c'est très facile, même pour les développeurs expérimentés pour créer de faible qualité, de faible valeur, et/ou le coût élevé des tests unitaires qui ne sont pas en vaut la peine. Particulièrement compte tenu de la façon dont il peut être difficile de juger de la valeur d'une unité de test.
En outre, le test unitaire est juste une façon d'améliorer la qualité du code, mais ce n'est pas la seule façon. Dans certaines circonstances et à certaines équipes il peut ne pas être le moyen le plus efficace pour augmenter la qualité du logiciel.
Garder à l'esprit que le fait de mettre beaucoup d'efforts dans l'unité de test n'est pas une garantie de qualité d'un logiciel. Et, aussi, il est possible de produire des logiciels de la plus haute qualité, sans tests unitaires que ce soit.
Bien, mon entreprise n'est pas allé avec le TDD ou des Tests Unitaires. Pour être honnête, nous ne sommes pas sûr de savoir comment faire. On peut évidemment le faire pour des imbéciles, comme les fonctions CapitalizeString(), etc, mais nous ne savons pas comment le faire pour des systèmes très complexes avec des objets compliqués. En outre, la plupart des personnes interrogées ont zéro de l'expérience ou une expérience limitée. Il semble que le Test Unitaire est gros de la foule, mais pas particulièrement grand dans les workpool.
TDD est un sujet distinct. Nous sommes moralement opposé à l'ATS. Nous ne sommes pas des cow-boy des codeurs, mais nous croyons qu'elles freinent la créativité et de la flexibilité dans un projet. En outre, le programmeur qui a écrit l'unité de la fonction de test n'a pas de sens. Quand je fais quelque chose, je code à tous les cas de bord je pense. Ce dont j'ai besoin est un autre cerveau pour des choses que je pourrais avoir manqué. Nous n'avons pas. Les équipes sont petites et autonomes.
En bref, nous ne croyons pas en mode TDD, mais nous aimerions Unité de Test. Nous n'en avons pas l'expérience pour le faire, et nous ne pouvons pas le trouver facilement.
Il ya beaucoup d'entreprises là-bas qui vraiment ne rien faire sur le modèle de meilleures pratiques. Aucun des revues de code, pas de test, pas de plans de tests, sans rien, juste par le siège de leur pantalon.
Prendre cela comme une opportunité pour les amener à utiliser une plate-forme d'Intégration Continue et de développer des tests unitaires! Moyen facile pour impressionner les pouvoirs en place et d'augmenter la qualité et la stabilité de votre code en même temps
Edit: Comme pour la raison, je pense qu'ils viennent de la plaine ne sont pas au courant des outils là-bas qui font CI et les tests unitaires extraordinairement facile.
Les tests unitaires doivent être juste une partie naturelle de l'élaboration du code de flux de travail, tout comme le compilateur est.
Toutefois, cela exige une formation de gestion sur les avantages de l'appareil de test. Les développeurs juniors ont relativement peu de chances d'avoir une telle influence, cependant. Ainsi, si une société est un promoteur de l'unité de test dépend si ils ont un senior développeur ou architecte qui est un défenseur de tests unitaires.
Je crois que c'est la réponse à votre question "ce qu'il manque, et pourquoi ne sont pas plus les entreprises qui font des tests unitaires". 🙂
C'est probablement une combinaison d'un couple de choses que vous avez mentionnées déjà. Il est difficile de mesurer les économies de coûts de TDD. Si vous souhaitez externaliser votre, vous pouvez montrer combien vous payez par an pour les gars vous avez du personnel par rapport au coût de la passation des marchés; en sa très concret. Comment voulez-vous dire, "Oh, ce test a attrapé un bug qui m'aurait pris 4 heures à déboguer et résoudre..."?
La raison pour laquelle certains endroits ne pas l'utiliser est tout simplement parce que cela prend beaucoup de travail à la fois pour commencer et à continuer. Le fait que l'écriture de tests unitaires prend presque autant de temps que l'écriture de la fonctionnalité réelle semble à certains gestionnaires comme vous êtes à la coupe de votre développeur de la productivité dans la moitié.
Sur le dessus de cette, vous générez de l'équipe (ou quelqu'un) doit mettre en place l'infrastructure et de l'entretenir.
Et comme Alan dit, beaucoup d'endroits n'ont tout simplement pas utiliser les meilleures pratiques - ils veulent juste voir quelque chose de tangible.
Je ne pense pas que la paresse est la cause de racine de mauvais tests unitaires. Pour mon entreprise, les contraintes de temps et de "juste le faire" l'attitude sont les plus grands moyens de dissuasion pour faire des tests unitaires. Aussi, les endroits où notre échec des systèmes ont tendance à être plus au niveau d'intégration (services, accès base de données, des requêtes complexes qui nécessitent des données pour les tests), et non pas "au niveau de l'unité." Ces choses sont juste plus difficile à tester, et si vous avez à peine assez de temps pour obtenir la fonction fait, vous n'allez probablement pas eu le temps de faire tout les tests effectués en même temps.
Je pense que le programmeur doit juste commencer à le faire. Quelques tests simples pour commencer sont faciles à justifier dans le cadre de développement.
Quelque chose comme un test unitaire est presque toujours nécessaire pour obtenir rapidement et le débogage de tourner autour. Expliquez comment beaucoup plus rapide c'est de lancer le test qu'il est d'organiser l'entrée correcte, définir un débogueur point d'arrêt, le lancement de l'application, etc.
Document le test dans votre code. Il suffit de mettre un commentaire expliquant où le test est et comment l'exécuter. Les futurs programmeurs vont le voir et j'espère que le test de propagation de!
De ce que j'ai vu, beaucoup d'entreprises ont d'énormes, fortement couplé aux bases de code qui ne sont pas pratiquement unité vérifiable. De plus, elles n'ont pas décent testables, de sorte que les tests unitaires à l'essai contre "tel que construit" de facto exigences.
Le test unitaire est un de ceux de la boîte noire termes que la plupart des gens ont entendu parler, mais vous ne savez pas ce qu'est exactement un test d'unité, par où commencer, comment l'écrire, comment fait exécuter les tests, qu'est-ce exactement qu'ils devraient tester, etc. etc. etc.
Dans beaucoup de cas, il est plus facile pour le doute développeur de simplement le rejeter comme inutile ou du glaçage que "le niveau de l'entreprise développeurs" ont besoin.
Je suis un grand fan de tests unitaires et je suis aussi un partenaire dans une société de développement de contrats de projets pour différents types de clients. Dans un mois nous allons aborder 3-4 différents projets de différentes tailles.
Si un projet semble que cela va être un, je ne vais pas investir lourdement dans de test parce que les tests unitaires ne pas payer pour mon entreprise. Sur ces types de projets, je vais test de l'unité des choses que je suis incertain/pas familier avec ou qui pourrait changer fréquemment (comme un analyseur syntaxique pour une source de données je n'ai pas de contrôle.)
Alors que si je suis en train de construire quelque chose que je connais va avoir une longue durée de vie, est un grand morceau de travail, que je vais travailler avec par de multiples itérations, ou aura un grand impact sur mes clients si une erreur se produit, je vais investir dans plus de tests unitaires. De nouveau la priorité de tests tourne autour de l'incertain/inconnu/modifier le code.
Je pense que les tests unitaires doivent tourner autour de la complexité d'une tâche, ainsi que de savoir si ils vont payer. Il n'y a pas de sens d'écrire du code supplémentaire qui n'est pas utilisé.
Dans mon expérience, cela dépend vraiment sur le logiciel de gravure. Je trouve qu'il est extrêmement difficile d'écrire des tests unitaires pour une INTERFACE utilisateur. Je n'utilise que des tests unitaires pour les parties du système qui ont une certaine in/out.
Qui est pas, vraiment, une raison suffisante pour une entreprise d'adopter des tests unitaires.
Une raison suffisante pourrait être "moins cher" (et/ou, le "mieux"): ce qui n'est pas aussi facile à prouver sur les tests unitaires.
La seule bonne raison pourrait être "l'écriture de tests unitaires est la meilleure utilisation de développeurs "temps", qui est vraiment difficile à prouver l'OMI: et c'est peut-être vrai dans certains endroits, pour certains logiciels, avec certains développeurs, et pas vrai ailleurs.
Il y a beaucoup de développeurs qui ne pense pas que le monde de tests unitaires: y compris certains qui pensent que d'autres formes de contrôle (par exemple, automatiser l'intégration/tests fonctionnels) peut être moins cher et de plus précieux, par exemple Suis-je le seul dev qui n'aime pas les tests unitaires?
Bien sûr, dans le monde idéal, vous ne pouvez pas argumenter contre le fait d'avoir un test unitaire.
Toutefois, si vous écrivez un test unitaire dépend d'un certain nombre de choses:
La façon dont le logiciel sera utilisé. Si vous étiez un logiciel d'écriture pour vous-même voulez-vous écrire des tests unitaires? Probablement pas. Si vous avez écrit pré-emballés logiciel afin d'être vendu dans le commerce, oui, probablement.
La façon dont beaucoup de gens à maintenir le code....si c'est juste pour vous, alors vous savez peut-être assez bien pour être suffisamment en confiance après avoir fait un changement d'une course rapide à travers le code est suffisant pour s'assurer que rien n'a cassé. Si d'autres personnes qui n'ont pas à l'origine de l'écriture du code doivent désormais tenir alors une unité de test vous aider à donner confiance en eux que quand ils mettent à jour le code pour résoudre un grand (ce n'est évidemment pas prises en compte par l'unité de test!) ils n'ont rien cassé.
la complexité de code: seul le code de test qui a besoin d'un test. Une une ligne de la variable méthode d'affectation n'a pas besoin de test. 50 méthode de la ligne avec de multiples chemins d'exécution ne doute.
Pratiques commerciales des considérations commerciales: Le fait est que l'écriture des tests unitaires ne prend plus que ne pas le faire. Si vous écrivez un prototype de logiciel, qui a un commercial incertain l'avenir, alors il est payer pour être a entre le fait d'avoir un code rapidement, maintenant, qui fonctionne assez bien au lieu d'avoir l'unité de code testé dans les 2 semaines qui fonctionne mieux. Parfois, il paie à trouver rapidement des consommateurs (appétit) si le logiciel va avoir une courte durée de comme et de passer au projet suivant.
et comme d'autres l'ont souligné, un test est seulement aussi bon que la personne qui l'a écrit.
La raison principale est que de nombreux développeurs et responsables du développement n'ont pas la moindre idée de l'unité qu'il existe des tests, ou comment les utiliser.
La deuxième raison est que les tests unitaires ne peut être utilisé (de manière raisonnable) avec le code répond à certaines normes de qualité. Les Chances sont, que certaines base de code existante ne tombent pas dans cette catégorie.
La troisième raison est de paresse et/ou bon marché.
Parce que les tests unitaires ne sont utile que si vous écrivez du code de tests. Et l'écriture de code de tests est dur. Et les gens sont paresseux et /ou à bas prix.
EDIT : nuancée "paresseux" comme "paresseux et /ou bon marché" ; quelques rares fois, des personnes qui ont les compétences et la capacité et la volonté d'écrire des tests, mais ils ont autre chose à faire que de plus en plus affecte directement la ligne de fond.
Je pense qu'une partie du problème est que les développeurs attendent de gens d'affaires ont le même ensemble de valeurs et de vraiment se soucier de la réponse à "devrions-nous l'unité de test ou pas?". Nous n'avons pas d'obtenir l'approbation préalable de l'entreprise à utiliser un langage de haut niveau plutôt que de l'assemblée de la langue, c'est juste généralement la meilleure façon de faire le travail.
Le point est, nous sont les seuls qualifiés pour effectuer l'appel (ce qui n'est pas de dire que nous avons tous les mêmes connaissances sur le sujet). En outre, même si votre équipe n'est pas, comme une question de politique, de faire des tests unitaires (ou nom-de-votre-méthode-de-la-journée), il généralement ne veut pas dire que vous ne peut pas le faire.
La vérité est, on ne peut pas vraiment prouver le retour sur investissement de la plupart des choses que nous faisons, à trop fine, d'un niveau de granularité. Pourquoi le test unitaire est tenue jusqu'à ce déraisonnable/non-standard de la preuve est au delà de moi...
Les gens sont paresseux et seulement adopter des changements lors de la obligé de.
Mes 2 cents:
Donc, c'est juste une question de temps.
Il y a le Martin-Coplien débat dans lequel Bob Martin affirme que:
[http://www.infoq.com/interviews/coplien-martin-tdd%5D
Si vous voulez vendre de tout le monde sur le test d'effectuer les opérations suivantes:
Même un gestionnaire pourrait le comprendre.
Les entreprises ne sont pas d'effectuer les tests unitaires, pour la même raison que de nombreux sites sont écrits mal de l'ignorance, et les gens de coller à leurs vieilles habitudes.
Dans mon entreprise, depuis que nous avons commencé les tests unitaires (avec Nunit, et Typemock), nous arrivons à plus de couverture de code et l'utilisation du logiciel dans un temps plus court du marché.
Comme la plupart des bonnes idées, l'adoption a plus à voir avec la dépendance du sentier qu'à la qualité de l'idée.
Dans la plupart des entreprises qui ont des produits expédiés, une importante QA division a été créée avec un haut niveau d'AQ de la tête. Le test est le fief de l'équipe d'assurance qualité.
L'équipe d'assurance qualité est rare d'écriture de l'unité de test de code parce que la société n'a généralement pas le personnel de l'équipe d'assurance qualité avec ses lourds codeurs.
L'équipe de programmation est réticent à écrire le code de test, car il crée un conflit avec l'équipe d'assurance qualité.
J'ai été voir plus d'intérêt et de l'adoption de Tests Unitaires dans des groupes où QA n'a pas été défait dans un autre emploi de la fonction
Simple, il coûte de l'argent à rédiger et mettre à jour les tests unitaires. La plupart des entreprises précédente du logiciel ne dispose pas de tests unitaires et coûtera trop à écrire. Afin de ne pas le faire et il ajoute de temps pour le processus de développement, afin qu'ils ne pas ajouter de nouvelles fonctionnalités.
La plupart des entreprises sont inutiles. Pas celui que vous (ou moi) de travail, évidemment.
Deux choses sont des obstacles à l'unité de test
Dans mon entreprise (> 5.000 emp) des tests unitaires "sont là", mais aucune chance de faire TDD ou obtenir une grande couverture de code. C'est difficile à accomplir.
J'ai travaillé pendant 3 entreprises jusqu'à présent, et ont récemment commencé à écrire "officiel" tests NUnit, et je dois dire que je suis un grand fan. Il y a 2 points que j'ai remarqué cependant, dans les dernières semaines:
Il dépend de l'application - il y a certaines apps/pièces d'une application qui peut être très facile de test de l'unité. Une fonction qui fait quelque chose de fondamentalement la même, à chaque fois, et produit une forme aisément reconnaissable résultat. Et il y a des sections qui ne pas ce faire: un bloc de code qui imprime crystal reports ou modifie une image - ici, le globe oculaire est en fait nécessaire et probablement mieux/plus vite. Ces zones peuvent décourager les gens d'essayer d'écrire des tests. Ils ont ensuite seulement commencer à penser que si certaines zones ne peuvent pas être l'objet de tests unitaires, pourquoi s'embêter?
La granularité de l'essai - beaucoup de DEVs/Sqr ont déjà une certaine sorte de l'automatisation en place afin de "tester" un morceau de fonctionnalité, et d'obtenir confus quant à la façon de ce qui est différent d'un test unitaire. En fonction de leur test, il peut ne pas l'être. La chose importante ici que prend le temps d'apprécier un bon test de l'unité est totalement granulaire. Il teste le minimum morceau de logique qui fait sens, ce qui en fait reproductible, automatique, et espère toujours valide. Il m'a fallu un peu pour vraiment apprécier l'utilité que ça, surtout quand vous avez un énorme base de code et exécuter des tests de régression après avoir fait un changement, pour voir si vous venez de foobared l'ensemble de l'application.
Je pense que c'est la peine d'écrire une bonne couverture de tests unitaires pour le code que vous allez travailler avec un chemin vers l'avenir. Par exemple, lorsque vous travaillez pour une société de produits de, par la qualité d'écriture de l'unité des cas de test, vous êtes tout simplement faire un investissement en temps, en sachant que tout le dur travail de la rédaction des cas de test sera payante et rendre votre vie plus facile en bas de la ligne.
La triste vérité est que beaucoup de programmeurs de logiciels de travail en interne le développement de l'application ou de la passation de marchés et de juste essayer d'obtenir certains logiciels hors de la porte. Dans ces cas, l'investissement en temps ne fait pas beaucoup de sens, car les chances sont que vous ne verrez jamais ce tas de code à jamais.
Nous pouvons tous font valoir que l'adhésion à de solides pratiques de développement logiciel est de la responsabilité de chaque développeur. Cependant, ROI signifie beaucoup pour les développeurs que pour la gestion.
Cela va sembler un peu comme une réunion des AA.
Je suis un ingénieur en logiciel.
Je parlais de génie logiciel à mon frère à NOËL (il est un analyste d'affaires).
années.
les tests.
les tests.
le grand "alphabet" les entreprises, sur de gros contrats avec le gouvernement.
Pour autant que je puisse en juger, de le 100 de développeurs impliqués, aucun d'eux n'avait entendu parler de tests unitaires.
Mes prédécesseurs dans mon travail actuel utilisé automatique de tests de validation, et avait très peu de tests unitaires. Inutile de dire que le code de besoins lourds de refactoring.
Je pense que la principale raison est tout simplement que la plupart des gestionnaires et développeurs ne s'en soucient pas assez sur la qualité. Ils ont donc tendance à croire que l'écriture et l'automatisation des tests unitaires est tout simplement trop d'effort (ce qui est effectivement) pour peu d'avantages.
Peut-être il n'ya pas beaucoup que nous pouvons faire sur les avantages, mais nous devrions être en mesure de réduire les coûts de création et d'exécution de tests par l'amélioration des outils pertinents.
Je trouve le plus courant d'outils open source pour les développeurs de tests pour être tout à fait primitive. Malheureusement, il ne semble pas exister beaucoup d'intérêt dans l'industrie pour améliorer cette situation.
Je connais une personne qui va regarder un formulaire avec un seul bouton et dire "C'est exagéré, ce qui devrait avoir une interface en ligne de commande, de sorte qu'il peut être automatisé dans un script" et pourtant il n'a jamais vraiment eu derrière des tests unitaires. Je n'ai tout simplement pas l'obtenir. La peur du changement pourrait être de la partie, mais j'ai offert à marcher à travers le processus, et il a diminué.
Évidemment, ma société actuelle ne les appliquent pas, j'ai juste pris sur moi de les écrire, si possible. J'ai trouvé que la mise en place des tests jusqu'mène de front à l'écrit, où doivent figurer mieux/nettoyeur de code, parce que, dans la pensée de la façon de tester quelque chose, vous pouvez généralement considérer qu'elle est une utilisation ultérieure.
L'unité de test est excellente (facile à mettre en œuvre, facile à déterminer que vous avez écrit assez d'exemples de test) lorsque vous avez un code qui fonctionne comme un serveur.
Exemple 1: Vous devez marquer dans la base de données de postes qui ont 3 ou plus modérateur du site examens
Quels sont les tests de variantes
explicite?
Exemple 2: Vous avez un site web page qui affiche la liste des postes
Comment il est conseillé de vérifier que cette liste n'est pas alignée dans certains navigateur?
Comment il est conseillé de vérifier que cette liste est de couleur correctement et nous n'avons pas écraser les styles?
il n'y a pas de solution facile à automatiser cette
donc, la tâche lors du test de l'unité de la création est de comprendre - pouvez-vous mettre le code dans le serveur en mode de fonctionnement - si vous pouvez créer un test, si ne puis casser en morceaux et de créer de test pour les pièces ou test manuellement.
Et encore une chose - l'économie de tests unitaires, vous obtiendrez si vous avez plus de 10-12 phases d'essais, sans modification de code.
Ce qui concerne,
Pavel