Transcription
1. Introduction: Salut là. Mon nom est un signal pour votre patron. Je suis dans Agile Coach. Et j'ai été professeur à l'université pendant 15 ans. Système d'enseignement des signes et des méthodologies agiles. J' ai appliqué le développement piloté par test En travaillant comme architecte d'emplois pendant de nombreuses années. Ça vous dérange si je bois mon café ? Cherchez-vous à faire les premiers pas avec le développement motivé par la mort ? Cette malédiction vous apprendra l'état d'esprit du DVD de la bonne façon. Avec sa vraie philosophie. Nous verrons concept clé dans le département pour la conception émergente de test unitaire re affacturage odeur seulement double marques sur les démarrages. Vous travaillerez également sur un projet faisant appel à la TD. J' étais à l'origine fasciné par le développement piloté par les tests en 2009. À cette époque, j'ai appris l'état d'esprit clé soussigné cours de Nativité que j'ai amélioré au fil des ans sous le levier de centaines d'étudiants. Je suis vraiment excité de pouvoir mettre ce cours en vie pour vous tous.
2. Comment tirer le meilleur parti de ce cours ?: Bienvenue sur mes courbes Skillshare. Je suis tellement heureuse que tu sois
là et que tu sois prête à apprendre. En suivant ce cours. Vous avez déjà montré que
vous êtes déterminé à améliorer vos compétences et à faire passer votre créativité
au niveau supérieur. Maintenant, prenons en compte votre enthousiasme. Interaction intacte,
consultez la section projet et ressources
de ce projet, je vous mets au défi de mettre vos
nouvelles connaissances en pratique. Utilisez ce que vous avez appris et
créez quelque chose d'incroyable. N'ayez pas peur d'expérimenter
et de repousser vos limites. N'oubliez pas que la seule
façon de grandir est de sortir de
votre zone de confort. Je vous encourage à laisser une question dans la section de
discussion. C'est une excellente occasion d'entrer
en contact avec d'autres apprenants sur moi et d'
obtenir des commentaires sur votre travail. N'hésitez pas à
demander de l'aide si vous en avez besoin. Nous sommes tous là pour apprendre ensemble de
manière non partagée. Enfin, je serais honoré si vous pouviez laisser un
avis sur ce cours. Vos commentaires sont
essentiels pour m'aider à m' améliorer et à rendre les prochains
cours encore meilleurs. Dites-moi ce que vous aimez. Qu'est-ce qui vous pose un défi ? Et toutes les suggestions
que vous pourriez avoir. J'apprécie votre opinion et j'
apprécie le temps que vous m'avez accordé. Maintenant, commençons ensemble ce projet
passionnant.
3. Configuration de projet: pour mettre en place le travail des orteils du projet de base le long de la boutique de guerre. Vous aurez besoin de cloner le projet suivant à partir de Get Cub So d'abord télécharger et installer Jabba J K Télécharger et installer Eclipse I D e Une fois dans un clip, aller au fichier import get dossier projet de Geet. Clonage suivant, vous êtes je prochaine à nouveau entré un u R I à partir de la description du projet ou de la vidéo. Vous n'avez pas besoin d'un utilisateur passable ici, alors cliquez simplement sur suivant. Vous pouvez laisser les paramètres d'automne et cliquez simplement sur suivant jusqu'à ce que vous cliquiez sur la fin en bas. Une fois l'importance faite, ouvrez le projet. Il est bon d'aller à P O M XML. Cliquez avec le bouton droit Run us maven clean Et puis à nouveau, droit Cliquez sur Exécuter nous maven Installer. Une fois que vous êtes prêt, allez à sert tâche de test A dossier, clic
droit pour exécuter US J test unitaire. Donc maintenant tout le test doit être vert avec référence les classes principales que vous allez commencer travailler sur notre le verre de test de vente sur le verre de test de commande
4. Qu'est-ce qu'un essai d'unité ?: tests unitaires. Commençons par définir ce qu'est un test unitaire ? Un test unitaire. C' est un morceau de code écrit par un développeur avec un framework ou une bibliothèque que nous appellerons
unité X. Non, le mot unité X. Elle sera remplacée par le nom du framework dans votre langage de programmation. Par exemple, en Java, vous pouvez le savoir comme unité J en PHP, il sera unité BHP, unité CPP pour bus excédentaire et unité pour les Nets par unité pour python sur donc un pour différents langages de
programmation. Un test unitaire est un morceau de code automatisé qui appellera une partie du code de production hors du système rial que nous appellerons unité de travail. Lorsque nous exécutons ce Tesco, il exécutera le code de production pour valider une seule hypothèse sur son comportement. Selon certaines fonctionnalités, lorsque vous exécutez le test unitaire, il y a deux résultats possibles que le bureau échoue ou nous pouvons dire rouge. Dans ce cas, l'unité de travail ne fait pas ce que le Tesco est soupçonné. Ordre. Le test est réussi ou vert. Dans ce cas, l'unité de travail est satisfaisant et les attentes du test unitaire donc Qu'est-ce que c'est ? Unités de travail ? L' unité de travail testée est une fonction logique unique hors du cas d'utilisation dans le système qui peut être impliquée par votre interface publique. Une unité de guerre peut être une seule méthode, classe
entière ou plusieurs classes travaillant ensemble pour atteindre un seul but que nous
voulons vérifier. Généralement, vous aurez de nombreux tests unitaires pour couvrir la plupart des cas hors de chaque unité de travail. Alors, quel est l'avantage de faire ça à première vue ? Vous pourriez penser que l'avantage est de faire quelque sorte de Justine ou de Q A. Mais en fait, ce n'est pas le cas. La valeur réelle pour les développeurs ont dans la production, appelée secrète par des tests unitaires, est que vous pouvez améliorer le manteau. Vous allez améliorer l'appelé en faisant re factoring et les changements en toute confiance, parce que si vous cassez certaines fonctionnalités tout en faisant vos changements, le test vous dira que quelque chose ne fonctionne plus afin que vous puissiez le réparer. Par conséquent, vous voudrez peut-être couvrir le code de production avec plusieurs tests unitaires que vous exécuterez tous ensemble
très, très souvent ce test et sûr que le tribunal fonctionne nous prévu après avoir changé le code
5. Exemple de test unité: exemple de test unitaire. Jetons un coup d'oeil à un exemple d'un test unitaire. Ici vous pouvez voir une classe sur le code de production hors système de vente point hors vente. Fondamentalement, agit d'une classe appelée Fail, qui a une propriété pour le montant total de la vente. Un constructeur pour créer une vente avec son montant total. Un getter sur une méthode appelée get change qui renvoie le changement que le client doit recevoir lorsque la douleur en espèces avec un certain montant. Alors, à quel point vous testez que cette méthode fonctionne correctement. Par exemple, vous pouvez imaginer que s'il y a une vente sur 77 la base de clients avec 100 la méthode doit renvoyer 23. Allons nous faire un test. Donc, d'abord, créons une classe de test appelée test de vente. Habituellement, il y a une relation de 1 à 1 pour chaque classe de production pour une classe de test que cette classe a le même nom, mais avec le mot de test a spécificités. Dans certaines occasions, il peut y avoir une relation de un à plusieurs d'une production, plus trop de verres morts dans un test unitaire. Il y a trois sections. Organisez où vous définissez, créez ou récupérez les objets que vous utiliserez pour votre test. Dans ce cas, nous voulons créer une nouvelle voile avec des montants de 77. La deuxième section est appelée Loi où vous exécutez les actions que vous souhaitez tester. Dans ce cas, nous voulons appeler. Ils obtiennent changé méthode avec le paramètre off 100 pour indiquer que le client veut payer avec 100 sur la dernière section est appelé 1/3 quand nous sommes fermes que quelque chose est arrivé US un résultat sur les actions qui ont été exécutées dans ce cas, nous voulons affirmer que le changement calculé Waas 23. Ces trois sections sont connues sous le nom de trois as Arrangement Act affirment. Maintenant que nous avons notre test unitaire, nous pouvons l'exécuter. Disons et malheureusement c'est rouge. Il est fané. Que s'est-il passé ? Tu peux le sentir dehors ? Jetons un coup d'oeil à la co de production à nouveau. Donc, nous voyons que la formule de cette instruction dans la méthode get change est incorrecte. Ça devrait être l'inverse. Ce sera le montant. Les mineurs obtiennent le total. Tu t'es rendu compte qu'avant de passer le test, tu l'as
peut-être fait ? Peut-être pas, et c'est bon parce que nous sommes des humains, surtout quand nous construisons des choses ou faisons des inspections visuelles. Nous avons tendance à être trop confiants. C' est donc un exemple de la façon dont nous pouvons superviser quelque chose de vraiment simple et supposer qu'il est correct jusqu'à ce que nous le testions. Alors corrige cette méthode. Nous allons réécrire cette obstruction montant US. Les mineurs obtiennent le total. Maintenant, nous sommes prêts à refaire le test sur son anneau. Maintenant, ça marche.
6. Bon test d'unité : D'abord: comment écrire de bons tests unitaires, et nous avons fait référence au coin lui d'abord pour comprendre où nous en sommes avec test unitaire, examinons à un niveau élevé les niveaux les plus importants hors test dans au plus haut niveau, vous avez les tests fonctionnels. Cela signifie tester une fonctionnalité Slice Off dans le système qui peut interagir avec d'autres dépendances pour confirmer que le froid fait les bonnes choses selon les spécifications. Ici, tu fais le système, salaud. Les tests d'intégration signifient que nous vérifions que les différents modules fonctionnent bien. Un ensemble nous a réunis
Groupe A. Le but de ce niveau de test est d'exposer faux dans la direction entre les unités
intégrées qui ont besoin de collaborer les unes avec les autres. Et enfin, tests
unitaires, où nous voulons tester des modules individuels souvent application, mais isolément. Cela signifie, sans aucune interaction avec les dépendances réelles, de confirmer que le froid fait les choses correctement. Les tests unitaires sont la responsabilité du développeur de garantir qu'ils sont appelés travaux ? Eh bien, quel est un bon test unitaire pour décrire et se rappeler comment un bon test unitaire. On dirait que nous avons utilisé l'accordéon en premier, où pour chaque cuir nous avons un mot pour se souvenir de certaines caractéristiques. Fost un bureau de l'unité doit fonctionner très vite. Nous parlons de millisecondes indépendantes. Chaque test unitaire doit être indépendant les uns des autres et ne pas dépendre des résultats
des autres tests. Les tests réputés devraient être répétables dans n'importe quel environnement sans variété de résultats. Auto-validation. Aucune inspection manuelle n'est requise pour vérifier si l'essai a réussi ou échoué. Pleine à ce Moscou sur chaque scénario de cas d'utilisation, mais pas nécessairement pour une couverture 100%. Jetons un coup d'oeil à chacune de ces caractéristiques rapidement. Un test unitaire doit être très rapide. On parle de millisecondes. Rappelez-vous que vous aurez des milliers de tests dans votre projet, donc s'il y a faible, vous pourriez vous sentir réticents à les exécuter sur. Les développeurs ne doivent pas hésiter à exécuter le test parce qu'ils sont lents sur le pays. Ils doivent être à l'aise avec tous les courir très fréquemment, comme toutes les quelques minutes indépendantes. Certaines personnes peuvent les qualifier d'isolés. Chaque test unitaire doit être indépendant l'un de l'autre. Lorsque vous exécutez un test, il ne doit pas affecter le résultat des autres tests. essai ne doit pas dépendre de l'état de l'essai précédent, qu'
il s'agisse d'un objet ou de métaux moines. Cela vous permet d'exécuter chaque bureau individuellement en cas de besoin, ce qui est susceptible de se produire si un test échoue, comme vous voudrez Divac en remorquage. Une méthode. Concentrez-vous sur la scène ce qui ne va pas et ne pas avoir à exécuter d'autres tests. Si vous avez un test qui vérifie ou plus défini certaines données, alors ce jour-là, elle sera créée dans la mise en place du test sont supprimés par la suite, sorte que ce n'est pas affecter le test suivant. Les décès dignes de confiance seront répétables dans n'importe quel environnement sans variété. Les résultats de cette méthode ne doivent pas dépendre des données de l'environnement dans lequel est écrit . Les résultats doivent être déterministes. Il doit y avoir les mêmes résultats à chaque fois sur chaque instance où ils s'exécutent. ne devrait y avoir aucune dépendance sur l'heure de la date ou les données qui peuvent être modifiées en dehors du test ou des fonctions aléatoires. Chaque bureau le montre ou organise ses propres données. Si un test de mise en marche nécessite des données communes, vous pouvez utiliser cette section supérieure dans la classe de test pour les données dans les méthodes de test hors d'une classe de
bureau ou peut-être certains que les classes d'aide pour la réutilisation dans de nombreux tests. Classes auto-validation Un test unitaire doit être automatique. Aucune inspection manuelle ne devrait être requise pour vérifier si l'essai a réussi ou échoué. Un test unitaire doit être transparent. Intention inexprimée de l'auteur. En d'autres termes, il doit être un document de départ. Lorsque vous lisez le nom de la méthode dans un test, vous devez comprendre ce que le système est capable de faire, mais nous une différence avec un texte statique. Il s'agit d'un document qui peut être exécuté sur celui-ci validera si cette fonctionnalité est implémentée sur le fonctionnement correct. Certaines personnes d'autres ombrage aussi le S avec petit. Comme nous l'avons vu, le test unitaire doit être petit. Cela signifie qu'elle ne validera qu'une unité hors travail sans dépendances. Photo concernant l'attestation de couverture. Masquer chaque scénario de cas d'utilisation, mais pas nécessairement pour une couverture de 100% au sommet, vous devez essayer de tester la mort des
revaleurs de bord et de liaison pour les grands ensembles de données afin de tester le temps d'exécution et le test de complexité de l'espace pour sécurité avec les utilisateurs ont dans différents rôles nous. Le comportement attendu peut être différent en fonction des utilisateurs différents. Royals le fait pour les grandes valeurs, juste débordement et sous les erreurs de flux. Pour cela, les types comme les termes entiers pour les exceptions font des arguments juridiques et des entrées incorrectes
7. Dette technique: La profondeur technique est due choix d'une solution simple
et peu coûteuse. Désormais, au lieu d'utiliser une meilleure approche qui
prendra plus de temps, c'est souvent le résultat
de l'utilisation de raccourcis, correctifs
rapides et de correctifs
plutôt que d'une solution à grande échelle. caldeira quotidienne était initialement utilisée pour faire référence à des
défauts du code, signe d'un logiciel, mais le concept peut être appliqué
à n'importe quel type de produit. Dans certains cas, les solutions profondeur
technique peuvent fonctionner
correctement pendant longtemps, mais dans de nombreux cas, le
produit peut devenir instable, peu sûr ou même dangereux. Quel est le premier problème de profondeur
technique
concernant la productivité ? Un problème de
profondeur technique est qu'il faut retravailler. Premièrement, nous avons le
temps de mettre en œuvre ces ISI, mais une solution non désirée
avec une profondeur technique
à un moment donné, il pourrait être nécessaire de
l'implémenter, n'est-ce pas ? Nous devons donc ajouter
le temps d'annuler la solution facile
au moment de
l'implémenter correctement. Ce processus est également appelé l'Espagne,
la profondeur technique. Comme vous pouvez le constater, le temps total et
les efforts consacrés sont bien plus que cela. Si nous avons un garçon, la profondeur technique et mis en œuvre correctement
dès le début. transport de VAB technique pourrait être intentionnellement pour
Bob ou de bonnes raisons. Tout comme Guan peut prendre profondeur
financière pour
jouer dans un casino ou pour faire croître votre
entreprise et payer la profondeur plus tard
avec un profit. Par exemple, manque
de professionnalisme, les membres de l'équipe ne sont pas professionnels ou ne se
soucient pas du produit. Profondeur technique accumulée. Le produit a tellement de profondeur
technique qu'il semble impossible de mettre en œuvre correctement de
nouvelles fonctionnalités. Pression de temps, l'équipe
est sous pression temporelle, sorte que la vitesse ou la libération
est un lien prioritaire sur les
codes bien conçus, le manque de composants. L'équipe a besoin d'une pièce de rechange
pour le produit qui
n'est pas disponible et elle a besoin
d'une solution alternative. Expérience de démonstration de concept ou MVP. L'équipe effectue une démonstration de concept ou un
MVP et préfère
fournir quelque chose de profondeur
technique pour tester la demande du
produit sur le marché, plutôt que de construire quelque chose techniquement parfait
que personne ne veut. profondeur technique peut également
être involontaire. Par exemple, le manque de connaissances. Les membres de l'équipe sont deux
juniors et ils ne savent pas que les meilleures pratiques sont
les bons modèles de conception
pour les problèmes. Nouvelles technologies, l'équipe
utilise une nouvelle technologie
ou un nouveau cadre et il n'est pas au courant des meilleures
pratiques en la matière. Lorsqu'une équipe encourage
continuellement profondeur
technique
sans le payer, cela peut causer plusieurs problèmes. Code spaghetti, ils signe
interne
du produit peuvent devenir très désordonnés et
ressemblaient à du code spaghetti. Et avec un couplage élevé, le produit peut être commun, stable, dangereux ou peu sûr. Le code devient
de plus en plus difficile à comprendre et apporter des modifications ou ajouter de nouvelles fonctionnalités
nécessite plus d'efforts et peut facilement rompre ou d'autres fonctionnalités
existantes, que ce soit avec une bonne solution ou avec plus de profondeur technique. Fondamentalement, faire face à des voies
froides devient une douleur. Matériel à payer. Plus la
profondeur technique est accumulée. Le matériel à payer, c'est comme profondeur monétaire
impayée et
c'est un intérêt composé. fausse perception d'une vitesse
élevée au sein de l'équipe qui encourage constamment la profondeur
technique peut
sembler très productive et
avec une vitesse élevée pendant un certain temps en raison
de ses solutions rapides. Mais à long terme, la vitesse
baissera en raison de la complexité et du manque de
stabilité de la base de code. Ceux-ci peuvent également
entraîner une dépendance de
la part des parties prenantes ou du
propriétaire du produit pour voir des livraisons rapides. Et Gould fait que le canard dur
était assis dans leur avenir, le coût élevé de l'
entretien sur la boîte de fixation. De plus, pour
accepter que le code soit déchet et qu'il faut
qu'il s'agisse d'un refacteur. La profondeur technique de la métaphore
a été créée à l'origine par gramme de conserves de
mots pour définir
la façon de penser à faire
face à ce métier. Pour expliquer à son patron comme une
analogie avec la profondeur financière, l'effort supplémentaire
qu'il faut pour ajouter nouvelles fonctionnalités est l'
intérêt payé en profondeur.
8. Concevoir initialement et émergent: à partir du signe par rapport à la conception émergente dans le développement de soutien. Grand design à l'avant. C' est une approche dans laquelle le logiciel ce signe doit être complété. Je suis perfectionné avant la mise en œuvre. Ceci est souvent associé à l'eau pour le développement de modèles hors logiciel. En fait, ça a l'air génial, non ? Eh bien, seulement si vous savez en détail tout ce que vous aurez besoin de construire à l'avance, ce qui est rarement le cas de nos jours. Le changement est inévitable. Peu importe à quel point nous essayons de prédire l'avenir, il y aura toujours beaucoup de variables hors de notre contrôle. Aussi, comme vous le savez peut-être, Milton, le nouveau logiciel est le chemin vers quelque chose de nouveau qui doit être découvert sur le chemin. L' un des principaux du manifeste agile est le changement bienvenu dans les exigences parce que pendant que vous marchez sur le chemin de la création du nouveau logiciel, commentaires
réguliers vous donneront de nouvelles idées et exigences qui auront été impossibles à penser au début du projet. Par conséquent, nous avons besoin de la technique qui nous aide à embrasser le changement et adapter sont conçus en conséquence . Alors, au lieu de
ça, hors du signe. Ce que nous voulons est un design qui grossit organiquement au signe qui peut s'adapter aux changements sur le mariage en continu. design émergent se concentre sur la livraison en petits
morceaux, sans travailler à froid avec une valeur commerciale avec un design émergent. Une équipe de développement a commencé à fournir des fonctionnalités sur Let's the Design Emerge. Une fois que quelqu'un m'a dit dans ma compagnie précédente, nous avons essayé de faire un marchand. Le signe et nous avons ajouté froid et plus appelé par la conception n'a pas émergé bien sûr pas . Il ne s'agit pas seulement d'ajouter du froid et un jour que ce signe sera soudainement dans le mariage. Il s'agit d'une méthodologie continue que vous devez appliquer tous les jours. Le design est en train de muter sur émerger tout le temps dans un design marchand. L' équipe de développement va retirer une petite partie de la fonctionnalité et implémenter l'utilisation dans Let's Practices et Discovery Ridge appropriée, puis passer à la fonctionnalité suivante. Ils verront ce que les dysfonctionnalités ont en commun sont un facteur. L. Une fenêtre conçue pour un mariage à la fin Open Naja vraiment cycle. Le produit a Onley petit design juste pour les caractéristiques libérées dans cette situation. Le résultat est une conception plus simple qui est plus facile à comprendre et à entretenir avec moins de place pour les défauts. Le développement juste piloté est une technique qui peut nous aider avec les signes d'urgence
9. Refactoring - Que dois-je refactor? ?: re factoring quoi re profondeur technique facteur. Il s'agit d'un concept de développement logiciel qui reflète le coût de la refonte causée par le choix . Et c'est une solution au lieu d'utiliser une meilleure approche qui pourrait prendre plus de temps. Le concept a été inventé à l'origine par Ward Cunningham. US A. Métaphore. Cette métaphore aide à expliquer,par
exemple, par
exemple, aux gestionnaires pourquoi il est important d'investir le temps approprié dans l'écriture de bons logiciels et le
réaffacturage . Par exemple, si vous ne payez pas votre carte de crédit ou monétaire que vous pouvez accumuler des intérêts et vous
devrez payer beaucoup plus avec alors où est le même ? Si la profondeur technique n'est pas remboursée, elle peut accumuler des intérêts. Il est plus difficile de mettre en œuvre des modifications et plus coûteux de maintenir l'application. Re factoring est une technique pour améliorer le code existant sans modifier la fonctionnalité . En d'autres termes, vous améliorez le code mais ne fournissez aucune nouvelle valeur à l'utilisateur final. La valeur principale est pour les développeurs. Il s'agit d'un investissement pour que le froid soit plus maintenable à long terme. Ce sont deux chefs-d'œuvre à lire sur votre affacturage. Le 1er 1 est le livre de Martin Fuller, où il a expliqué les techniques de re factoring sur le 2ème 1 introduit comment réfracteur avec des solutions qui incluent des modèles de conception. Alors, comment savez-vous ce que vous devriez être un facteur ? Si vous ouvrez le réfrigérateur, il y a une odeur ce que cela signifie. Ça veut dire que quelque chose est en train de pourrir. Alors, qu'est-ce que tu ferais ? Je suppose que vous le sortirez si vous le laissez à l'intérieur. Autre nourriture va courir à avec le code est le même. Parfois, vous regardez le froid et vous n'êtes pas sûr de pourquoi. Mais vous savez que quelque chose ne va pas, que quelque chose sentait mauvais. Et si vous ne le modifiez pas ou ne l'améliorez pas,
il se propage à travers toute la base de code Revenir fait référence à ces odeurs de code US. Les odeurs de pelage vous aident à identifier ce qui sent mauvais dans le froid et généralement facteur. Certaines des odeurs de code les plus importantes sont dupliquées froid l'une des
odeurs de froid les plus courantes . C' est quand il y a un code identique ou très similaire qui existe dans plus d'un emplacement méthode
Long, une fonction de méthode ou une procédure qui a grandi trop grande. Grande classe Une classe qui est la fonction de Toler M B Une classe qui utilise la méthode hors d'une autre classe excessivement dans l'intimité appropriée. Une classe qui a des dépendances sur les détails d'implémentation d'une autre classe a refusé demander une classe qui remplace une méthode hors de la classe de base de telle sorte que le contrat hors de la classe de base, il n'est pas erroné par le dernier lecteur. Il s'agit généralement d'une violation du principe Lisk de substitution. Lacey Une classe qui fait trop peu de complexité artificielle. Grande utilisation hors comme compliquée les motifs de signe où un design plus simple suffira. Comme vous le savez peut-être, les
modèles sont des solutions d'enregistrement à un problème qui sont prouvées et qui conduit à de bons résultats. Les motifs anti sont le contraire. Ce sont des solutions communes à un problème que, pour certains libres, certaines personnes font et ont des
conséquences négatives . Lorsque vous voyez un modèle anti, vous devriez les prendre en compte à nouveau. Mentionnons certains d'entre eux anémiques. Le modèle principal est l'utilisation du modèle de domaine sans aucune logique métier basée sur fonctionnalité d'
héritage d'une classe d'utilitaires. Plutôt que d'utiliser la composition sur la délégation d'or super exigeant des sous-classes pour appeler super classe surévalué et le problème de l'ellipse de cercle de méthode. C' est fondamentalement une mauvaise utilisation hors sous-type dans le cercle de notre dépendance. Dépendances mutuelles inutiles entre les objets ou les modules. Interface constante. Usan interfaces pour définir des constantes, objet
Dieu, concentrant trop de fonctions dans une seule partie de la conception dans un objet de classe. Cecil Réutilisation des objets Qui état ne confirme pas le contrat de réutilisation. Objet RG Ne parvient pas à encapsuler correctement les objets permettant un accès illimité à leurs internes. Baltar regardait des objets dont le seul but est de transmettre des informations à un autre objet. Couplage séquentiel d'une classe qui nécessite que ses méthodes soient appelées dans une particule. Notre ordre votre problème Une structure,par
exemple, par
exemple, hors héritage qui est difficile à comprendre en raison d'une fragmentation excessive.
10. Refactoring - Comment refactor? ?: riff Factoring Comment re facteur. Lorsque vous la réfléchissez, vous devrez changer l'orteil froid. Appliquer de bons principes de conception. Parlons de certains d'entre eux. Ne te répète pas. Notre premier principe de conception orientée objet est D. R Y. US nommé suggère Ne pas répéter vous-même signifie simplement que Tom Reid double code. Au lieu de cela, utilisez l'obstruction pour mettre les choses communes en un seul endroit. Les suivants sont des conseils de la bande de force. Les gars qui ont écrit le livre ont conçu des modèles. Le 1er 1 est encapsulé. Quelles variétés ? Une seule chose est constante dans le logiciel a échoué, et cela a changé. Alors encapsulez l'appel que vous attendez à changer à l'avenir. Plusieurs modèles de conception utilisent l'encapsulation. Par exemple, le modèle de conception d'
usine en est un exemple. Off Encapsulation, qui encapsulent la création d'objet appelé UN. Fournir de la flexibilité pour introduire de nouveaux produits plus tard, sans impact sur la programmation de code existante dans une interface, non sur la mise en œuvre. Cela conduira toe flexible appelé, qui peut fonctionner avec toute nouvelle implémentation hors de l'interface à l'avenir. Donc, utilisez l'interface, tapez sur vos objets de valeur, les temps de retour des
propriétés et les arguments favorisent la composition par rapport à l'héritage. Certains d'entre vous peuvent discuter avec cela car beaucoup de gens pensent qu'il y avait l'utilisation du froid avec l'héritage. Mais j'ai trouvé que la composition est beaucoup plus flexible que la composition de l'héritage. Alos pour changer le comportement d'une classe à l'exécution par ledit dans un nouvel objet d'une
implémentation différente dans une propriété qui nous a été déclaré un principe de délégation de type d'interface. Ne faites pas toutes les choses vous-même déléguées à respectif, plus l'exemple classique de délégation principale sont les méthodes de code égal et de hachage en Java. Afin de comparer deux objets pour l'égalité, nous avons demandé à l'autre classe elle-même de faire la comparaison au lieu de la classe client. Faire ce chèque avantages hors. Ce principe de conception n'est pas une duplication du froid. Je suis assez facile à modifier le comportement. Il y a quelques principes conçus appelés solides par Roberson Martin. Il existe un principe de responsabilité unique très important. Une salle de classe a toujours manipulé une seule fonctionnalité et n'a qu'un seul but. Cela va augmenter. La cohésion est déjà couplage vêtements ouverts conçus classes principales. Les méthodes sur la fonction doivent être ouvertes pour extension. Unclos pour la modification du principe de substitution lis cub. Étant donné un super sous-types moskvy substitut, je pisse les méthodes de super type sont des fonctions qui ont utilisé le type de super classe doit être capable de travailler avec un objet hors d'une sous-classe sans aucun principe de ségrégation de l'interface de problème . Cela s'est produit principalement lorsqu'une interface contient de nombreuses méthodes sur un client ne nécessite qu'une inversion de
dépendance. Une classe doit dépendre d'une fraction ou d'interfaces sur jamais aux implémentations. Il existe de nombreuses techniques d'affacturage de re qui sont relativement faciles à comprendre pour la plupart des développeurs, généralement la plupart hors des environnements de développement intégrés comme Eclipse ou Intelligent. Ils intègrent ces techniques d'affacturage et automatisent les changements impliqués. Mais vous devez toujours prendre la décision. C' est juste la liste des plus importants. Méthode d'extraction. Lorsque vous avez un fragments froids qui peuvent être regroupés ou est dupliqué dans de nombreux endroits , déplacez ceci. Aller à une nouvelle méthode distincte et remplacer l'ancien froid par un appel à la méthode destructive dans la méthode lane. Lorsque le corps de la méthode est à tout usage, remplacé les appels à la méthode. Avec le contenu des méthodes sous plomb, la méthode elle-même extraire la variable. Lorsque vous avez une expression trop difficile à comprendre, placez les résultats hors de l'expression dans des variables distinctes qui sont explicatives. En ligne. Tamp Lorsque vous avez une variétale temporaire qui a affecté les résultats d'une seule expression et rien de plus remplacé les références à la variable par l'expression elle-même mouvement hors d'une méthode qui a plus de sens dans une autre classe faite dans sa propre classe. Extrait. Rire quand une classe fait le travail pour créer une nouvelle classe sur place les champs et les méthodes responsables de la fonctionnalité pertinente dedans. En ligne classe A classe ne fait presque rien, et il n'est pas responsable de tout péché sur aucune responsabilité supplémentaire. Notre plan pour ça. Déplacez toutes les entités de la classe vers une autre classe. D' autres techniques d'affacturage re bien connues sont la méthode Rene à l'ancien paramètre retiré d'un fond de la
méthode, il sèche. Méthode. Tirez une méthode de champ ou un constructeur de sous-classe à une super classe. Poussez vers le bas un champ ou une méthode d'une super classe vers une sous-classe, extrayez une super classe ou un extrait de sous-classe. L' interface de la classe qui est appelée par de nombreux clients méthode de modèle de formulaire sur beaucoup d'autres. Donc, quand vous êtes un facteur et que vous changez le code, où est le filet de sécurité ? Il semble trop dangereux de changer le froid pour l'améliorer car il ya le risque ou les
fonctionnalités de rupture , ou sont la nouvelle boîte. Alors, comment puis-je riff acteur avec confiance À ce stade, vous pourriez réaliser quelle est la réponse ? La réponse est le test unitaire. Vous devez couvrir votre appel avec un test unitaire donc il n'y a pas de danger dans l'affacturage re et vous pouvez librement améliorer le froid sur conduit la conception une envie.
11. Introduction au développement piloté sur les tests: testeurs d'introduction de développement piloté par test sur les développeurs sont deux rôles très importants dans l' ingénierie
logicielle. Ils n'auront pas de responsabilités complexes, mais ils ont aussi des mentalités différentes. Ils pensent souvent différemment. Un développeur besoin de vendre des problèmes avec des solutions qui fonctionnent sur, généralement demandera des choses comme, Que dois-je construire ? Comment devrais-je le construire ? Comment puis-je le faire ? Rob ist Un testeur doit être dans la peau du client. Un testeur vous demandera des choses comme, Qu'est-ce qui peut mal tourner ? Comment puis-je lire l'application ? Comment puis-je trouver des témoins ? Mais les développeurs ont encore besoin de tester. Certaines personnes peuvent dire, Eh bien, je construis un logiciel, et si pendant les tests ils trouvent des bugs, je peux les réparer Eh bien, ce n'est pas la diarrhée. Bien sûr, nous comptons sur l'intestin pour attraper les sacs après le développement, mais cette côte beaucoup de retouches et de déchets. Donc, en tant que développeurs, nous devons faire de notre mieux pour fournir Rub ist clean on back software libre dans une
approche traditionnelle . Le développeur va créer le froid, et puis il y a qui fonctionne correctement. Mais nous avons vu une fois que vous construisez quelque chose est très difficile d'impressionner le test en perspective. Alors que faire si nous réfléchissons aux tests avant le développement. Dans ce cas, nous allons d'abord penser aux cas de test, puis implémenter appelé Cela passe le test fait par le développement, que nous pouvons référencer. Toa nous DDT. Il s'agit d'une technique de conception et de mise en œuvre de logiciels inclus dans la
méthodologie de programmation extrême . Certains hors force diront que le nom est un peu malheureux. Quelque chose comme ce signe, dirigé par des exemples, aura bean peut-être plus approprié. Nous commencerons donc par définir ce qui n'est pas le DDT. La dignité n'est pas un test dans la méthode ou une technique QA. DDT n'est pas un remplacement QA. Vous n'essayez pas de remplacer Q A ou testeur. Avec ça. Ils sont encore très importants dans le cycle de développement de l'argent. DDT est à la technique de signalisation pour les conceptions émergentes. Ditty East Test Avant le développement Vous cherchez à créer le test d'abord sous un implémentation. Les manteaux sont des exemples de ce que le système devrait faire, et vous pouvez voir ces spécifications US A vivant. Lorsque vous avez un document, vous pouvez tirer le moins des choses que le système peut faire, mais vous ne pouvez pas le prouver avec dignité. Vous avez une documentation sur ce que le système peut faire, mais vous pouvez également les exécuter sur Testament validé. développement est lié à l'essai premier concept de programmation Off Extreme Programme, dans lequel a commencé en 1999. Qui sont les gens célèbres qui soutiennent le DDT ? Revenir ? Qui est crédité d'avoir mis au point ou redécouvert la technique indiquée en 2003. D activité. Encourager la conception simple L'ONU inspire confiance. Can Back est l'un des créateurs de la méthodologie agile pour le développement logiciel connu US Extreme Program dans Il a également créé avec Ari Gamma, le cadre de test unitaire pour Java J unité. Il a publié de nombreux livres, a demandé Petite conversation, Les meilleures pratiques modèles. Explication de la programmation supplémentaire, développement piloté par des
tests par exemple. Planification de la programmation extrême. Martine Fuller est auteure et conférencière internationale sur le développement de logiciels, spécialisée dans l'analyse et les modèles de conception orientés objet et les
méthodologies agiles de développement de logiciels , y compris la programmation extrême. Il a beaucoup de publications, y compris une usine de re et l'amélioration du code de signature existant. Eddie Gamma a joué le rôle de leader du développement de la plateforme Eclipse. Il faisait partie du Gang of Four qui a popularisé les modèles de signes. Il était aussi l'unité Creator J, avec Can back
12. Cycle de développement TDD: juste piloté cycle de développement. Jetons un coup d'oeil au cycle de développement des seins. Vous commencerez avec les exigences les moins élevées. Habituellement, ils seront des histoires d'utilisateurs. Vous supprimerez une de cette exigence sur La première chose que vous ferez est d'écrire un
test TDD pour une des fonctionnalités de l'histoire. Vous n'écrivez aucune implémentation sur la finalité du téléphone encore, en d'autres termes, c'est un test pour une fonctionnalité donnée. Mais le système ne le fournit pas. Maintenant. Vous allez faire fonctionner le bureau, le faire échouer. Vous voulez vous assurer que cette fonctionnalité n'est pas un niveau très élevé et que vous bougez dans pas de
bébé. Ensuite, vous monterez le plus simple possible appelé pour passer le test. Nous voulons seulement mettre en œuvre ce qui est nécessaire pour réussir le test. Vous ne penserez pas générique pour passer le test à venir ou d'autres cas non couverts par ce test. Une fois implémenté, vous exécutez le test sur la fabrication de bus. Sur. La dernière étape est re facteur lorsque vous voyez à votre solution et vous voyez ce que vous pouvez améliorer ou ce que vous pouvez utiliser à nouveau sans changer dans la fonctionnalité suivante, vous penserez à un nouveau test pour une autre fonctionnalité de la même histoire d'utilisateur. Ou lorsque vous êtes en panne avec cette histoire d'utilisateur, vous pouvez prendre une autre exigence pour réfléchir à des cas pour écrire un nouveau test que vous étiez. Répétez le cycle encore et encore, en dirigeant la conception. Emerger constamment pendant la journée jusqu'à ce que vous rentriez à la maison. Combien de temps pensez-vous qu'un de ce cycle de TDD ? Elle prendra un mois, une semaine, un jour, une heure. Eh bien, le plus court sera le mieux, comme quelques minutes. Cela signifie donc que vous travaillez avec de très petits pas. Le cycle de développement des seins est connu nous rouge, réfracteur
vert en rouge. Vous allez écrire le test qui échoue pour une fonctionnalité qui n'existe pas. Avec cela, vous vous assurerez qu'ils appellent qui est écrit après que le test sera testable. Vous aurez également Bali date cette spécification en vert vous avez pleuré le plus simple appelé pour passer le test. Vous allez simplement remplir l'exigence et écrire la solution la plus simple que vous pouvez penser . Vous ne penserez pas à un motif de design fantaisie ou à un grand design. À ce stade dans le facteur re, vous vous concentrerez sur l'amélioration de cela. Le soupir Ici, vous allez nettoyer le code. Retirer le froid répétitif, qui est l'une des pires odeurs de pelage. Pensez à utiliser le code des fonctionnalités précédentes. Vous allez vous assurer qu'ils ont appelé exprimer son intention. Vous supprimerez tous les péchés qui sent mauvais comme le code sent. Vous étiez une chose qui a assigné et appliquer les bonnes pratiques le signe, les principes et les modèles conçus Et bien sûr, vous allez supprimer tout code inutile.
13. Avantages et inconvénients de TDD: croiser et contre TDD. Quels sont les avantages hors utilisation entité ? Il fournit une réduction significative de la boîte. Ce temps d'arrêt d'investissement peut se traduire par des économies de temps QA et éviter les retours dans la production. Vous obtenez un meilleur design. C' est un design très réutilisable avec non rythme qu'ils appellent avec une grande cohésion. Faible couplage sur le respect des lignes directrices sur le code propre, l'équipe a un meilleur sens de la confiance et de la communication à travers la vérité. Hors du test. Le test est un atout en soi. Ils laissent des spécifications. Ils documentent ce que le système peut faire. Ils peuvent être exécutés pour le valider. Au début, ça va nécessiter des efforts. Mais à long terme, l'équipe a une productivité plus élevée. Maintenir la capacité est plus facile sous. Il y a un niveau élevé de confiance pour apporter des changements. Quels sont les inconvénients de l'utilisation ? Entité ? Il est difficile à utiliser pour les tests d'intégration. Il est difficile pour des scénarios comme l'interface utilisateur que le réseau de base des systèmes externes, cinq systèmes, en particulier l'héritage enveloppe le support de la gestion. Pour une équipe qu'il adopte, le TDD est essentiel. Les tests font partie de la base froide, et ils nécessitent
aussi un entretien . Vous voulez également appliquer tous les bons principes de conception sur la couche d'essai. Vous aurez besoin de réfracteur le test aussi, sorte que cela nécessite un investissement de temps sous pourrait être un faux sentiment de sécurité. Mon groupe a vu TDD n'est pas un remplacement pour Q A sur le reste, donc vous pouvez avoir un très bon test sur une bonne couverture de test. Mais vous pouvez ne pas comprendre les exigences ou manquer dans certains, sauf sur les critères. Dans ce graphique, vous pouvez voir le niveau de stress ou de chaos dans une équipe ou un projet le long du temps jusqu'à une date limite avec le haut du signe. Au début, le stress est très faible. Les choses semblent aller bien, mais un peu demander que vous êtes près de la date limite. La détresse, l'augmentation non courue. Les choses peuvent ne pas marcher. Un soupçonné de nombreux changements sont nécessaires à la dernière minute, mais les changements prennent du temps sur pause d'autres fonctionnalités. Donc, à la fin du projet, le stress est très élevé. Quelle ville au début, le stress élevé. Tout semble difficile sur lent, mais bientôt le projet se poursuit. Les changements deviennent des modules d'intégration plus faciles et rapides. Ce n'est pas une grosse affaire, et l'équipe se sent confiante. Lorsque vous êtes près de la sortie, les choses sont en bonne forme. Fondamentalement, avec TDD, vous atténuez une grande partie du risque. Au début. Ce tableau compare le transfert des responsabilités par rapport aux principes de conception au fil du temps. Dans un projet avec jusqu'à partir du signe ou de test plus tard, vous commencez avec un grand conçu qui semble couvrir tous les cas possibles à l'avenir. Mais nous longtemps le temps passe, la vérité est différente. De nouvelles exigences inattendues apparaissent sur son difficile à adapter leur conception. Par conséquent, tous les principes de conception que vous aimez et souhaitez comme haute cohésion Low Coop ling, connu répétitif, appelé réutilisabilité et d'autres ont considérablement diminué. Avec TDD, vous commencez avec de petites conceptions juste pour quelques fonctionnalités, et vous avez adopté le signe pour ajouter de nouvelles fonctionnalités, tout en cherchant toujours à respecter les bonnes pratiques
et les principes de conception.
14. Système de vente - 1ère partie : Montant total avec réduction: exemple ditty. Imaginons que nous travaillons sur un système de vente en cours de développement. Il ya beaucoup utiliser leurs histoires, et certains d'entre eux ont déjà été développés usin TDD. Nous sommes tenus de mettre en œuvre une utilisation d'une histoire dans le développement piloté par des tests. Dans cette exigence, le vendeur veut donner une réduction de 10% sur le prix du produit quand on achète cinq articles ou plus sauf si le produit est en vente, Allons-y. Nous commençons par le Red Step du cycle de développement piloté par les tests pour écrire un test qui échoue . Il s'agit d'un projet en cours d'élaboration. Il y a déjà une classe de test de commande avec test unitaire pour la classe de commande hors de la production , nous allons ajouter et vous comptez pour tester qu'une remise sera appliquée. Nous écrivons les trois sections d'un test unitaire en arrangement avec une amende que nous allons utiliser une nouvelle commande sur le marteau de produit avec le prix de 20. En fait, nous appelons les méthodes existantes à je tente toe impair cinq articles sur le produit à l'ordre sur Enfin dans affirmer, nous disons que la réduction a été appliquée sur la méthode existante obtenir total ont été retournés 90. Maintenant, nous sommes prêts à exécuter ce test sur son visage parce que notre test attendu 90 mais la méthode obtenir total retourné 100. Jetons un coup d'oeil à la classe de commande, qui existe déjà dans le système. Il y a une méthode get total qu'il évalue sur son objet de lignes de commande sur les sommes Le
sous-total de chacun un d n. Il retourne un tel certain Jetons un coup d'oeil à la classe de ligne de commande. Le mêlé se lève. Total renvoie simplement le prix du produit multiplié par la quantité dans la ligne de commande. Comment nous pouvons mettre en œuvre la nouvelle fonctionnalité. Vous pouvez penser à beaucoup de bonnes solutions ici, mais nous allons juste juste juste la première chose simple que nous pouvons imaginer. Maintenant, nous sommes dans l'étape verte du cycle TDD. Nous changeons la méthode des sous-titres, donc si la quantité est supérieure ou égale à cinq, nous retournons le prix multiplié par la quantité et syrah 50.9. Sinon, nous venons de retourner le prix multiplié par la quantité. Maintenant, nous pouvons faire le test sur elle passer. Il est mis en œuvre. Maintenant, passons à l'étape de facteur re sont froids. Ça n'a pas l'air droit. Nous voyons qu'il est doublé appelé avec des variations mineures sur le taux d'actualisation. Appliquons la technique d'affacturage de la variable locale d'extrait sur ce taux d'actualisation. Maintenant, nous avons un taux d'actualisation variétale initialisé avec un, mais si la quantité est de cinq ou plus, nous l'avons changé en sirop sur neuf. Le froid précédent est remplacé par une référence à la nouvelle variable. Voyons si ça a cassé quelque chose ou pas. Nous autour du test sur elle passer.
15. Système de vente - 2e partie : Calculer la réduction: Maintenant, nous sommes de retour dans l'étape rouge. Les critères d'acceptation de cette histoire nécessitent de calculer quel était le rabais qui a été fourni. Nous créons donc une nouvelle méthode de bureau pour cette fonctionnalité appelée remise d'article de commande de test. Nous créons une nouvelle commande sur le produit hors prix 20. Nous sommes cinq tentatives sur le produit à la commande sur Nous disons que la remise calculée était 10. Alors, qu'est-ce qu'on fait maintenant ? Nous devrions exécuter la mort, mais nous ne pouvons pas parce qu'ils obtiennent cette méthode de comptage n'existe pas dans la classe d'ordre. Nous venons de l'inventer dans Ce test est bon de combiner TDD avec la programmation par intention, avec la programmation par intention, nous pensons que la méthode ou la responsabilité et les objets devraient avoir gagné Moke sur nous avons créé plus tard. Créons la nouvelle méthode. Obtenez une réduction dans la classe de commande parce que nous sommes dans Red Step. Nous ne sommes pas intéressés par sa mise en œuvre. Donc, nous pouvons juste retourner zéro Maintenant, nous pouvons exécuter le test et sont soupçonnés Il s'estompe Le test attendu Obtenir un rabais pour retourner 10 mais retourner zéro Faisons le bus. Nous avons un test qui attend 10, mais notre méthode est le retour dans les céréales. Quelle est la chose la plus simple que nous puissions faire pour réussir le test ? Et quand je dis la chose la plus simple, je veux dire littéralement la chose la plus simple. On peut juste retourner 10 nous. C' est ce que le test soupçonne. Maintenant, nous faisons le test sur son vert. Je sais que vous pensez peut-être que ça a l'air stupide, mais l'entité idée est de faire des pas de bébé. Donc, parce que nous avons retourné 10, nous devons couvrir la fonctionnalité avec d'autres cas de test. Si nous avons mis en œuvre, obtenir remise complète, nous allons manquer l'occasion de tester d'autres cas dans un vrai projet avec test unitaire, nous voulons couvrir de nombreux cas, y compris les cas de bord. Mais nous voulons commencer par un échec des tests pour chaque cas. Donc on a déménagé avec des pas de bébé. Peut-être que c'est plus logique. Avec le prochain test du point de vue du testeur, nous ne ferons pas confiance que ce compte fonctionne bien juste parce qu'il passe un test, nous verrons comment nous pouvons le casser ou ce qui est arrivé avec d'autres scénarios. Par exemple, nous pouvons créer un orteil test six autres articles sur le produit ici. Nous respectons que Get discount retourné 12. Nous effectuons le test sur les premiers tests, mais le nouveau a fait face à un suspect en 12. Mais obtenir un rabais Retourné 10. Oui, obtenez ce compte. Je ne peux pas nous tromper. Donc quand tu es en vert, tu dois écrire la chose la plus stupide pour passer le test. En fait orteil complet Le test en rouge avec sur le code de la circulation à l'intérieur est suspect et créé . Test pour les nouveaux cas. Nous appliquons la bonne mise en œuvre. Comment pouvons-nous mettre en œuvre ? Ils obtiennent cette méthode de comptage correctement. Nous pouvons itérer les lignes de commande hors de l'ordre avec la programmation. Mon intention. Nous supposons qu'il existe une méthode appelée get line discount. Cette méthode n'existe pas. Nous devons donc le créer et nous créons quelque chose de simple. Si la quantité est de cinq ou plus, qui a retourné le prix peut être déployé par quantité et multiplié par Cira 50.1. Sinon, nous retournons zéro. On a fait le test dans le bus. Allons réflecteur ! Si on regarde le code, ça a l'air bizarre. Il y a un code répétitif. Deux méthodes ont un rhume similaire. Nous pouvons donc appliquer une méthode locale frappée pour créer une nouvelle méthode appelée get line total. Nous créons la méthode get line total pour retourner le prix multiplié par quantité et mettre à jour les autres méthodes pour appeler la nouvelle méthode. Mais pas si vite. Exécutons le test pour nous assurer que ce changement fonctionne sur son vert. Quand nous regardons à nouveau la classe, nous voyons que cela devient total et se met à mentir. Réduisez notre vote, en calculant leur taux d'escompte, mais de différentes façons et obtenir sous-total. Il y a un multiplicateur pour le total avec 0,9 dans la ligne get. La réduction est la Syrie 0,1, ce qui est le même, mais avec une perspective différente. Ceci est également dupliqué froid. Nous pouvons appliquer une méthode frappée pour créer une nouvelle méthode. Obtenez ce taux de comptage que nous avons extrait, obtenir le taux d'escompte nous une nouvelle méthode et mis à jour les références dans obtient total et dans obtenir ligne rabais appels US à la nouvelle méthode. Nous sommes prêts. Utilisez dans le code pour vous assurer que cela fonctionne sur le vert. Ont fait le test, ils mentent. La réduction fonctionne, mais ce n'est pas facile à lire. Une autre façon de calculer la remise hors ligne. Cool V pour déduire le sous-total du total de la ligne. Nous faisons un tel changement notre test pour nous assurer que cela fonctionne. Vous pouvez penser à plus de choses à améliorer, mais pour autant que vous pouvez voir la classe de ligne de commande semble beaucoup plus simple.
16. Système de vente - 3e partie : Produit en vente: nous sommes de retour à l'étape rouge parce que nous allons gérer les produits en vente. Cette exigence indique également que si le produit est en vente, aucune remise ne doit être appliquée. Créons une nouvelle méthode de test dans la classe de test de l'ordre. Encore une fois, nous créons une nouvelle commande sur un nouveau produit. Mais en utilisant la programmation pour l'intention, nous supposons un nouveau paramètre indiquant que ce produit est en vente. Andi. Maintenant, cette application ne gère pas le concept que le problème peut être en vente. Nous achetons cinq unités sur ce produit dans la section Assert avec dire qu'ils obtiennent des
rendements totaux 100 parce qu'il n'y a pas de réduction. Nous ne pouvons pas encore l'exécuter parce que le produit n'a pas
encore un tel constructeur avec le paramètre on say . Nous avons créé un nouveau constructeur dans la catégorie de produits, indiquant qu'il est en vente. Exécutons le test sur celui-ci a échoué car la remise a été appliquée et obtenez le total retourné 90 . Il y a la classe de ligne de commande avec la méthode get taux d'escompte qui est réutilisé par d'autres méthodes. Ce que nous pouvons faire pour faire le nouveau bus d'essai. Oui, nous pouvons changer cela si condition pour vérifier que le produit n'est pas en vente avec programmation. Mon intention, Nous supposons que le produit doit avoir une méthode est en vente. Nous créons. La méthode est en vente. Dans la catégorie de produits, nous exécutons le test Hyundai Path. Quand nous regardons la classe des frères, ce que nous pouvons re facteur. Bien que les constructeurs soient simples, l'affectation des paramètres aux propriétés est dupliquée. Nous pouvons appeler d'un constructeur à un autre pour la réutilisation quand on crée un frère avec juste le nom sur le prix. Par défaut, nous supposons que le produit n'est pas en vente avec un faux paramètre pour nous assurer que nous sommes sur le test sur son vert.
17. Astuces et recommandations pour TDD: conseils et recommandations. Pour TDD, le conseil le plus important dans le développement piloté par les tests est. Ne pense pas que tu as raison. Ils ont appelé signe précoce avant, juste dans le test. plutôt Pensezplutôtà des exemples de ce que le système devrait faire et comment allez-vous tester ? Je sais que c'est difficile pour les développeurs quand il y a un problème. Il est excitant de penser à des classes, des structures et des modèles. Mais gardez le recul et pensez d'abord au test. Si vous pensez à la conception d'abord, vous ferez une sorte de petit à l'avant. Le signe. Je suis sûr que vous pouvez trouver une structure qui a l'air sympa, mais ce peut être un design trop long et plus difficile à modifier. Commencez par le test et faites confiance que le processus vous surprendra avec un grand design que vous n'auriez pas pu penser à l'avance avec dignité. Vous garderez le Onley conçu et
simple pour les problèmes que vous abordez en ce moment. Rappelez-vous que l'un des principaux de l'agin manifeste est la simplicité est essentielle. L' art de maximiser la quantité de travail non fait entité. Nous voulons donner de petites étapes qui vous aideront à créer une bonne couverture hors test et seulement juste. Ils ont appelé que tu avais besoin. Nous allons donc nous déplacer dans les pas de bébé, par
exemple. Si le test s'attend à ne pas juste retourné nouveau dans votre méthode de production ? Oui, un cul stupide, ça a l'air. Ensuite, créez un autre test. C' est Bhagwan Tu moins un ou la valeur entière maximale. Nous voulons seulement concevoir pour les problèmes. Je suis en vedette que nous abordons en ce moment. Si vous programmez pour plus de cas, le jeune le test vous dépasserez la simplicité et le froid droit qui est moins testable. Pouvez-vous réfléchir à une définition ? Bon manteau. Comment comparez-vous les bons ours de code est mauvais code Selon Michael Feathers appelé sans test est mauvais code. Peu importe à quel point le retour est. Peu importe à quel point il est joli ou orienté objet ou bien encapsulé avec test Nous pouvons changer le comportement de notre code rapidement sur vérifiablement Sans eux, nous ne savons vraiment pas si notre code va mieux ou pire dans l'industrie l'or hérité est souvent utilisé nous est à long terme pour difficile de changer le froid que nous ne comprenons pas. Mais les plumes de Michael ont raison avec une définition différente. Le code hérité est simplement appelé sans test. Vous pourriez penser que c'est grave, vous pouvez dire. Et à propos de Klink dû ? Si une base froide est très propre et bien structure, n'
est-ce pas suffisant ? Eh bien, ne mélangeons pas bien les choses, le code
Appling. Mais ce n'est pas suffisant. Une équipe prend la haute résolution lorsqu'elle effectue des changements importants sans test. C' est comme faire de la gymnastique aérienne sans filet. Cela nécessite des compétences extraordinaires.
18. Introduction au test en double doubles : Stubs et moques: la mort double des marques sur les arrêts. La dignité est un peu plus difficile avec un environnement complexe. Supposons que le gestionnaire de services soit votre compétent et que vous devez le tester. Ah, chef de
service appelle beaucoup des services externes Si vous utilisez les services rial dans votre test , votre test peut être lent dans le couloir de service. Valeurs non inspectées qui rendent vos tests ni dignes de confiance. Par exemple, votre composant peut se connecter à un change de devises, un p I qui peut renvoyer des valeurs différentes pour la devise dollar euro chaque minute ou peut-être vers le bas ou peut lancer une exception. Ce que nous voulons, c'est un test digne de confiance qui enlève le contrôle du scénario. Vous voulez voir comment la production appelée se comporte lorsque la devise est 1.1 ou 1.2, ou s'il y a une flèche dans le service externe. Ce que nous pouvons faire, c'est utiliser des doubles tests ou des bâtons pour remplacer le rial. marques de service et les portées sont des objets que nous pouvons créer en implémentant la même interface que service
externe. Mais ils sont sous notre contrôle, et nous pouvons simuler les scénarios que nous voulons voler les gens dans l'espace pour cent des
défis intéressants pour les ingénieurs et les astronautes. L' un des plus difficiles est de savoir comment s'assurer qu'un astronaute est prêt à aller dans l'espace. Un test complet d'intégration de la navette spatiale nécessitera d'être dans l'espace, ce qui, évidemment, n'
est pas un moyen sûr de tester l'astronaute. C' est pourquoi la NASA a des simulateurs complets qui imitent l'environnement de la navette spatiale, ce qui élimine la dépendance externe qui vient d'être dans l'espace extra-atmosphérique. Une dépendance externe est un objet dans votre système que vous êtes froid sous test, interagir avec plus que vous n'avez aucun contrôle. Les exemples les plus courants sont cinq menaces système, le temps de
mémoire et ainsi de suite.
19. Tester les doubles stratégies: cette double stratégie pour remplacer les dépendances externes. Nous avons utilisé des doubles de test comme un acteur qui utilise un double pour le remplacer dans des scènes d'action . Une partie de l'unité est une double stratégie. Sont des marques d'arrêt sur être des arrêts de test de conteneur sont des objets insérés jusqu'à l'exécution dans l' objet sous test avec injection de dépendance. C' est pour isoler la couleur du rial. Les marques d'implémentation sont similaires à la différence qu'elles ont enregistré appelées à partir des objets
clients et que vous voulez vérifier que votre code effectue des appels spécifiques à certaines méthodes hors de la marque. Ici, nous avons une classe que nous voulons tester. Cela interagit avec un service externe qui a une interface sur son implémentation riel que nous utilisons dans la production parce que nous privilégions la composition plutôt que l'héritage et nous utilisons l' inversion de
dépendance notre composition hasta de classe avec l'interface, cela dépend de l'interface et non de la mise en œuvre. Cela rend facile de créer un nouvel objet moine ou nous bourrer une implémentation hors de l' interface ONU injectée en temps d'exécution à l'objet hors de la classe sur leur test. Nos tests unitaires seront similaires à n'importe quel test unitaire, avec la différence qu'il va créer un simulacre ou des trucs le configurer non injecté dans l' objet hors de la classe sous test comment utiliser les arrêts, devoir et l'exécution hors du test. L' objet soumis au test invoque des méthodes pour arrêter de croire que c'est la vraie dépendance. L' arrêt renvoie simplement les valeurs qui ont été configurées pour ce test. Lors de l'utilisation de la substance, désert est effectué sur la classe testée. Le test traite la classe testée comme une boîte noire. Lors de l'utilisation de marques pendant
le test, l'objet testé communique avec l'objet simulé, et toute la communication est enregistrée dans la marque. Dans l'assertion, le test utilise l'objet mark pour vérifier que le bureau réussit. Le test traite la classe sous test un peu plus comme un livre blanc, en vérifiant comment la direction avec le service ou Mark Washburn forme de l'objet sur leur bureau.
20. Exemple de Stub: talon. Exemple. Nous reviendrons au premier exemple du test unitaire hors du système de vente. Nous avons un système cellulaire avec une histoire d'utilisateur pour renvoyer le changement à un client. Une douleur en liquide Quand on voit la même classe, c'est très simple. Il y a une méthode de se changer qui reçoit le montant avec ce que le client est. Espagne US A. Paramètre sur les retours le montant moins le total de la vente. Maintenant, nous avons une étude sur les utilisateurs syndicaux. En tant que client, je veux voir le total de la vente dans une autre devise, payer en espèces dans une autre devise sur obtenir mon changement dans une certaine devise. Mais pour l'instant, il suffit de couvrir les euros en dollars américains. À ce stade, le système ne gère aucune autre devise que le dollar américain. Commençons par créer un bureau pour un cas simple. Le total des ventes est en dollars américains. Le rythme des clients en dollars américains sur le changement est en dollars américains. Nous créons une nouvelle vente ou 59 dollars US. Nous appelons la méthode se changer, indiquant que le client place avec 100$ sur veut le changement en dollars américains, et nous affirmons que le changement est 41. Mais nous ne pouvons pas encore exécuter le test parce que la même classe n'a pas de monnaie. Nous avons donc créé un nouveau constructeur que nous avons inventé dans le test avec une devise de paramètre. Et nous sommes la nouvelle méthode se changer, indiquant le montant de la devise de paiement sous la devise modifiée. Dans ce cas, nous pouvons simplement retourner zéro. Nous exécutons le test sur il échoue quels changements nous pouvons faire pour faire passer le test. Pour implémenter cela parce que le test suspect dollars américains, nous pouvons simplement retourner l'ancienne méthode se changer. Ça fonctionnait pour des dollars américains. On est à l'essai dans son bus. Maintenant, nous allons créer un nouveau test pour le cas où le total est en américains dollars
américains, le client coller avec des euros. J' ai reçu le changement en euros. Nous créons une voile au large de 160 en dollars américains. Nous appelons la méthode get change off de la même, indiquant que le client coller avec 200 euros changement indésirable en euros. Et enfin, nous affirmons que le changement calculé est de 80. Nous l'exécutons sur son visage parce que la même classe est toujours en
dollars américains sur les rendements 40. Ici, nous voyons l'interface du service de change. C' est une dépendance externe. Il a une méthode. Obtenez la devise qui renvoie le change de devises d'une devise à une autre. Il y a une réelle implémentation, mais nous voulons créer nos propres trucs. Nous revenons à notre test et nous allons utiliser le moustique qui est un cadre pour créer des marques de portée sur d'autres types. Hors de ce double, nous créons un talon avec une méthode simulée Le bus dans le paramètre de verre d'interface Asa sur nous allons chiffre pour arrêter de dire que lorsque la méthode obtenir la monnaie est appelée avec les paramètres
dollars américains et euros, il doit retourner 0,75. Ensuite, nous injectons l'arrêt dans la vente avec la méthode définie service de devise sur. Nous exécutons le test mais son visage parce que nous n'avons pas fait de changement à la
méthode froide Get changé encore comment nous pouvons faire le patron de bureau, nous allons mettre en œuvre quelque chose comme ça si la monnaie du paiement est différente de la devise de la vente. Nous appelons le service de change pour comparer le total à la même devise du paiement sur nous avons retourné la différence sur le montant du paiement au total comparatif, et nous exécutons le test sur son vert. Pouvez-vous dire ce qui ne va pas avec cette méthode ? Eh bien, vous pouvez dire que si la vente est en américains dollars
américains, le rythme du client en euros. Mais une fois que la chasse nous dollars, cette méthode ne fonctionnera pas. Mais nous ne voulons pas couvrir cette affaire maintenant parce que nous faisons des pas de bébé. Nous devons créer un test avec un tel cas. Fais-le échouer. Défaites le bus. Il s'agit d'une comparaison rapide entre les arrêts et les verrous. Un résumé des arrêts sont beaucoup plus simples. Et à moins que vous ayez quelque chose de très spécifique, vous devriez préférer les arrêts aux marques.
21. Motifs de code d'essai: modèles de code de test. Nous montrer quels sont les virages du Despot et les meilleures pratiques pour les tests unitaires. Ceci est un résumé de ceci. C' est le moins de ces modèles. Cette Onley une chose. Habituellement, cela signifie que l'on affirme protester. Utilisez une classe supérieure de test sous test sur un test par fonction. Jamais utilisé plus d'une protestation de plus, mais beaucoup d'arrêts par test sont bien. Eso préfère les arrêts plutôt que les marques. Il y a aussi au moins hors test mâles qui vous aideront à identifier quand le froid des tests devient hors de contrôle. Si vous avez la duplication Tesco, vous pouvez utiliser l'utilitaire Essais Perama, test ou test. À quoi ressemble le froid stable avec l'écriture du test. D' abord, nous avons le courage d'écrire du froid testable. Lorsque vous évaluez vos solutions, vous pouvez envisager de faire une architecture en couches, appliquant des modèles hors architecture d'entreprise sous la conception principale. Casser les dépendances de sorte que vous pouvez tester avec des choses ou des simulations par injection d'indépendance d'utilisation. Appliquez les principes solides. Utiliser le programme dans par intention. Cherchez à écrire des manteaux Cohasset et évitez les états globaux. Dans le diagramme, vous pouvez voir comment testable appelé ressemble généralement
22. Les prochaines étapes: prochaines étapes. Voici quelques prochaines étapes afin que vous puissiez pratiquer le DDT. Installez un environnement de développement pour votre langage de programmation sous le correspondant X Unit Framework en Java, ce sera Java Development Kid sur Eclipse, qui inclut déjà leur unité. Ce sont des étapes simples qui sont décrites dans leurs sites Web. Mais la meilleure chose à exercer TDD est de faire Caritas Est-ce qu'il a pris à nous est la façon pratiquer seins sur Mastered la technique. Internet est plein hors site sur le blog de TDD Qaida certains célèbres Obtenez nous pour commencer notre balle en
rafale de poing et calculatrice de cordes. J' espère que vous avez apprécié cette malédiction sur ce qu'Il était utile si vous attendiez quelque chose qui manquait. S' il vous plaît laissez-moi savoir. Donc, je vois comment améliorer ou compenser afin que je puisse obtenir les meilleurs commentaires pour nouveau Merci
23. prochain cours: Si vous avez apprécié ce cours, vous pouvez inviter un ami. J' ai utilisé votre code de référence pour prendre le Spock abandonné référant un ami. Maintenant, il est temps de continuer avec votre prochain cours. Vous pouvez continuer avec Scrum en profondeur pour apprendre les fondamentaux de Scrum. Ou n'hésitez pas à jeter un oeil à mes autres cours dans mon profil. J' ai une belle journée et je te vois dans le prochain cours.