Q. 要件定義や設計だけを行うスプリント、テストだけを行うスプリントというのはダメですか?

新規プロダクトの場合は、最初のスプリントの開始前に、スプリント0と呼ばれる助走期間をとってビジョンを明確化したり、初期の要件を収集したり、アーキテクチャを検討したりすることがあります。これについては時間を限定して実施する分には構いません。準備不足で決まっていないままに進めると、スプリントが空回りするためです。

一方で、通常のスプリントに入った場合には、「動作するソフトウェア」が完成しないスプリント、特に設計だけのスプリントは絶対に避けなければいけません。このようにしてしまうと、後続のスプリントの計画が自動的に決まってしまうのと、動作するソフトウェアの製造量の予測ができなくなるからです(設計のベロシティとは何?ということです)。

もちろん何も要件が決まっていないと開発できないのも事実なので、次のスプリントで作るものの要件については前のスプリント完了までに決っている必要がありますが、このとき大事なのは「開発チームが作る予定のものが具体的かどうか」です。次にやらない箇所を含めて全部設計しないといけないわけでもありません。通常、次のスプリントに向けての準備はバックログリファインメントの活動で行いますが、使う時間はスプリントのキャパシティの10%程度の時間になります。

なお、テストについては事情が違うこともあります。 スプリント単位で「出荷できるレベルの品質」を確保しようとすると品質関連の作業が多くなりすぎて開発の時間が減ってしまいます。リリース時期が固定なのであれば最後の数スプリントを総合的なテストに使うという選択肢もあります。ただしスプリント単位でも「ある程度大丈夫と思える」品質を確保するのが前提になります。さもないと最後のテスト期間に大量の問題がでてしまい、当初確保した期間では対応できないといった結果になってしまいます。