テスト駆動開発について短いプレゼンテーション(2〜4時間)を行う必要があり、TDD手法を使用して構築できる小さなクラスを考え出す必要があります。クラスは比較的小さくする必要がありますが、TDDの概念を「販売」します。
誰かがJamesNewkirkの本「Microsoft.Netでのテスト駆動開発」を読んだことがあるなら、Stackの例は完璧です。これは少人数のクラスであり、テスト/要件の管理可能なリストがあり、作成プロセスではTDD(IMHO)が販売されています。
Newkirkの作業に影響を与えることを恐れて、Stackの例や同様のデータ構造(キュー、リストなど)を使用したくありません。
そこで、サンプルクラスの良いアイデアをいくつか探しています。
ありがとう。
ケントベックのお金の例の最初のセクション を使用するのはどうですか。それは非常に単純に始まりますが、2つの異なる通貨の追加に到達すると、TDDは突然、先行設計、つまりYAGNIの偽りを示します(これは必要ありません)。
もう1つの良い例は、ボブおじさんの ボウリングスコアTDDの例 です。これは、TDDの説明が、事前の設計では明示的にアプローチできなかったクリーンなソリューションにどのようにつながるかを示す良い例だと思います。
非常にエキサイティングなプレゼンテーションにするために、事前に、適切と思われる方法を使用して2つのシナリオを設計するように聴衆に挑戦することができます。次に、それらを設計するTDDの方法を示します。
TDDでの私にとっての本当のWTFの瞬間は、ベックがMoneyの2つのサブクラスを削除し、テストが機能したときでした。これは些細なことではありません。男は2つのクラスを削除しました!このようなことをする自信は、2つの方法でのみ見つけることができます。
1)コードベースにすべてのシニアプレーヤーを集めてシナリオを実行し、その後、それが機能することを確認するための広範なフォロースルーを行います
2)TDD
= D
時間があれば、テストで抽象化される、ある種の外部依存関係のある例を選びます。データベース、GUIの呼び出し、リモートシステムの呼び出しなど。
その理由は、TDDのブロックの1つは、例が自己完結しすぎているように見えるためです。 「確かに、すべてが自己完結型のユニットである場合、単体テストを行うことができますが、統合するシステムが15ある場合、ポイントは何ですか?」ものの種類。
また、既存のクラスをTDDに移行するために移行する例を、最後に少なくとも1つ示します(ハウツーについては、MichaelFeatherの著書WorkingEffectively with Legacy Codeを参照してください)。例としてそれにこだわる必要はありませんが、聴衆はその朝に書いたクラスをどのように移行するかを考えている可能性があります。
TDDの問題 には、単純なものからそれほど単純ではないものまで、問題のリストがあります。
一部には、まだ解決策がない状態から開始するテストのリストがあります。
あなたが本から完璧な例を持っているなら、あなたはそれを使って本を宣伝するべきです。それに反対する著者はいないでしょう。
それとは別に、私は数年前にTDDのプレゼンテーションに参加しました。このプレゼンテーションでは、例は単純な計算機であり、美しく機能しました。
私はよく知られたドメインから何か小さなものを見つけようとします。最近、ASPNET.MVCに基づいたBDD/TDDについてプレゼンテーションを行いました。これには、1つのコントローラー、1つのアクション、およびビューモデルが含まれていました。また、依存関係コンテナとモックフレームワークを導入する機会も与えられました。
TDD/Extreme/Agileコミュニティのもう1つの古典的な例は、ボウリングゲームの例です。 TDD内のさまざまな手法の例と調査のために、ベックとマーティンの両方で、またxprogramming.comで何度も使用されたことを思い出しているようです。
手足に出て、聴衆からの要求を受け取ります。 :)
目標がTDDの販売である場合は、大規模なテストベースの小規模なリファクタリングも表示する必要があります。小さなサンプルで動作させるのは簡単ですが、ほとんどの開発者は今それを受け入れています。スケーラビリティについてはもっと疑問があります。高度なトピックは、レガシー(単体テストなし)コードの大規模なベースを処理する方法です。
シンプルなカードゲームは、特に結果を視覚的に表現できるので便利です。
そして、あなたはコーディング道場をプレゼンテーションフォームとして使うつもりだと思いますね。派手なパワーポイントはありません。一般の人がプログラマーでない場合は、Excelサンプルを使用してください
足し算、引き算、掛け算などの簡単な数学の授業はどうですか?
ローマ数字。ソースコードのコメント以外の行を数えます。ハノイの塔。そこにはたくさんのアイデアがあります。
この本を自分で購入することをお勧めします 例によるテスト駆動設計 ケントベックから。
この本は、TDDを介して1つのクラスを構築することにほぼ完全に焦点を当てています。