BDDにおいてどういう風にテストをかけばBehaviour(外部機能仕様)を書いたことになるのか。
背景
BDDの"Behaviour(振る舞い)"を記述する、というのが意味わからなかったので
どういうふうにかけば振る舞いを記述したことになるのか、自分なりに調べてみました。
間違ってたら、ご指摘ください。
答え:
Given X When Y Then Z
(XであるときYするとZになる。)
という表現にする。
なぜそれが、ふるまい(外部仕様機能)を記載することになるのか
- アプリケーションの全体像は有限オートマトンとして記述できる。
- 有限オートマトンは状態遷移の組み合わせで記載される。
- したがって、状態遷移をすべて記載すればアプリケーションの仕様は記載されることになる。
- 状態遷移を言語化すると「XであるときにYすればZになる」という形で表現できる。
例:
各項目が複数ある場合(and)
Given X1
and X2
When Y1
and Y2
Then Z1
and Z2
X1かつX2であるときに
Y1かつY2すると
Z1かつZ2になる。
各項目が複数ある場合(or)
Given X1
or X2
When Y1
or Y2
Then Z1
or Z2
X1またはX2であるときに
Y1またはY2すると
Z1またはZ2になる。
各項目が複数ある場合(and orがいりまじり)
Given X1
or X2
When Y1
and Y2
Then Z1
or Z2
X1またはX2であるときに
Y1かつY2すると
Z1またはZ2になる。