メインコンテンツへスキップ
SDETRole
SDETRole

用語集 · テストの基礎

テストケース(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 つの判定。 ケースが「半分だけ合格」しうるなら、分割しましょう。
  • 具体的な期待結果。 「エラーが表示される」では弱すぎます。メッセージを引用し、起きてはならないことも明記しましょう。
  • 独立している。 前のケースに頼らず、自分で事前条件を整えます。
  • トレース可能。 検証対象の要件やストーリーにリンクしています。

キーワードを入力すると SDETRole 全体を検索できます。

Pagefind による全文検索 · ブラウザ内で動作します 検索ページを開く →