ウィキペディアによると、TDD の手順は次のとおりです。
ステップ 1: 単体テストを作成する
ステップ 2: 単体テストを実行する
ステップ 3: モジュールのコードを書く
ステップ 4:すべてのテストを再度実行する
ステップ 5: コードをクリーンアップする
ステップ 6: ステップを繰り返す
質問 1 : TDD では、主に単体テストを作成します。統合テストとシステム テストは、上記のステップのどこに当てはまりますか?
次の例を検討してください。
開発しなければならない機能があるとします。次に、TDD に従って、短いイテレーションでこの機能を開発します。この機能をモジュール 1 とモジュール 2 の 2 つのモジュールに分割したとします。上記の手順に従って、TDD でこれらのモジュールを開発するための反復手順を記述しています。(質問 2) 次の手順で間違っているところを訂正してください。
**反復 1: **
ステップ 1: モジュール 1 の単体テストを作成します。
ステップ 2: モジュール 1 に対してこの単体テストを実行します (このテストは失敗します)。
ステップ 3: モジュール 1 のコードを開発します。
ステップ 4: モジュール 1 の単体テストを再度実行します (このテストはパスします)。
**反復 2: **
ステップ 1: モジュール 2 の単体テストを作成する
ステップ 2: モジュール 2 の単体テストを実行する
ステップ 3: モジュール 2 のコードを書く
ステップ 4: モジュール 1 の単体テストとモジュール 2 の単体テストを実行します。モジュール 2 がモジュール 1 の機能を壊さないかどうか、私の質問は、ここではモジュール 2 のみをテストしていることです。まだモジュール 1 と統合されていないので、モジュール 1 をどのように壊しますか?)
**反復 3: **
ステップ 1: 統合テストを作成する (ここにいますか? )
ステップ 2: 統合テストを実行します (モジュール 1 とモジュール 2 がまだ統合されていないため、テストは失敗します)。
ステップ 3: モジュール 1 とモジュール 2 を統合する
ステップ 4: すべてのテストを実行する (モジュール 1、モジュール 2 の単体テスト、および統合テスト)
(質問 4: なぜこのステップでモジュール 1 と 2 の単体テストを実行するのですか?)
反復 4 (すべてのモジュールが統合されている場合):
ステップ 1: システム テストを作成する
ステップ 2: システム テストを実行します (失敗します)。
ステップ 3: (質問 5:) システム テストに関しては、ここにどのコードを記述すればよいですか? TDD の原則に従って、最初にテストを記述し、次に開発コードを記述するので、ここにどのコードを記述しますか?