🎸

テスト実装・リスクベースドテスト!JSTQBに沿ってアジャイル・スクラム・DevOpsにも応用できるQAの知識を解説します!

2023/10/07に公開

テスト実装 概要

テスト実装の段階では、テスト設計で決定されたシナリオや条件を具体的なテストケースや手順に落とし込む作業を行います。この過程で、システムが正しく動作することを確認するための具体的な手順や入力データ、期待結果などを明確にします。

テスト実装概要 60秒解説動画

https://youtube.com/shorts/c5PlcC41Mxs?feature=share

テスト実装とリスクベースドテスト

リスクベースのアプローチを取る場合、リスクの高い部分を優先的にテスト実装します。これにより、リスクの高いエリアのテストケースが早期に完成し、テスト実施の初期段階で重要な問題を特定・修正することが可能となります。なお、リスクの高い部分のテストケースは、他のテストケースよりも詳細かつ厳格に作成されます。これは、該当部分の問題が発生した場合の影響が大きいため、より確実に問題を特定する必要があるからです。

テスト実装とリスクベースドテストの動画解説

https://www.youtube.com/watch?v=A5V847olx7o&t=420s

リスクベースドテスト全体を説明している動画なので、ぜひ参考にしてください!

リスクベースドテストにおけるテスト実装の例

前提

テスト実装の優先順位

テスト実装では、テスト設計時と同様、リスクの高い項目を優先的に取り組みます。特に、リスクが高いテストケースには、カバレッジが高くなるような実装を心がけます。

また、テスト実行を見据えて、順番も考慮します。

詳細な解説の絞り込み

テスト設計した「不正確なデータの応答」に絞り込んで詳しく解説します。これは、複数のトピックを扱うと焦点が散らばるための措置です。

仕様

トレーサビリティ

  • ユーザーストーリー: 顧客登録

  • 画面設計: 顧客登録画面、顧客更新画面、顧客一覧画面

画面仕様

図1 顧客登録画面

名前の仕様

  • 必須入力
  • 半角英数字、全角英数字(2バイト文字)が全て入力可能
  • 最大文字数は20文字
  • 入力が正しい場合はデータベースに名前を登録
  • 入力が正しくない場合はエラーメッセージを表示する

電話番号の仕様

  • 必須入力
  • 数字のみ
  • 最大文字数は11文字 ※固定電話と携帯電話のみを対象とする
  • 数字の妥当性は考慮しない(030000など、桁が足りないなどを許容する)
  • 入力フォームは1つのテキスト
  • 入力が正しい場合はデータベースに電話番号を登録
  • 入力が正しくない場合はエラーメッセージを表示する

開始日付の仕様

  • 任意入力
  • 日付のみ
  • 入力フォームは1つのテキスト
  • 入力はyyyy/mm/dd
  • mmは1桁入力を許容する(0パディングする)
  • ddは1桁入力を許容する(0パディングする)
  • 入力が正しい場合はデータベースに開始日付を登録
  • 入力が正しくない場合はエラーメッセージを表示する

名前のテスト実装

  1. 基本的な正常系のテスト
    • テストケース 正確な名前の入力
      1. 顧客登録画面に遷移する。
      2. 顧客登録画面の名前フィールドに「亀井亮介」を入力する。
      3. 正しく入力され、エラーメッセージが表示されないことを確認する。
  2. データの不整合テスト(境界値)
    • テストケース 名前が未入力の場合エラーメッセージが表示される
      1. 顧客登録画面に遷移する。
      2. 名前フィールドに何も入力せずにフォーカスアウトする。
      3. エラーメッセージが表示されることを確認する。
    • テストケース 名前が正常範囲内の境界値
      1. 顧客登録画面に遷移する。
      2. 名前フィールドに「亀井亮介亀井亮介亀井亮介亀井亮介亀井亮介」(20文字)を入力する。
      3. 正しく入力され、エラーメッセージが表示されないことを確認する。
    • テストケース 名前が正常範囲外の境界値
      • 顧客登録画面に遷移する。
      • 名前フィールドに「亀井亮介亀井亮介亀井亮介亀井亮介亀井亮介だ」(21文字)を入力する。
      • エラーメッセージが表示されることを確認する。
  3. データベースクエリの誤りに関するテスト
    • データベースクエリに関しては後述する。
  4. データ変換のテスト
    • こちらはデータ変換に関するものなので、名前の仕様には直接関連しない

電話番号のテスト実装

  1. 基本的な正常系のテスト
    • テストケース 正常な電話番号の入力
      1. 顧客登録画面に遷移する。
      2. 顧客登録画面の電話番号フィールドに「0311112222」を入力する。
      3. 正しく入力され、エラーメッセージが表示されないことを確認する。
  2. データの不整合テスト(境界値)
    • テストケース 電話番号が未入力の場合エラーメッセージが表示される
      1. 顧客登録画面に遷移する。
      2. 電話番号フィールドに何も入力せずにフォーカスアウトする。
      3. エラーメッセージが表示されることを確認する。
    • テストケース 電話番号が一般的な固定電話番号の時
      1. 顧客登録画面に遷移する。
      2. 電話番号フィールドに「0311112222」(10文字)を入力する。
      3. 正しく入力され、エラーメッセージが表示されないことを確認する。
    • テストケース 電話番号が一般的な携帯電話番号の時
      1. 顧客登録画面に遷移する。
      2. 電話番号フィールドに「09011112222」(11文字)を入力する。
      3. 正しく入力され、エラーメッセージが表示されないことを確認する。
    • テストケース 電話番号が12桁の時
      • 顧客登録画面に遷移する。
      • 電話番号フィールドに「090111122223」(12文字)を入力する。
      • エラーメッセージが表示されることを確認する。
  3. データベースクエリの誤りに関するテスト
    • データベースクエリに関しては後述する。
  4. データ変換のテスト
    • こちらはデータ変換に関するものなので、名前の仕様には直接関連しない

開始日付のテスト実装

  1. 基本的な正常系のテスト
    • テストケース 正確な開始日付の入力
      1. 顧客登録画面に遷移する。
      2. 顧客登録画面の開始日付フィールドに「2023/10/09」を入力する。
      3. 正しく入力され、エラーメッセージが表示されないことを確認する。
  2. 基本的な正常系のテスト(空白)
    • テストケース 開始日付が未入力の場合エラーメッセージが表示されない
      1. 顧客登録画面に遷移する。
      2. 顧客登録画面の開始日付フィールドに入力しない。
      3. エラーメッセージが表示されないことを確認する。
  3. データの不整合テスト
    • テストケース 開始日付フィールドに正しい日付を入力
      1. 顧客登録画面に遷移する。
      2. 開始日付フィールドに何も入力せずにフォーカスアウトする。
      3. エラーメッセージが表示されることを確認する。
    • テストケース 開始日付フィールドに文字列を入力
      1. 顧客登録画面に遷移する。
      2. 開始日付フィールドに「XXXX/XX/XX」(日付ではない)を入力する。
      3. 正しく入力され、エラーメッセージが表示されないことを確認する。
    • テストケース 開始日付フィールドに不正な日付を入力
      1. 顧客登録画面に遷移する。
      2. 開始日付フィールドに「2023/10/32」(不正な日付)を入力する。
      3. 正しく入力され、エラーメッセージが表示されないことを確認する。
  4. データベースクエリの誤りに関するテスト
    • データベースクエリに関しては後述する。
  5. データ変換のテスト
    • テストケース 日付補完
    • 手順1
      1. 顧客登録画面に遷移する。
      2. 開始日付フィールドに「2023/9/1」(mm/ddではない)を入力する。
      3. 「2023/09/01」に置換される
      4. エラーメッセージが表示されないことを確認する。

データベースクエリのテスト実装

  1. 名前が正しく登録されている
    • テストケース 名前のデータの正確性
      1. 顧客登録画面に遷移する。
      2. 顧客登録画面の名前フィールドに「亀井亮介」を入力する。
      3. 登録ボタンをクリックする。
      4. 顧客一覧画面に遷移する。
      5. 顧客一覧画面に1行追加され、名前列に「亀井亮介」と表示されている。
      6. 登録したデータの顧客更新画面に遷移し、名前フィールドに「亀井亮介」と表示されている。
  2. 電話番号が正しく登録されている
    • テストケース 電話番号のデータの正確性
      1. 顧客登録画面に遷移する。
      2. 顧客登録画面の電話番号フィールドに「0311112222」を入力する。
      3. 登録ボタンをクリックする。
      4. 顧客一覧画面に遷移する。
      5. 顧客一覧画面に1行追加され、電話番号列に「0311112222」と表示されている。
      6. 登録したデータの顧客更新画面に遷移し、電話番号フィールドに「0311112222」と表示されている。
  3. 開始日付が正しく登録されている
    • テストケース 開始日付のデータの正確性
      1. 顧客登録画面に遷移する。
      2. 顧客登録画面の開始日付フィールドに「2023/10/09」を入力する。
      3. 登録ボタンをクリックする。
      4. 顧客一覧画面に遷移する。
      5. 顧客一覧画面に1行追加され、開始日付列に「2023/10/09」と表示されている。
      6. 登録したデータの顧客更新画面に遷移し、開始日付フィールドに「2023/10/09」と表示されている。
  4. 開始日付が正しく登録されている(空白)
    • テストケース 開始日付のデータの正確性(空白)
      1. 顧客登録画面に遷移する。
      2. 顧客登録画面の開始日付フィールドに入力しない。
      3. 登録ボタンをクリックする。
      4. 顧客一覧画面に遷移する。
      5. 顧客一覧画面に1行追加され、開始日付列は空白表示されている。
      6. 登録したデータの顧客更新画面に遷移し、開始日付フィールドに何も表示されない。
  5. 名前が不正の場合登録されていない
    • テストケース 名前が不正な時は登録されない
      1. 顧客登録画面に遷移する。
      2. 顧客登録画面の名前フィールドに「亀井亮介亀井亮介亀井亮介亀井亮介亀井亮介だ」を入力する。
      3. 登録ボタンをクリックする。
      4. エラーメッセージが表示され、顧客一覧画面に遷移しない。
      5. 顧客一覧画面に遷移する。
      6. 顧客一覧画面に1行追加されていない。
      7. 画面上、顧客更新画面に遷移できない。
  6. 電話番号が正しく登録されている
    • テストケース 電話番号が不正な時は登録されない
      1. 顧客登録画面に遷移する。
      2. 顧客登録画面の電話番号フィールドに「03-1111-2222」を入力する。
      3. 登録ボタンをクリックする。
      4. エラーメッセージが表示され、顧客一覧画面に遷移しない。
      5. 顧客一覧画面に遷移する。
      6. 顧客一覧画面に1行追加されていない。
      7. 画面上、顧客更新画面に遷移できない。
  7. 開始日付が正しく登録されている
    • テストケース 開始日付が不正な時は登録されない
      1. 顧客登録画面に遷移する。
      2. 顧客登録画面の開始日付フィールドに「xxxx/xx/xx」を入力する。
      3. 登録ボタンをクリックする。
      4. エラーメッセージが表示され、顧客一覧画面に遷移しない。
      5. 顧客一覧画面に遷移する。
      6. 顧客一覧画面に1行追加されていない。
      7. 画面上、顧客更新画面に遷移できない。

Discussion