入力値を変えて確認すればよい機能もあれば、操作の順番や途中の状態まで考える必要がある機能もあります。使い慣れた方法だけでは、テストを書きにくいこともありますよね。この記事では、何を確認したいかを出発点にして、テストの組み立て方を比べます。

この記事のポイント

入力値の違いを見るならデータ駆動、業務の流れを見るならシナリオ、状態ごとの操作を調べるなら状態遷移が候補になります。一つに決める必要はなく、対象に合わせて組み合わせて使えます。

入力値の違いを比べたいとき

フォームの入力値やバリデーションの確認では、操作手順が同じで、入力する値だけが変わるケースがよくあります。この場合は、手順とデータを分けるとケース同士を比べやすくなります。

ただし、途中で操作が分岐するケースまで一つの表にまとめると、どの順番で操作すればよいかがわかりにくくなります。表を読む人が手順を追える範囲で共通化してください。

操作の流れや、状態ごとの違いを確認したいとき

利用者が一連の操作を終えられるかを確認するときは、前提・操作・結果をシナリオにすると流れを追いやすくなります。申請や予約のように状態が変わる処理なら、「取消済みの予約で取消ボタンを押す」のように、操作前の状態も書いておきます。

操作の流れや、状態ごとの違いを確認したいとき
見たい違い表現の候補確認の例
入力値共通手順+データ必須項目の未入力や文字数の境界
業務の流れシナリオ申請から承認までの利用者の操作
状態と操作状態遷移取消済みの予約に再度取消操作をする
常に守る条件プロパティ計算結果が、仕様で定めた範囲を超えない

計算処理では、具体的な値と守るべき性質を確認する

割引計算なら、「この入力ならこの金額になる」という具体例をテストできます。加えて、「割引後の金額は0円未満にならない」のように、入力を変えても守られるはずの性質を確認する方法もあります。ただし、その性質が対象の仕様でも成立するかは、先に確認してください。

具体例を使うテストは、その条件で正しい結果になるかを確認します。性質を使うテストは、入力を変えたときにも守るべき条件を確認します。役割を分けて使うと、それぞれのテストで何を確認しているかを説明しやすくなります。

ほかの手法も、何を確認するためのものかで比べる

ほかにも、手順を読みやすくまとめる方法、入力の組み合わせを選ぶ方法、結果を比較する方法があります。役割が違うので、組み合わせて使うこともできます。たとえば、キーワードで組んだ手順に、組み合わせテストで選んだデータを渡す使い方です。次の表には、各手法の考え方がわかる例を載せています。

組み合わせテストでは、ブラウザや権限といった「因子」、各因子が取る値、同時に組み合わせる因子数を決めます。ペアワイズは2因子の組を網羅する方法です。3因子以上が関係する不具合を調べるには、その組み合わせも確認する必要があります。

結果を比較する場合は、基準自体の確認も必要です。スナップショットは差分を読んでから更新し、差分テストでは仕様変更で生じた違いと不具合を区別します。メタモルフィックテストで使う関係も、対象の仕様で成立するか確認してください。見つけた差や異常を後から説明できるように、条件と結果を記録しておきます。

ほかの手法も、何を確認するためのものかで比べる
手法何を確かめるか
キーワード駆動操作と検証の部品を組み合わせ、業務の流れを確認する「ログイン」「検索」「結果を確認」を再利用してケースを組む
モデルベース仕様モデルからテストを導き、実際の動作と照合する予約の状態モデルから操作の経路を生成して実行する
組み合わせ複数の条件が重なったときの振る舞いブラウザ・権限・設定の値を、全ての2因子の組を含むケースで確認する
ファズ生成・変異させた入力で起きる異常JSON解析へ多様なバイト列を与え、クラッシュなどを探す
スナップショット/Goldenレビュー済みの参照出力からの変化出力したJSONを保存済みの参照データと比較する
契約サービスの利用側と提供側が期待する入出力の一致利用側が必要とする応答の項目・型を、提供側も満たすか確認する
差分同じ入力に対する新旧・複数実装の結果の違い旧計算処理と新計算処理へ同じ値を渡して比較する
メタモルフィック入力を変換した前後で成立するはずの結果の関係整数列の順序を変えてからソートしても、元の列のソート結果と一致するか確認する

手法を選ぶ前に確認したいこと

自分が書きやすいかに加えて、ほかの人がレビューできるか、失敗したときに調べやすいかも考えて選ぶと、運用しやすくなります。

  • 不具合が起きそうなのは、入力値の違い、操作の順番、状態の組み合わせのどこか。
  • 合否を判断するための仕様や資料はあるか。
  • 失敗したときに、どの条件で起きたかが記録からわかるか。

参考資料

QA Notebook / テスト設計

次の記事チームの立ち上げで最初に決めておきたいこと記事一覧へ戻る