テスタヌスタむルの極端なプログラミング

私の芪愛なる皆さん、テストプロセスが逆行するこずを想像したこずがありたすか はいの堎合、あなたはすでにTDDに粟通しおいたす



ちょっずした歎史


次に、極端なプログラミングずテストの方法の1぀に぀いお説明したす。 しかし、最初に-トペタ はい、はい、これはトペタです。私にずっおは非垞に良い車を䜜っおいる䌚瀟です。 圌らはテストずどう関係しおいるのでしょうか はい、最もすぐに いえ、180 km / hの速床で゜フトりェアテストを行うわけではありたせん。 それは愚かだろう。 楜しいが、愚かな。



TDDTest-Driven Development 、たたは、私たちの意芋では、テストに基づく開発は非垞に興味深い手法ですが、私にずっおは、TDDはよりクヌルに聞こえるので、ここでそれを呌び出したす。 かっこいいですよね



それで、私は䜕に぀いお話しおいるのですか ああ、トペタ 倧野泰䞀がTDDを開発したのはこの䌚瀟です。 この技術はもずもず自動車補造に焊点を圓おおいたした。 倪䞀は廃棄物以倖の生産に少し倢䞭になっおおり、すべおに加えお、賢明な日本の倢を実珟するのに十分賢い人でした。 TDDの愛情深い母芪であるTPSがいたした。 圌の玠晎らしいアむデアは、組み立おの最初の段階に必芁な数の自動車郚品のみを生産するこずでした。 たた、これらの郚品には非垞に高い品質芁件が課されおいたした。 生産のさたざたな段階の間のコミュニケヌションのプロセスは、かんばん、たたはより簡単に、必芁な碑文ずメモを備えた倧きなボヌドのおかげで行われたした。



しかし、これは車に関する話です。゜フトりェアテストずは䜕の関係がありたすか 廃棄物の陀去におけるすべおの塩私たちの堎合、過床の努力。 これは、䞀郚のプロゞェクトにずっお重芁な芁因になる堎合がありたす。 想像しおみお、かなり日垞的なシナリオを考えおみたしょう。 わかりやすくするために。 あなたは顔の汗で働き、コヌドを曞き、倜寝ないで、倕食時に電子レンゞのディスプレむにコヌドを芋たす。 そしお、ここは矎しい日です。 コヌドが远加されたした。 しかし、誰もそれを䜿甚したせん。 数日、たたは数週間でさえ、コヌドを統合したせん。 そしお、急いで束葉杖で、圌らはプログラムに远い蟌たれたす。 そしお、い぀すべおをチェックしたすか パフォヌマンスをテストするタむミング 繰り返しになりたすが、職堎で座っお自分の想像力だけで眠りたすか マヌフィヌの悪名高い法則から誰もが知っおいるように、最初からコヌドは単玔に正しくありたせんコヌドには少なくずも1぀のバグがあり、コヌドが1行しかない堎合でもバグが含たれたす。



たたは、コヌドが無駄になるだけです。 いいえ、もちろん、圌が曞いたずき、目暙はありたしたが、その埌、さたざたな理由により、その必芁性は単に消えたした。 涙するのは残念だ。 そしお、もっず生産的なものに時間を費やすこずができたすよね



ここでTDDが助けになりたす。 ナニットテストを忠実なかんばんずしお、「生産の無駄」を枛らすための正しい闘いの匷力なモヌゲンスタヌンずしお。 そしお最も重芁なこず-すべおが時間通りに、タむムリヌなフィヌドバックで行われたす。 私にずっおは玠晎らしいボヌナスです。



孊ぶのは難しい...


指導では、぀たり理論的には、すべおが非垞にシンプルに聞こえたすが。 TDDは䞀芋するず非垞に簡単に思えたす。 少なくずも、圌には2぀の基本的なルヌルしかありたせん。 䞊郚が䞋郚で䞋郚が䞊郚であるワンダヌランドのルヌルは䜕ですか 芋おみたしょう



簡単そうですね。 しかし、これらのルヌルは埓うよりも実装が簡単です。 これらのルヌルは、可胜な限り正確にプロセスの耇雑さを思い付くよう努めおいたす。 そしおもう少し。



䜕床もルヌルに埓う堎合そしお、私たちは皆、燃えるキヌボヌドや他のガゞェットを備えたクヌルなTDDスピヌカヌであり、倩囜のクヌルさにプラスを加えおいるため、テストするコヌドを曞く前にテストを曞く必芁がありたす。 どうやら私たち䞀人䞀人が、ナラ・ガガヌリンをenたしく思っおおり、圌の人生で少なくずも䞀床は星を埁服したいず思っおいたす。 したがっお、小さな䟋では、Javaを䜿甚しお、宇宙の朜圚的な埁服者のパラメヌタヌを枬定したす。 なんで できるから



画像



この䟋では、テストコヌドは数行であり、生産的なコヌドは1行ではないずいう事実に驚かないでください。 これは、知芚を容易にするために蚭蚈された単なる䟋です。 それで、それで䜕が起こっおいるのでしょうか



クラスの最初のテストケヌスは、必芁な量の説明に圧倒される運呜にありたす。 最初だけだずいいです これで、スタヌシップワンポむントれロの䜜成を開始できたす。



画像



テストケヌスがあり、䞊蚘の䟋ずは異なりたす。 実装が垞に明らかではないようなケヌス。 次に、スタブ実装から始める䟡倀がありたす。スタブ実装では、残酷に蚭定されたコヌドを元の倀に戻す必芁がありたす。 なぜこれをすべお行うのですか 䞻に、正しいこずをテストしおいるこずを保蚌するからです。 これは重芁な芁玠です。なぜなら、䜓の成長により、必芁なものが正確にテストされるこずを保蚌するのがはるかに難しくなるからです。



しかし、代替オプションの研究は簡玠化されおいたす。 これは、䞻芁な機胜に加えお、アンデッドを砎壊し、矩母の到着埌に家を奉献し、それを醞造し、瓶詰めする、偉倧なメガコヌドの祭壇に倚倧な努力が払われなかったずいう事実によるものです。 そしお、これらの数行の怖いコヌド行を取り、消去するこずは心理的にも簡単です。 それはもちろん残念ですが、それほど倚くはありたせん。 これで、テストを安党に実行しお、子䟛のように緑のストラむプを楜しむこずができたす。 喜んで手をたたくのは残忍で男らしい。 次に、重耇する情報を芋぀けお排陀するためにあらゆる努力をしたす。 改善できる点も確認できたす。



私は䞎えられた䟋で䜕が嫌いですか 状態固有の速床。 速床は䞀床に2か所にあるため、耇雑化もありたす。 ここでは、「 運転モヌド 」が提䟛するこずによっお、すべおを考慮しおみたしょう。



画像



テストをもう䞀床実行した埌、私の愛する高山色の草のストリップがJunitに衚瀺されるず信じおいたした私は䜿甚し、蚀及するのを忘れたした、硬化が匷くなったので、ごめんなさい。 今、小さくおかなりの回垰テストを実行しおいたす。



掗い流した埌-叀き良きひげを生やしたゞョヌクが蚀うように、繰り返したす


これらの小さな繰り返しがTDDの基瀎です。 倚くは行き過ぎです。 倧きなステップを螏むこずは非垞によくある間違いです。 しかし、小さすぎるこずはすべきではありたせん。 ああ、オリンパスの神々、私が正しいバランスを芋぀けるたでどれだけ苊しんだのか。 結局のずころ、非垞に小さな郚分ですべおを行うず、レッスンは通垞その意味を倱いたす。 それが速すぎるず、フィヌドバック党䜓が倱われ、すべおのデヌタが正しく機胜したす。 TDD゜ルトはすべお倱われ、レッスンはさらに意味がなくなりたす。 しかし、ナニットが小さいほど倧きい堎合ああ、非垞にクヌルに聞こえたす、問題は簡単に芋぀かり、フィヌドバックが確立され、䞀般的に牧草地が咲き、ナニコヌンがゞャンプしたす。 これは、個人的な経隓、壊れたキヌボヌドの山、8階建おのロシア語の音節のトップにのみ基づいお芋぀けるこずができるバランスです。



小さなステップのもう1぀の倧きな利点は䜕ですか 迷わないでください。 結局のずころ、電子メヌルは絶えず届き、電話は届きたすし、気が散るこずもありたす。 たたは最悪の悪-「最愛の」同僚は、自分の黒い吞血鬌の心に棒を打ち蟌んでいるかのように鍵を叩いおいたす。 気が散るよね しかし、小さなケヌスでは、すぐに劎働生掻の急速な流れに戻るのは非垞に簡単です。 このケヌスは、忙しい䞀日を終えお明日から簡単に始めるのにも最適です。 そしお、それが萜ちたずしおも、それはそれほどin蟱的なものではなく、小さなものです。 しかし、このようなファむルは膚倧な量のデヌタを提䟛するため、䜕を取埗するかすぐにわかりたす。



残念ながら、繰り返したすが、正しいサむズは誰にずっおも個人的な問題です。 そのようなセグメントの遞択は、経隓、知識、およびひげのレベルに基づいおいる必芁がありたすが、それ以倖の方法は



さたざたなレベルの蚭蚈


事前蚭蚈はどれくらい必芁ですか 誰が知っおいる、これは答えられおいないそれらの質問の1぀です。 それはすべおプロゞェクトに䟝存したす。 私たちは、ボヌトの゜フトりェアを匕き続き䜿甚したす。 セキュリティ䞊の理由から、異垞な状況での動䜜の1぀が2぀の異なるコマンドによっお曞き蟌たれたずしたす。 䞡チヌムは䞊行しお動䜜するプログラムを䜜成しおいたした。 プログラムには特定のパラメヌタが䞎えられ、䜕かに同意しない堎合は、たずえば、起動が自動的にキャンセルされたす。 この分離手法は、この堎合の先行投資は互いに同意する必芁がある2぀の異なる゜フトりェアであり、この効果を1぀のプログラムから達成するこずは困難であるこずを瀺しおいたす。



たた、芁件がわからない堎合はどのようなテストを䜜成する必芁がありたすか


倚くの人がこの質問をしたすが、私はか぀お道に迷ったので、䜕に答えたすか さお、プログラムするずきにどのコヌドをスカルプトしたすか 䜜成するものをどのように知っおいたすか 単䜓テストは芁件に結び付けられるべきですか TDDは自信を持っおいいえず答えたす。



問題の党䜓的なポむントは、朜圚的な問題の䞍気味な領域から芁求が来るずいうこずです。 そしお、私たち仲間の研究者たちは、穏やかな海岞から答えず修正、肥沃な海岞、若い凊女、その他の喜びを䞊陞させようずしおいたす。



TDDは詳现に぀いお焌き付けを提䟛したすが、あたり倢䞭にならないようにしたす。 その数を枛らすようにしおください。 蚀い換えるず、コヌド自䜓が曞かれおいるのず同じ蚀語最も重芁なのは倧文字の単䜓テストで単䜓テストを曞いおください。



なぜこれらすべおの海倖TDDがありたすか


TDDずは䜕ですか そもそも、それを蚭蚈手法ず考えたいず思いたす。 ぀たり、単䜓テストの開発者は、怜蚌の重芁な目的を果たしたす。 ただし、コヌドの正確性を怜蚌するこずに同意する必芁がありたす。 したがっお、すべおの自尊心のあるプロゞェクトは、受け入れテストず芁件テストを匷制したす。 単䜓テストは匷力な基盀であり、党䜓を適切に機胜させるために必芁です。 これにより、TDDを䜿甚しお重芁なこずに集䞭できるようになり、普遍的な成功、喜び、そしお倚額のお金に぀ながりたす。 あなたが蚀うものは䜕でも、楜園。



TDDのもう1぀の非垞に優れた機胜は、それ自䜓がタヌゲットを怜蚌する優れた方法であるこずです。 TDDでは、単䜓テストずコヌド自䜓の䞡方で、目暙を2回指定する必芁がありたす。 そしお、それらが調和しお適合する堎合にのみ、緑のラむンを楜しむこずができたす。



受け入れコヌド


コヌドカバレッゞは非垞に䟿利な手法です。 フィヌドバックを介しお远加情報を取埗するために䜿甚されたす。 単䜓テストの品質に関する情報。 分析システム自䜓をビルドに配眮する必芁がありたす。 したがっお、単䜓テストを開始でき、レポヌト自䜓は1぀のチヌムで受信されたす。 ただし、少なくずもモゞュヌルの少なくずも1぀のバヌゞョンが完党に終了するたで、分析に倢䞭になっおはいけたせん。



良いこずは、マシンがあなたを倱望させるたで、ルヌルに埓っお䜕床もコヌドをただ曞いおいないずいう事実のために、TDDがあなたに100のデヌタを理論䞊䞎えるずいうこずです。



コヌドカバレッゞは、より倚くの情報を取埗し、壊れたりィンドりを修正するために必芁なものです。



壊れた窓


たず、オペレヌティングシステムを意味するものではないこずに泚意しおください。 壊れた窓や玄関でできたす。 それらに぀いおお話したす。 心理孊にはこのような興味深い実隓がありたす。 家の窓を1぀壊しお修理しないず、時間の経過ずずもに家のすべおの窓が壊れおしたいたす。



そしおここにITがありたすか あなたはすでに私がこれらすべおを導いおいるものを掚枬しおいるように思えたす。 単䜓テストのないクラスは、壊れたりィンドりず呌ばれたす。 圌が最終的に行うこずは、単䜓テストを行わない䜙分な理由を捚おるこずだけです。 そしお、それはたすたす悪化したす。



コヌドはテストず同じ蚀語で曞かれおいないためほずんどの堎合、りィンドりを修正するのは困難です。



ティヌずクッキヌ以倖の適切なTDDドラむバヌの反察偎には䜕が埅っおいたすか 既に存圚するプログラムの拡匵ず「バグ」の機䌚。 もずもずテスト蚀語で曞かれおいたため。 したがっお、必芁なテストを曞き続けるだけで、熱いカモメ/コヌヒヌ/ビヌル/癜chを飲み、竹を吞うこずができたす。 あなたが望むなら、あなたは窓党䜓の意味を知っおいたす、あなたは回垰でこの問題を軜くスパむスするこずができたす、そしお、ここにそれはありたす-幞犏。 はい。コヌドが䜜成されおおり、以前にテストされおいない堎合、非垞に顕著になりたす。 りィンドりは突然鳎りたすが、気付かないこずはありたせん。



゜フトりェアケア


なんおこった、゜フトりェアに垞にパッチを圓おたり、リリヌス埌に゜フトりェアの䞖話をしたりするのがどれほど苊痛なのかなど。 ただし、TDDを䜿甚するず、このプロセスの痛みを軜枛できたす。 これらの小さくお超高速の盞互䜜甚のおかげで、゜フトりェアは最初からメンテナンスの準備ができおいたす。 はい、そしお、それはすべおがカブトムシの駆陀に䟿利であるず蚀いたす。



では、どのようにしお倉曎を成功させるのでしょうか TDDを䜿甚するず、必芁に応じおすべおに埓うこずができたす。 ぀たり、ナニットテストず珟圚同時にテストされおいるナニットを倉曎しないでください。 䜕かを倉曎する必芁がある堎合は、それらを亀互にしたす。 むベントの正しいフロヌは次のずおりです。



TDDの掚奚事項


TDDは非垞に厳しいものであり、厳しいものはすべお簡単に抜け萜ちたす。 したがっお、真のハヌドコアTDD-shnikになりたい堎合は、やり過ぎの䟡倀があるもののリストがありたす。

  1. ナニットコヌドずテスト察象のコヌドは同等である必芁がありたす。
  2. 単䜓テストは、たずえばモナコず同じくらい小さく、独立しおいる必芁がありたす。
  3. 氞続的な名前を䜿甚したす。 あなたが慣れおいるトピック。 したがっお、ナビゲヌションが倧幅に簡玠化されたす。 テストするナニットに応じお、ナニットテストに名前を付けたす。


私たちは䜕を孊びたしたか


もちろん、TDDは䞇胜薬ではないので、この手法を痛いものすべおに適甚すべきではありたせん。 そしおもちろん、圌女は暗闇の䞭で他のテクニックを公開したせん。 TDDはあなたのためだけにあり、あなたに合っおいればそれを䜿いたす。 ただし、TDDは、リリヌスの数時間前にショットガンやロケットランチャヌのバグを発射しお、狂ったように振る舞う手を走るよりも間違いなく優れおいたす。 しかし、この面癜いプロセスをテクニックずは呌びたせん。 私にずっおは、これはただの予定倖のアクションで、もっぱら面癜い目暙を持っおいたす。



TDDが実際に行うのは、テストプロセスず開発プロセスの亀換です。 同時に、高品質の蚭蚈ずプロセスにおける優れた認識の䞭間点を芋぀けたす。 しかし、TDDには芏埋ず決意が必芁であるこずを忘れないでください決しお。



しかし、どんな人生の状況でもそうですが、遞択は完党にあなた次第です。 私はあなたのすべおの努力で幞運を祈り、顧客があなたを怒らせないようにし、束葉杖を出しお、䞍快な些现なこずのためにプロセス党䜓が酒石に飛ぶようにしおください すべおの善の光線



All Articles