見出し画像

イテレーション開発とテスト設計

Twitterでツイートが長くなったのと、大事なことだと思うのでnoteにまとめようと思いました。

問題の所在

イテレーション開発の場合、テスト設計は各イテレーションごとに作るのか、最低限目指したい機能が完成する姿をイメージして俯瞰的なテスト設計を作るのか。私は後者であるべきだと思っています。

理由

俯瞰的なテスト設計が無いと、各イテレーションごとの実装が正しい方向に進んでいるかわからないから。

たとえ話1

「西」という漢字を書こうとするとして、最初のイテレーションが一画目の横棒だったとする。「西」という完成形をイメージしなければどの高さに横棒を書けば良いのかわからないはずです。

ソフトウェアで言えば、最初に会員登録機能を実装しましょうってなったとして、そのサービスがなんのために使われるものかわからなければ、ユーザー名は重複を認めるのか認めないのかとか、どれくらいのパスワードの強度にするかとか、二段階認証を必須にするのか任意にするのかとかも決まらないです。もし仕様に書かれていたとしても、そのサービスがなんのためのものかわからなければ、QAエンジニアとしてその妥当性を判断できないし、もちろんテスト設計もできないはずです。

途中で計画が変更になる可能性

初期のイテレーションから計画が変更になる可能性があります。その場合は俯瞰的なテスト設計を修正する必要があります。

たとえ話2

「西」という漢字を書こうという計画が、途中で「酉」という漢字を書こうという計画に変わる可能性があります。もし「西」から「東」に変えようという話だったら、ほぼ最初からやり直しですが、「酉」への変更ならなんとなく行けそうな気がします。

ただ、その場合でも、既に「西」としての一画目の横棒を書いてしまった後なら、「酉」の位置への修正が必要になります。また、変更内容によっては初期のイテレーションで実装したものを修正する必要なく変更できるでしょう。ただ、実装したものを修正する必要は無くてもテスト設計の修正は必要になります。

ソフトウェアで言えば、最初の計画ではすべての会員にもれなく500ポイント付与しようというキャンペーンだったのが、途中で予算を縮小されて300ポイント付与しようというキャンペーンに変更になるかもしれません。その場合でも、ポイントの数値以外の部分はテスト設計は変更する必要はないでしょう。もし特定の会員にのみポイントを付与するということになったら、テスト設計の大幅な変更が必要になるでしょう。

最初の計画の解像度が高くない場合

必ずしも最初のイテレーションで解像度高く完成形をイメージできるとは限らないと思います。その場合でも分かる範囲で俯瞰的なテスト設計をするべきだと思います。

たとえ話3

最初の段階で「西」か「酉」かどちらか決まらないままイテレーションがスタートすることも考えられます。その場合でもテスト設計としては最初の一画目が「西」か「酉」の中間であればOKになるが、「酉」よりも上だったり「西」よりも下だったらNGとなるように設計します。ただ、これも「西」か「酉」かそのどちらかに変更になる可能性はあっても全く別の「東」になる可能性は無いという前提でテスト設計をするべきだと思います。もし「東」になったら最初の一画目は使えてもそれ以外は最初からやり直しに等しいので。

ソフトウェアで言えば、計画の最初の段階では何%のディスカウントをするかは決まっていなくても、とりあえずこの期間はディスカウントをするという計画があるかもしれません。それが5%でも10%でもテスト設計にはそれほど影響はないはずです。個々のテストケースでは期待する結果等が決まらないことにはなると思います。それでも直前まで何%かは決まらず、仮で5%という形でイテレーションが開始してテストすることもあるのではないかと思います。

いただいたサポートは生活費にあてます