web-dev-qa-db-ja.com

TDDを実証するための良いサンプルクラスは何ですか?

テスト駆動開発について短いプレゼンテーション(2〜4時間)を行う必要があり、TDD手法を使用して構築できる小さなクラスを考え出す必要があります。クラスは比較的小さくする必要がありますが、TDDの概念を「販売」します。

誰かがJamesNewkirkの本「Microsoft.Netでのテスト駆動開発」を読んだことがあるなら、Stackの例は完璧です。これは少人数のクラスであり、テスト/要件の管理可能なリストがあり、作成プロセスではTDD(IMHO)が販売されています。

Newkirkの作業に影響を与えることを恐れて、Stackの例や同様のデータ構造(キュー、リストなど)を使用したくありません。

そこで、サンプルクラスの良いアイデアをいくつか探しています。

ありがとう。

46
SergioL

ケントベックのお金の例の最初のセクション を使用するのはどうですか。それは非常に単純に始まりますが、2つの異なる通貨の追加に到達すると、TDDは突然、先行設計、つまりYAGNIの偽りを示します(これは必要ありません)。

もう1つの良い例は、ボブおじさんの ボウリングスコアTDDの例 です。これは、TDDの説明が、事前の設計では明示的にアプローチできなかったクリーンなソリューションにどのようにつながるかを示す良い例だと思います。

非常にエキサイティングなプレゼンテーションにするために、事前に、適切と思われる方法を使用して2つのシナリオを設計するように聴衆に挑戦することができます。次に、それらを設計するTDDの方法を示します。

TDDでの私にとっての本当のWTFの瞬間は、ベックがMoneyの2つのサブクラスを削除し、テストが機能したときでした。これは些細なことではありません。男は2つのクラスを削除しました!このようなことをする自信は、2つの方法でのみ見つけることができます。

1)コードベースにすべてのシニアプレーヤーを集めてシナリオを実行し、その後、それが機能することを確認するための広範なフォロースルーを行います

2)TDD

= D

25
Noel Kennedy

時間があれば、テストで抽象化される、ある種の外部依存関係のある例を選びます。データベース、GUIの呼び出し、リモートシステムの呼び出しなど。

その理由は、TDDのブロックの1つは、例が自己完結しすぎているように見えるためです。 「確かに、すべてが自己完結型のユニットである場合、単体テストを行うことができますが、統合するシステムが15ある場合、ポイントは何ですか?」ものの種類。

また、既存のクラスをTDDに移行するために移行する例を、最後に少なくとも1つ示します(ハウツーについては、MichaelFeatherの著書WorkingEffectively with Legacy Codeを参照してください)。例としてそれにこだわる必要はありませんが、聴衆はその朝に書いたクラスをどのように移行するかを考えている可能性があります。

8
Yishai

TDDの問題 には、単純なものからそれほど単純ではないものまで、問題のリストがあります。

一部には、まだ解決策がない状態から開始するテストのリストがあります。

7
philant

難易度の高い順に、私が好きな3つ:

  • 範囲(整数の; isEmpty()、contains()、intersects()、length()を実装)
  • 自然順
  • ヘビ

30分あれば、Rangeを実行します。 90分、おそらく自然順。詳細:ヘビ。ただし、聴衆によって異なります。

3
Carl Manaster

あなたが本から完璧な例を持っているなら、あなたはそれを使って本を宣伝するべきです。それに反対する著者はいないでしょう。

それとは別に、私は数年前にTDDのプレゼンテーションに参加しました。このプレゼンテーションでは、例は単純な計算機であり、美しく機能しました。

3
Bill the Lizard

私はよく知られたドメインから何か小さなものを見つけようとします。最近、ASPNET.MVCに基づいたBDD/TDDについてプレゼンテーションを行いました。これには、1つのコントローラー、1つのアクション、およびビューモデルが含まれていました。また、依存関係コンテナとモックフレームワークを導入する機会も与えられました。

2
Thomas Eyde

TDD/Extreme/Agileコミュニティのもう1つの古典的な例は、ボウリングゲームの例です。 TDD内のさまざまな手法の例と調査のために、ベックとマーティンの両方で、またxprogramming.comで何度も使用されたことを思い出しているようです。

1
Tetsujin no Oni

手足に出て、聴衆からの要求を受け取ります。 :)

1
JP Alioto

目標がTDDの販売である場合は、大規模なテストベースの小規模なリファクタリングも表示する必要があります。小さなサンプルで動作させるのは簡単ですが、ほとんどの開発者は今それを受け入れています。スケーラビリティについてはもっと疑問があります。高度なトピックは、レガシー(単体テストなし)コードの大規模なベースを処理する方法です。

シンプルなカードゲームは、特に結果を視覚的に表現できるので便利です。

そして、あなたはコーディング道場をプレゼンテーションフォームとして使うつもりだと思いますね。派手なパワーポイントはありません。一般の人がプログラマーでない場合は、Excelサンプルを使用してください

1

アジャイル開発に不可欠なスキル-KaIokTong。この本はアジャイルに関するものですが、テスト、特にTDDに関するいくつかの章が含まれています。著者は、要件からコーディングすることによってTDDを説明し、TDDの問題を解決する方法についての彼の考えも書き留めます。あなたはこの本を見つけるかもしれません ここ 。コンセプトと最新のツールの詳細を更新するには、 ここ

1

足し算、引き算、掛け算などの簡単な数学の授業はどうですか?

1
Henrik Paul

対象読者がTDDに慣れていない場合は、以下の例を使用することをお勧めします。これにより、TDDの概念と実装を十分に理解できます。

  1. 銀行口座

  2. ボウリングゲーム

0
Mukesh Chauhan

ローマ数字。ソースコードのコメント以外の行を数えます。ハノイの塔。そこにはたくさんのアイデアがあります。

0
David Plumpton

この本を自分で購入することをお勧めします 例によるテスト駆動設計 ケントベックから。

この本は、TDDを介して1つのクラスを構築することにほぼ完全に焦点を当てています。

0