「ログインできること」だけでは、何が足りない?
「ログインできること」と書けば、確認する内容は伝わりそうに見えます。でも、使うアカウントや、何を見て合格とするかまではわかりません。この曖昧さをどう減らすか、架空のログイン画面を使って考えてみます。仕様の確認、記入、レビューと順に見ながら、必要な情報を整理します。記入例とテンプレートも用意しました。
この記事で使う資料
登録不要でダウンロードできます。サンプルはすべて架空のデータです。
まず、対象の機能と仕様を確認する
操作の順番が書いてあれば、合否まで決められるだろうか?
操作の手順が書けても、正常な状態がわからなければ合否を決められません。そこで、先に確認する機能と、使う仕様の版を決めます。何ができれば「正常に動いた」といえるのかを確認すると、操作と期待結果をつなげて書きやすくなります。
以下の仕様と記入例は、練習用に作った架空のものです。実際のサービスの仕様やテスト結果ではありません。メールアドレスは例示用の値にし、パスワードは検証環境の管理先を参照する書き方にしています。
以下は記事用に作成した架空のログイン仕様です。
R1:登録済み・利用可能な一般ユーザーは、正しいメールアドレスとパスワードでログインできる。
R2:成功後はマイページへ遷移し、そのユーザーの表示名を表示する。
R3:メールアドレスまたはパスワードが空欄なら、空欄の項目に「入力してください」と表示し、ログインしない。
R4:メールアドレスとパスワードが両方入力されていて、認証情報が一致しない場合は「メールアドレスまたはパスワードが正しくありません」と表示し、ログインしない。
未定義:失敗回数によるロック、パスワードの長さ、利用停止ユーザー、二要素認証。正常にログインできるケースを書いてみる
同じ「ログインできた」でも、人によって確認する場所が違うのでは?
画面が切り替わったところで確認を終える人もいれば、表示名まで見る人もいるかもしれません。この例の仕様では、本人のマイページと表示名を確認します。必要な条件、操作の順番、期待結果を分けて書き、ログアウト状態から判定までの流れがわかるようにします。
条件をそろえるには、「正しいパスワード」がどれを指すかも必要です。チームで管理するテストデータの識別子や参照先を書けば、実際の認証情報を公開するシートに載せずに、使うデータを伝えられます。
| 項目 | 記入例 |
|---|---|
| ケースID/仕様 | LOGIN-001/R1・R2 |
| 目的 | 有効な一般ユーザーが本人のマイページへ入れること |
| 事前条件 | 検証環境に一般ユーザーAが登録済み・利用可能。ログアウト状態から始める。 |
| データ | メール:qa-user@example.com、表示名:テストユーザーA。正しいパスワードはテストデータAの管理先を参照。 |
| 操作 | 1. ログイン画面を開く。2. メールを入力する。3. 指定のパスワードを入力する。4. ログインを押す。 |
| 期待結果 | マイページへ遷移し、「テストユーザーA」が表示される。 |
| 実際の結果/判定 | 実際の結果は空欄。判定は「未実行」。 |
| 環境・証跡 | 実行時に環境、アプリ版、実行日、実行者、必要な証跡を記録する。 |
空欄と認証失敗のケースを足す
ログインできることを確認したら、それで十分だろうか?
この仕様には、空欄や認証の不一致をどう扱うかも書かれています。そのため、メール空欄、パスワード空欄、パスワード不一致の3件を足します。正常系のケースをコピーするときも、変えた条件を明記します。ほかの条件はできるだけそろえ、各ケースを始める前にログアウト状態へ戻します。
この4件だけで、ログイン機能全体を確認できるわけではありません。仕様に書かれていないロックや利用停止ユーザーの扱いは、担当者に確認してから追加します。ダウンロード用の記入例には、4件それぞれの前提・操作・期待結果を省略せず載せています。
| ケース/根拠 | 変える条件 | 期待結果 |
|---|---|---|
| LOGIN-002/R3 | メールを空欄にし、指定のパスワードを入力して送信 | メール欄に「入力してください」。ログインしない。 |
| LOGIN-003/R3 | メールを入力し、パスワードを空欄にして送信 | パスワード欄に「入力してください」。ログインしない。 |
| LOGIN-004/R4 | メールを入力し、認証に使えないテスト用パスワードで送信 | 「メールアドレスまたはパスワードが正しくありません」。ログインしない。 |
コピーして使える記入テンプレート
毎回同じ項目を書くなら、書式もそろえたほうがよさそう。
前提条件、操作、期待結果を書く場所が決まっていれば、必要な情報を探しやすくなります。文章で管理する場合にコピーして使えるよう、次のテンプレートにまとめました。表で管理する場合は、冒頭のCSVをダウンロードして、1ケースずつ行を追加できます。
使わない欄が多ければ、記入の負担も増えます。項目を減らすときは、何のための欄なのかをチームで確認してから調整します。
ケースID:
対象機能・仕様ID/版:
目的・観点:
事前条件:
テストデータ参照先(秘密情報は書かない):
操作手順:
1.
2.
3.
期待結果:
実際の結果(実行時に記録):
判定:未実行/Pass/Fail/Blocked
環境・アプリ版:
実行日・実行者:
証跡・不具合ID:判定の意味を決め、実際の結果を記録する
実際の動作が期待結果と違ったとき、何を残すべきか?
期待結果を実際の動作に合わせて書き換え、合格にしてしまうと、仕様との違いが残りません。期待結果は残したまま、実際にどう動いたかと、その違いを別の欄に記録します。
結果を共有するには、判定の意味もそろえる必要があります。このテンプレートでは、下の表の意味で判定を使います。管理ツールなどですでに定義している場合は、そちらに合わせます。
| 判定 | このシートでの扱い |
|---|---|
| 未実行 | まだ実行していない。結果欄は空欄のままにする。 |
| Pass | 実行し、定めた期待結果を満たした。実際の結果と必要な証跡を残す。 |
| Fail | 実行した結果が期待結果と異なった。差分と証跡、不具合IDを残す。 |
| Blocked | 環境停止やテストデータ不足などで実行・判定できない。理由と再開条件を残す。 |
ほかの人が同じ手順でテストできるか確認する
自分にはわかる手順でも、ほかの人には伝わらないかもしれない。
書いた本人は、使うデータや操作の前提を知っています。その情報を省略していても、自分で読み返すだけでは気づきにくいことがあります。下の項目で内容を確認し、書いた人以外に最初の1件を試してもらうとよいと思います。
そのときに見たいのは、補足の説明なしで進められるかどうかです。迷ったところを聞けば、どの条件や手順を書き足す必要があるかを考えやすくなります。
- どの仕様の何版を使ったかわかり、期待結果の根拠を確認できる。
- ユーザー状態、権限、データ、開始画面を用意できる。
- 操作が順番に書かれ、何を見て結果を確認するかがわかる。
- 「問題なく」「正しく」だけで合否を判断させていない。
- 期待結果と実際の結果が別の欄になっている。
- 不明な仕様を推測で埋めず、確認したいこととして残している。
まず一つの機能でテンプレートを試す
結局、どこまで詳しく書けば「伝わるテストケース」になる?
同じ条件を用意でき、操作の順番を追えて、仕様を根拠に合否を決められること。この3つが、詳しさを考える目安になると思います。まず一つの機能で試し、テストする人やレビューする人が困った箇所を直していきます。同じ項目を同じ場所に書くと、担当者の交代や不具合調査でも情報を探しやすくなります。項目を増やしすぎないよう、記入の負担も見ながら調整します。
必要な項目は用途によっても変わります。探索的テストなら目的・範囲・リスクを書くチャーター、性能テストなら負荷条件などが必要です。共通の項目を決めたうえで、用途に合わせて調整します。過去のケースは、再利用するときに新しい書式へ移しても構いません。
この記事のまとめ
テストケースには、同じ条件を用意できる情報、操作の順番、仕様を根拠にした期待結果をそろえます。実際の結果は、実行後に別の欄へ記録します。ほかの人が同じ基準で判定できるかを確かめながら、必要な詳しさを調整していくのがよいと考えています。