この回答を書いている時点で、私はそれがテストではなく、ドキュメントに関するものであることに気づきました。最初にアジャイルマニフェストを読んでください:
[私たちは評価します] 包括的なドキュメントよりも実用的なソフトウェア
したがって、仕様を実行可能にする必要があります。つまり、仕様を完全に自動化された一連のテストとして記述します。
ストーリーに基づいた仕様を書くことは良い考えですか?
はい、私見です。「振る舞い主導の開発」または「例による仕様」と呼ばれています。ルビーには、その点で非常に役立つ素晴らしいツールキュウリがあります。
問題は、ストーリーが多すぎるため、システムのどの部分にストーリーが関連しているかがすぐには明らかにならないことです。
なぜそれをはっきりさせたいのですか?つまり、「テスト/コード」のトレーサビリティマトリックスが本当に必要なのでしょうか。テストを仕様として作成する利点は、テストが要件になるため、個別の「要件/テスト」のトレーサビリティが不要になることです。統合テストの目的では、ソフトウェアを個別の部分としてではなく、全体として扱う必要があります。
仕様テストでカバーされていないシステムの一部である「デッド」モジュールがあるかどうかを確認するには、カバレッジツールが必要になる場合があります。しかし、この特定のコードがどの仕様に対応するかを気にする必要はありません。特定の仕様から、システムのどの部分がそれに対応するかを知る必要があります。仕様の重複を心配する必要はありません。また、DRYの原則をコードに適用すると、同じコードを実行する数十の仕様になります。
それは開発者の時に機能し、すべてのスプリントは開発者が何をする必要があるか、そして彼らが行う必要がある変更を概説するスペックを取得します。しかし、このストーリーリストの維持とテストに関しては、バグの追跡が非常に難しくなり、一般的には仕様のみを維持することになります。これは、画面の機能の一部がさまざまな場所で文書化されているためです。ストーリーで分割。
重要なモジュールの1つの小さな変更によって何百もの統合テストが失敗することは珍しいことではありません。ユニットテストのステップです。
特定のテストが高レベルの要件をカバーしているか、またはその微妙な詳細をカバーしているかを判別できるように、テストをそのように構成する必要があります。後者の場合、このテストを統合テストスイートから分離する必要があります。単体テストの目的は、バグを特定することです。そのため、バグを導入した場合、テストは1つだけ失敗します。
ストーリーを間違った方法で書きましたか?
ストーリーは、ユーザーごと、たとえば「顧客」、「アシスタント」、または機能/画面/ワークフロー(「購入」、「払い戻し」)のいずれかでエピックに整理する必要があるだけだと思います。
また、仕様テストはユニットテストの代わりにはなりません。続きを読む