本文へ移動

ホーム / QA / 第2部 テストの基礎

第2部 テストの基礎・第3章

リスクとテストの計画

★★★ 必須8トピック・面接 5問

何を・どこまで・どうやってテストするかを決め、チームで合意する方法を押さえる。テスト設計の技法を「どこに使うか」を決めるのがこの章。

3.1リスクベースのテスト

用語★★★ 必須
ひとことで

壊れたときの影響と起きやすさで優先順位をつけ、テストの量を配分する。

時間は限られているので、すべてを同じ深さでテストすることはできません。リスクベースのテストは、「壊れたときの影響の大きさ」と「壊れやすさ」から優先度を決め、リスクの高いところに時間を使う考え方です。

リスクの洗い出し

  • 影響の大きさ:お金(決済・請求)、個人情報、法律にかかわる、多くの利用者が使う、元に戻せない(データの削除・送信)。
  • 壊れやすさ:今回大きく変えた、複雑(条件が多い)、新しい技術や外部サービスとの連携、過去に不具合が多かった、担当者が初めて触った。

開発者・PdM と一緒に、変更点ごとに「影響」と「起こりやすさ」を高・中・低で付けると、優先度を合意しやすくなります。

起こりやすさ:高起こりやすさ:低
影響:大最優先。技法で網羅+自動化+探索的テスト主要なケースは必ず。監視も用意
影響:小主要なケースと探索的テスト軽く確認、または今回は省く(理由を残す)
変更点をリスクで並べ、右上から時間を使う主要なケースは必ず+監視最優先:網羅+自動化+探索的軽く確認、または省く(理由を残す)主要なケース+探索的決済の処理を変更外部サービスとの連携パスワード再設定管理画面の文言検索の並び順起こりやすさ(壊れやすさ)→大小低高影響の大きさ →
リスクの2軸に変更点を置く(例)。右上ほど深くテストする

テスト計画に書くこと

面接ではこう答える

リスクベースのテストは、壊れたときの影響の大きさと、壊れやすさの2つで優先度を決め、リスクの高い所に時間を配分する考え方です。影響はお金・個人情報・利用者の数・元に戻せるか、壊れやすさは変更の大きさ・複雑さ・新しい技術・過去の不具合で見ます。優先度は開発者や PdM と一緒に付けて合意し、省いたリスクは監視や段階的なリリースで補います。

ひとことで

単体・結合・システム・受け入れのように、確かめる単位の大きさで分けたテストの段階。V字モデルで作る段階と対応させる。

テストレベルは、どの大きさの単位を確かめるかによるテストの分け方です。作る段階と確かめる段階を対応させた V字モデルで説明されることが多いです。

要件定義受け入れテスト基本設計システムテスト詳細設計結合テスト実装単体テスト左の各段階で決めたことを、右の同じ高さのテストで確かめる
V字モデル:作る段階と、それを確かめるテストレベルの対応
レベル確かめる対象主な担当見つけやすい不具合
単体テスト関数・クラス・部品1つ開発者計算や分岐の誤り
結合テスト部品どうし・API・DB とのつながり開発者・QAデータの受け渡し、API の形の食い違い
システムテストシステム全体を仕様に照らしてQA機能の抜け、画面をまたぐ流れ、非機能
受け入れテスト利用者・業務の目的を満たすかPdM・利用部門(QA が支援)「仕様どおりだが使えない」

アジャイル開発でも、各レベルの考え方はそのまま使います。違うのは、レベルごとに工程を分けず、1つの機能の中で並行して進めることです。

面接ではこう答える

テストレベルは、確かめる単位の大きさによる分け方で、一般に単体・結合・システム・受け入れの4つです。V字モデルでは、要件定義は受け入れテスト、設計はシステムテストや結合テスト、実装は単体テストで確かめる、と対応させます。レベルごとに見つけやすい不具合が違うので、どのレベルで何を確かめるかを決めて重複と抜けを減らします。

ひとことで

確認テストは直った不具合を確かめるテスト、回帰テストは変更で既存の機能が壊れていないかを確かめるテスト。

テストレベルとは別に、何のために確かめるかでもテストを分けます。名前が似ていて混ざりやすいので、面接でもよく確かめられます。

種類目的いつ
機能テスト仕様どおりに動くか機能を作ったとき
非機能テスト速さ・安全・使いやすさ・互換性計画に合わせて(性能は本番に近い環境で)
確認テスト(再テスト)直した不具合が本当に直ったか修正のたび
回帰テスト変更で、今まで動いていた所が壊れていないか変更のたび(自動化の中心)
スモークテスト主要な機能がそもそも動くか(続けてテストしてよいか)デプロイの直後・テストの開始前

不具合の修正のあとは、確認テストで「直ったか」を見るだけでなく、回帰テストで「直したことで別の所が壊れていないか」も見ます。修正は急いで入ることが多く、回帰が起きやすいからです。

面接ではこう答える

テストの種類は目的で分けます。確認テストは、直した不具合が本当に直ったかを確かめるテストです。回帰テストは、変更によって今まで動いていた所が壊れていないかを確かめるテストで、変更のたびに流すので自動化の中心になります。スモークテストは、デプロイ直後などに主要な機能がそもそも動くかを短時間で見るテストです。

3.4テスト計画に書くこと

用語★★☆ 重要
ひとことで

何を・どこまで・どうやってテストするか、しないことと終了の基準まで含めてチームで合意する文書。

テスト計画は、何を・どこまで・どうやってテストするかをチームで合意するための文書です。リスクの洗い出しの結果をもとに作ります。

テスト計画には、少なくとも次を書きます。長い文書でなくてよく、チームが同じ認識を持てることが大事です。

  • 範囲:テストすること・しないこと(しない理由も)。
  • 方法:どのリスクをどのテスト(自動・手動・探索的・負荷など)で確かめるか。
  • 環境とデータ:使う環境、テスト用のアカウントやデータ。
  • 日程と担当。
  • 開始・終了の基準:例「重大な不具合が 0 件、高の不具合は回避策があり合意済み、主要なシナリオがすべて通った」。

落とし穴:「テストしないこと」を書かないと、後から「そこは見ていると思っていた」となります。省いたリスクは、リリース後の監視や段階的なリリースで補うことも計画に入れます。

よくある項目書く内容の例
範囲(する・しない)新しいクーポン機能。旧画面は今回変更なしなので回帰テストの自動分のみ
方法割引計算はデシジョンテーブル+API の自動テスト。画面は探索的テスト 2 セッション
環境・データ検証環境。クーポンを持つテスト用アカウントを 5 種類
日程・担当〇日〜〇日。QA 2 名、開発者が単体テスト
終了基準重大な不具合 0、主要なシナリオがすべて通過

面接ではこう答える

テスト計画は、テストの範囲・方法・環境とデータ・日程と担当・開始と終了の基準をまとめた文書です。特に大事なのは「テストしないこと」とその理由を書くことで、あとで「そこは見ていると思っていた」という食い違いを防げます。長い文書である必要はなく、リスクの洗い出しをもとに、チームが同じ認識を持てることが目的です。

ひとことで

開始基準はテストを始めてよい状態、終了基準は終えてよい状態の約束。リリース判定では残るリスクを事実で伝える。

開始基準は「テストを始めてよい状態」、終了基準は「テストを終えてよい状態」の約束です。前もって決めておくと、期日が迫ったときに感覚で判断せずに済みます。

開始基準環境・ビルドがそろったテスト実行不具合の報告と修正終了基準基準を満たしたかリリース判定残るリスクを伝える判定の材料:未解決の不具合(重大度別)・実行できなかったテスト・既知の回避策決めるのは PdM や責任者。QA は「何が分かっていて、何が残っているか」を事実で示す
開始・終了基準とリリース判定の関係
基準例
開始基準検証環境にデプロイ済み、スモークテストが通過、テスト用データが用意済み
終了基準重大・高の不具合が 0(または回避策があり合意済み)、主要なシナリオがすべて通過、未実行のテストは理由つきで合意

リリースするかどうかを最終的に決めるのは、多くの場合 PdM や責任者です。QA の役割は「止める・通す」を一人で決めることではなく、残っているリスクを事実で伝え、判断を助けることです。不具合が残ったままリリースするなら、影響・回避策・直す予定・監視の方法をセットで示します。

面接ではこう答える

開始基準と終了基準は、テストを始めてよい状態と終えてよい状態を、前もって決めておく約束です。たとえば終了基準は「重大な不具合が 0 件、主要なシナリオがすべて通過」のように書きます。リリースを最終的に決めるのは PdM や責任者で、QA は未解決の不具合、実行できなかったテスト、回避策などの材料を事実で示します。残すリスクがあるなら、監視や直す予定とセットで伝えます。

ひとことで

変更の影響が届く範囲をたどり、近いほど厚く、遠いほど自動テストに任せて回帰テストの範囲を決める。

回帰テストを毎回すべて手動で行うことはできません。変更の影響が届く範囲をたどって、近いほど厚く、遠いほど自動テストに任せます。

今回の変更クーポンの計算直接の影響:カート・注文確定つながる機能:請求・ポイント・領収書共通の部品:ログイン・決済の共通処理関係が薄い:会員情報・お知らせ厚く(手動+自動)主要なケース自動の回帰で自動の回帰だけ
影響の範囲から回帰テストの厚さを決める(例)
影響の範囲を知る方法具体的に
開発者に聞くプルリクエストの説明・差分で、変えた関数や共通部品を確認する
依存をたどるその API・テーブル・共通の部品を使っている画面や機能を一覧にする
過去の不具合同じ所を変えたときに壊れた機能
データで見るよく使われる機能・お金にかかわる機能は、毎回の回帰に必ず入れる

毎回必ず流す主要な流れ(ログイン・検索・購入など)は自動化し、変更ごとに足す回帰テストは影響の範囲から選びます。選んだ理由を計画に残しておくと、不具合が漏れたときの振り返りに使えます。

面接ではこう答える

回帰テストの範囲は、変更の影響がどこまで届くかで決めます。開発者に変更した部品を聞き、その部品や API、テーブルを使っている機能をたどって、直接の影響がある所は厚く手動と自動で、遠い所は自動の回帰テストに任せます。お金にかかわる機能や主要な流れは毎回必ず流すように自動化しておき、選んだ理由を残しておきます。

ひとことで

短いスプリントで作って確かめるため、QA は計画の段階から受け入れ条件づくりに入り、実装と並行してテストする。

アジャイル開発(スクラムなど)では、短い期間(スプリント)ごとに作って確かめるので、「開発が終わってからテスト」では間に合いません。QA はスプリントの最初から関わります。

計画リファインメント受け入れ条件を一緒に開発中実装と並行テスト設計・自動化完成前レビュー・探索ストーリーごとに確認スプリント末デモ・振り返り流出の原因を共有2週間などのスプリントの中で、QA は最初から最後まで関わる完成の定義(Definition of Done)に「テスト済み・自動テスト追加」を入れる
アジャイル開発のスプリントでの QA の動き(例)
やり方内容
スリーアミーゴスPdM・開発者・QA の3者で、作る前に機能の例と受け入れ条件を話し合う
受け入れ条件「〜のとき〜になる」を具体例で書く(Given / When / Then の形がよく使われる)
完成の定義(DoD)「テスト済み」「自動テストを追加」「不具合 0」をチームの完成の条件に入れる
スプリント内の回帰主要な流れの自動テストを CI で毎回流し、手動の回帰をためない

テストがスプリントの最後に集中すると、次のスプリントに持ち越されて品質の借金がたまります。ストーリーを小さく分けて、できたものから順に確かめるのがこつです。

面接ではこう答える

アジャイル開発では、スプリントごとに作って確かめるので、QA は計画の段階から関わります。作る前に PdM・開発者・QA の3者で例を使って受け入れ条件を決め、実装と並行してテスト設計と自動化を進め、できたストーリーから順に確かめます。チームの完成の定義に「テスト済み・自動テスト追加」を入れておくと、テストがスプリントの最後にたまるのを防げます。

ひとことで

ローカル・開発・検証(ステージング)・本番と、本番に近いほど本物に近い。データの量・設定・外部サービスの差に注意する。

テストする環境は、本番に近いほど本番の不具合を見つけやすくなりますが、作るのも保つのも大変です。どの環境で何を確かめるかを決め、本番との差を知っておくことが大事です。

ローカル開発者が単体テスト開発環境つないだ動きの確認検証環境(ステージング)本番に近い構成で総合テスト本番スモーク・監視右に行くほど本番に近い。データ・設定・外部サービスの差に注意
テスト環境の並び(一般的な例)
本番との差起きること対策
データの量少ないデータでは遅い SQL・ページ送りの不具合が出ない件数を増やしたデータを用意する
設定・機能フラグ検証環境だけ機能が有効で、本番では動かない設定の差を一覧にして確かめる
外部サービスモックやサンドボックスでは本物の応答・遅さが出ない契約テスト、本番での確認項目を決める
構成サーバーの台数・キャッシュ・CDN がない性能や切り替えのテストは本番に近い環境で

プルリクエストごとに一時的な環境(プレビュー環境)を作るチームも増えています。複数の人が1つの検証環境を取り合って、データが壊れる問題を減らせます。

面接ではこう答える

テスト環境は、ローカル、開発環境、検証環境、つまりステージング、本番の順に本番に近くなります。検証環境で通っても本番で起きる不具合の多くは、データの量、設定や機能フラグ、外部サービス、構成の差が原因です。そのため、どの環境で何を確かめるかを決め、本番との差を一覧にしておき、差が大きい所は本番での確認や監視で補います。

この章のまとめ

🖨 まとめシート(印刷・PDF)
  • 影響と壊れやすさでリスクを見て、テストの厚さを配分する
  • テストレベル・種類と、回帰テストの範囲の決め方
  • 開始・終了基準を決め、リリース判定で残るリスクを事実で伝える

この章のクイズ

面接ではこう聞かれる

まず答えを見ずに声に出して答え、そのあと開いて比べる。

Q1リリースまで時間が足りません。何を優先してテストしますか?

模範回答

リスクで優先順位を付けます。「壊れたときの影響の大きさ」と「壊れやすさ」の2つで見て、両方高いところから時間を使います。影響が大きいのは、お金・個人情報・多くの人が使う機能・元に戻せない操作です。壊れやすいのは、今回大きく変えたところ、複雑なところ、過去に不具合が多かったところです。

具体的には、今回の変更点の一覧に高・中・低を付け、主要な流れ(ログイン・購入など)の回帰テストは自動テストで確保し、手動の時間は影響も変更も大きい部分の探索的テストに使います。大事なのは、テストしなかった範囲とそのリスクを関係者に伝えて合意することです。合意のうえで、その部分は段階的なリリースや監視で補います。

深掘りされたら

  • リリースを延期すべきだと判断するのは、どんなときですか?
  • 残ったリスクは誰が受け入れるべきですか?

見られているポイントリスクの2軸で判断し、テストしない範囲を合意できるか

Q2確認テストと回帰テストの違いは何ですか? 不具合の修正のあと、どこまでテストしますか?

模範回答

確認テストは、直した不具合が本当に直ったかを確かめるテストで、回帰テストは、その修正で今まで動いていた所が壊れていないかを確かめるテストです。

修正のあとは、まず報告した手順で確認テストをし、境界の値や似た操作でも直っているかを少し広げて確かめます。次に、修正した部品を使っている機能を開発者に聞いて回帰テストの範囲を決め、主要な流れの自動テストも流します。急ぎの修正ほど回帰が起きやすいので、範囲を省くときは理由を残します。

深掘りされたら

  • 修正の範囲が分からないときは、どうしますか?
  • 回帰テストを自動化するなら、どこからですか?

見られているポイント用語の正確さと、修正後のテスト範囲の決め方

Q3テスト計画には何を書きますか?

模範回答

範囲、方法、環境とデータ、日程と担当、開始と終了の基準を書きます。いちばん大事なのは範囲で、テストすることだけでなく、テストしないこととその理由を書きます。

方法には、どのリスクをどのテストで確かめるか、たとえば割引計算はデシジョンテーブルと API の自動テスト、画面は探索的テスト、のように書きます。長い文書にする必要はなく、開発者や PdM と同じ認識を持てることが目的なので、作ったらレビューしてもらい合意します。

深掘りされたら

  • テストしないことに、開発者や PdM が反対したらどうしますか?

見られているポイント範囲(しないこと)と合意の重視

Q4リリース日に、優先度の高い不具合が1件残っています。QA としてどうしますか?

模範回答

リリースするかどうかを一人で決めるのではなく、判断の材料を事実でそろえて、PdM や責任者と一緒に決めます。

材料は、不具合の影響(誰が、どれくらい、お金やデータにかかわるか)、起きる条件と頻度、回避策の有無、直すのにかかる時間と回帰テストの範囲です。リリースするなら、その機能だけ機能フラグで止める、問い合わせの窓口に伝える、監視を追加する、直すリリースの日を決める、をセットで提案します。重大度が高くデータが壊れるようなものなら、延期を強く勧めます。

深掘りされたら

  • PdM がそれでもリリースすると決めたら?
  • 終了基準はいつ決めておくべきですか?

見られているポイント事実で判断を助ける姿勢、リスクを下げる代案

Q5アジャイル開発のチームで、QA はスプリントのどこで何をしますか?

模範回答

スプリントの最初から関わります。計画やリファインメントでは、PdM と開発者と一緒に具体例を使って受け入れ条件を決め、あいまいな点を質問します。開発中は実装と並行してテスト設計と自動テストを書き、できたストーリーから順に確かめ、探索的テストもします。

テストがスプリントの最後に集中しないように、ストーリーを小さく分けることや、完成の定義に「テスト済み・自動テスト追加」を入れることをチームに提案します。スプリントの振り返りでは、見つかった不具合の傾向を共有します。

深掘りされたら

  • テストがスプリント内に終わらないときは?

見られているポイント早い段階からの関与と、テストをためない工夫