"トップダウン"はalready used in computing to describe an analysis techniqueです。私は、代わりに "外出先"という言葉を使用することをお勧めします。
Outside-inは、システムに複数のユーザーインターフェイスが存在することを認識しているBDDの用語です。ユーザーは他のシステムと同様に人になることができます。 BDDアプローチは、TDDアプローチに似ています。それはあなたを助けるかもしれないので、私はそれを簡単に説明します。
BDDでは、シナリオから始めます。通常、システムを使用するユーザーの簡単な例です。シナリオの回りの会話は、システムが何をに実際にしなければならないかを理解するのに役立ちます。ユーザーインターフェイスを作成し、必要に応じてそのユーザーインターフェイスに対してシナリオを自動化することができます。
私たちはユーザーインターフェイスを書くとき、できるだけ薄くします。ユーザーインターフェイスは、コントローラ、ビューモデルなどの別のクラスを使用します。そのために、APIを定義することができます。
この段階では、APIは空のクラスまたは(プログラム)インターフェイスのいずれかになります。次に、ユーザーインターフェイスでこのコントローラを使用する方法の例を記述し、コントローラがどのように価値を提供するかを示します。
この例では、コントローラの責任の範囲、リポジトリやサービスなどの他のクラスに責任を委任する方法も示しています。私たちは、mockを使用してその委任を表現することができます。次に、そのクラスを作成して、サンプル(単体テスト)を動作させます。私たちは、システムレベルのシナリオを実現するための例を書いています。
モックのインターフェイスが最初は推測されてから、クラスが書き込まれるにつれてより完全に浮かび上がるので、モックされたサンプルを再加工するのが一般的です。これは、インターフェイスやAPIの次のレイヤーを定義するのに役立ちます。これについては、さらにモックを必要とせず、最初のシナリオが終了するまで、さらに多くのサンプルを記述します。
さらに多くのシナリオについて説明しますので、クラス内で異なる動作を作成します。異なるシナリオとユーザーインターフェイスで同様の動作が必要な場合は、リファクタリングして複製を削除できます。
これを外部で行うことで、できるだけ多くの情報を得て、できるだけ早くそれらのAPIを再作成します。これはReal Options (never commit early unless you know whyの原則に適合します)。私たちは使用しないものは作成せず、API自体も使いやすさのために設計されています。コードは、プログラミング言語よりもドメイン言語を使用してより自然なスタイルで書かれ、より読みやすくなりがちです。コードは書かれているよりも約10倍も読み込まれるため、これは保守性にも役立ちます。
そのため、ボトムアップのインテリジェントな推測ではなく、外部からのアプローチを使用します。私の経験によれば、よりシンプルで、より強く分離され、より読みやすく、メンテナンス可能なコードになります。
合格するとアプリケーションが動作していることを確認し、問題が解決したことを示す上位レベルのテストケースがありますか?すべてが機能していることを証明するもの(もちろん、UIを維持する)。 (私はTDD初心者でもあります) –
私は高レベルのテストケースを持っていませんし、それが欠けているかもしれません。質問だけです:このような高レベルのテストはどのように見えますか?アプリケーションは、コンソールにのみテキストを生成します。私はそこに書かれていることを主張するべきですか? – Chris
"統合"とは、オブジェクトの配線が正しいことをテストすることを意味するのではなく、すべてのクラスが一緒に期待どおりに機能することを意味します。さて、ほとんどの人は、作業が終わったかどうかを示すテストケースをいくつか用意することをお勧めします。あなたが主な機能で持っているものは、マーカスが指摘したように、確かにテストです.1つの肯定的なテストです。主な方法は、テスト駆動型アプリケーションで書かれる最後のメソッドです。受け入れテストを見ることをお勧めします。この本はあなたにとって興味深いかもしれません:http://www.growing-object-oriented-software.com/ –