見出し画像

「〜できる」という要件からテストを考える

「テストって、何をすればいいんでしょう?」
先日POにきかれたのですが、パッと答えることができませんでした。

この出来事に限らず、ソフトウェアテストをメインの業務にしていない仲間(エンジニアでも、そうでなくても) にソフトウェアテストの面白さや奥深さを知ってもらうにはどうすればいいだろう? と考える機会が増えてきました。

そこで、普段自分がテストをするときに意識していることをnoteで少しずつ言語化していこうと思います。
ベテランのQAエンジニアから見たら当たり前だよ!という話も多くなりそうですが、お付き合いいただけたら幸いです。

「この機能で〜できる。」という言葉に出会ったら

さて、本題です。

要件定義書でもプロダクトバックログでもいいんですが、
ある機能の要件が「〜できる」という一言で表現されていたとします。
そんな大雑把な仕様は無いだろうって? いえいえ、案外あるんです。
あるいはこうも言える。
「この一言しかまだ決まっていない段階でも、テストはできる」と。

5W1Hは見えていますか?

説明するまでも無いかもしれませんが、5W1Hは以下の略称ですね。

When (いつ)
Where (どこで)
Who (誰が)
What (何を)
How (どのように)

ユーザーストーリーを考えている間はこれを念頭に置いていても、
機能の詳細を詰めているうちに見失ってしまうことがあります。
既存のシステムに機能を追加する場合も、ここを曖昧にして議論を進めてしまいがちですよね。

枝葉から本当の要件を特定しよう

もちろん、5W1H を全て盛り込んだ上で簡潔に表現するのは難しいですよね。ここで QAエンジニアの出番です。
起こりうるケースを 5W1H それぞれから枝葉のように広げてみて、そこから本当に実現したいことを特定する手がかりを見つけましょう。

劇場の Web 座席予約システムを例に考えます。

この座席予約システムで、観客は事前に座席の確保ができます。

まずは When 。「事前に」の部分を掘り下げましょう。

いつから予約できますか? 
  → 映画であれば数日〜1週間前くらいが一般的ですが、
   演劇などは半年前から開始している場合もあります

いつまで予約できますか?
  → 公演時間の直前は窓口での受付のみという運用かもしれませんよね
  → 前売券・当日券など、チケットの種類や値段が変わることは
   ありそうですか?

Who はどうでしょう。

・予約する人は1人だけですか?
  → 友人や家族など、数人分をまとめて予約することはできますか?
  → 逆に、最大で何人分まで予約できるでしょうか?
   団体予約や貸切など、別のフローを用意する必要が
   あるかもしれません

・代理での予約など、予約する人と観賞する人がイコールではない
 ケースは想定していますか?

Where、What、Howも同様に掘り下げていきます。

いつからいつまで、何人から何人までといった境界値分析的な話が多数になってしまいましたが、それ以外の観点からの深掘りもできるのではないかと思います。

・予約する席は、観客自身で選べるか
・支払いはこのシステムで行うのか、当日に会場で支払う方法もとれるのか
・予約が確定するのはいつか
 (予約フォームへの入力が完了した時、支払いが完了した時 など)

「想定外」を「想定内」にするために

今はそんな細かいことまで考えていられないよ! と言われてしまうかもしれません。それでもいいのです。いずれ検討しなければならないケースがあるということをチーム内で認識することに意味があります。

リリース直前あるいはリリース後に想定していなかったケースが発生して、急ぎで改修しなければならなくなったらどうなるでしょうか。付け焼き刃の機能追加によって、技術負債のタネがまかれるかもしれません。

どれだけ早く「想定外」を「想定内」に引き寄せるか、私たちは日々自身の想像力と闘っています。

この記事が気に入ったらサポートをしてみませんか?