用語集 · テストの基礎
テストケース(Test Case)
英語: Test case
別名: test cases, テストケースとは, テスト項目
定義
システムの 1 つの振る舞いを検証し、合否を明確に判定するための、事前条件・入力データ・手順・期待結果の具体的な組み合わせです。
テストケースは、計画されたテストの最小単位です。「この事前条件とこのデータのもとで、これらの手順を実行し、この結果を期待する」というものです。誰が実行しても同じ判定に到達するべきです。テストケースはテストシナリオ、要件、受け入れ基準から導き出され、実際に実行・自動化・報告されるのはこのテストケースです。
例
| 項目 | 値 |
|---|---|
| ID | TC-LOGIN-004 |
| タイトル | 誤ったパスワードではログインが拒否される |
| 事前条件 | 有効なユーザー qa.user@example.com が存在し、ログアウトしている |
| テストデータ | メールアドレス qa.user@example.com、パスワード WrongPass1! |
| 手順 | 1. /login を開く 2. メールアドレスとパスワードを入力する 3.「Sign in」をクリックする |
| 期待結果 | 「Email or password is incorrect」というメッセージが表示される。ユーザーは /login に留まる。セッション Cookie は設定されない |
| 優先度 | 高 |
| 要件 | AUTH-12 |
同じケースを Playwright の自動テストにしたものです。
import { test, expect } from '@playwright/test';
test('login is rejected with a wrong password', async ({ page }) => {
await page.goto('/login');
await page.getByLabel('Email').fill('qa.user@example.com');
await page.getByLabel('Password').fill('WrongPass1!');
await page.getByRole('button', { name: 'Sign in' }).click();
await expect(page.getByText('Email or password is incorrect')).toBeVisible();
await expect(page).toHaveURL(/\/login/);
});
テストケースとテストシナリオの違い
テストシナリオは、何をテストするかを 1 行で述べたものです(「無効な認証情報でのログインを検証する」)。テストケースは、そのうち 1 つの具体的な事例を、正確なデータと期待結果を使ってどうテストするかを示したものです。1 つのシナリオからは通常、複数のケースが生まれます。誤ったパスワード、存在しないメールアドレス、空欄、ロックされたアカウントなどです。
良いテストケースの条件
- 1 つの振る舞いに 1 つの判定。 ケースが「半分だけ合格」しうるなら、分割しましょう。
- 具体的な期待結果。 「エラーが表示される」では弱すぎます。メッセージを引用し、起きてはならないことも明記しましょう。
- 独立している。 前のケースに頼らず、自分で事前条件を整えます。
- トレース可能。 検証対象の要件やストーリーにリンクしています。