テスト実行(実施)について

テスト実装とテスト実施(実行)

テスト管理のプロセスの中で、テスト実施の工程は、テストを準備するためのテスト実装とテストケースに沿ってテストを実施するテスト実行に分けて考えることができます。良いテスト実施を行うためには、良い準備が欠かせません。良い準備ができれば、有効なテストを行うことができ、ソフトウェアの品質を向上させることができます。

ここでいう、テスト実装とは、テスト実行前に必要な作業を洗い出し、スケジュールを作成することです。そして、テスト実行とは、作成したテストケースに従って、実際にソフトウェアを動かし、期待通りに動作するかを確認することです。

テスト実装とテスト実行のテスト管理プロセス内での立ち位置は以下の図で表される通りです。

テスト実装とテスト実行のテスト管理プロセス内での立ち位置

テスト実装とは

前述したようにテスト実装とは、テスト実行前に必要な作業を洗い出し、スケジュールを作成することでした。テストを実行するための準備作業を行う工程だと言えます。テスト実装が不十分だと、テスト中に環境トラブルが発生したり、正しいテスト結果が得られなかったりします。

たとえば、正しくないデータを使って間違った結果を「不具合」と判断してしまうこともありえます。テスト実装の後に控えているテスト実行は、ソフトウェア開発のライフサイクルの中でも最終段階です。ソフトウェア開発を完了させる上でクリティカルパスとなりえます。このテスト実行を成功させるためには良い準備としてのテスト実装が欠かせません。

ここからはテスト実装の流れを紹介します。大まかな流れとして、テストに備えて準備しておくべきことを洗い出し、テストを行うためのスケジュールを作成することを目指していきます。

①テスト実装開始前に確認すること

テスト実装に入る前には、スムーズで正確な作業を行うために、いくつかの重要なポイントを事前に確認しておく必要があります。この段階の確認を丁寧に行うことで、後のトラブルや作業のやり直しを防ぐことができ、プロジェクト全体の進行にも好影響を与えます。ここでは、確認しておきたい3つの観点について紹介します。

A. プロジェクト全体の進捗確認

まず最初に、プロジェクトの全体スケジュールが当初の計画どおり進んでいるかを確認します。予定されていたテストの開始時期や期間、そして最終的なリリース日が変更されていないかを把握することが大切です。これにより、テスト期間にどれだけの時間を確保できるか、どのような優先順位で作業を進めるべきかを判断できます。

特に注意したいのは、開発の遅れによってテストの期間が短縮されていないかどうかです。たとえば、開発工程の遅れをテスト期間を短縮することで帳尻合わせをすることになると、十分なテストが行えず、不具合の見落としにつながるリスクが高まります。したがって、最新のプロジェクト進捗とテスト実施スケジュールをすり合わせ、必要に応じて調整やリスク共有を行うことが重要です。

B. 各種ドキュメントの確認

テスト実装を正確に行うには、関連するドキュメントをしっかり確認しておくことが不可欠です。まず確認したいのは、テスト計画書やテスト仕様書など、テスト作業そのものに関係するドキュメントです。これらにはテストの範囲、目的、手順、テスト対象などの基本情報が含まれており、内容に誤解や抜けがあると、テストの品質や効率に大きな影響を及ぼします。

また、見落としがちですが、ソフトウェアの挙動や機能を把握するために、要件定義書・基本設計書・詳細設計書などの仕様に関するドキュメントも確認する必要があります。テスト実装では「どう動くべきか」という正しい理解が前提となるため、これらのドキュメントの内容が古くなっていたり、改訂が反映されていなかったりすると、誤ったテストケースの作成につながる可能性があります。

C. リスクの確認

最後に、テスト実装に入る前にリスクの洗い出しを行っておくことも非常に重要です。テスト環境と本番環境の違いに関わるリスク、データ・仕様の不備や未確定さによるリスクなど、考慮すべきリスクには様々なものがあります。今回はセキュリティやアクセス制限に関するリスクについて取り上げます。

たとえば、テストに必要な管理画面やAPIにアクセスできない、あるいは社内ネットワークの制約により外部接続が制限されている場合、作業が大幅に遅れる可能性があります。また、テスト用データに個人情報や機密情報が含まれている場合、情報漏えいのリスクにも配慮が必要です。これらのリスクは、作業前に必ず確認し、必要であれば代替手段(ダミーデータの利用、仮環境の構築など)を講じるようにします。

テスト実装の成否は、実際の作業に入る前の確認・準備に大きく左右されます。上記のような確認を怠らず、計画的に進めることで、より正確で効率的なテストが実現できるでしょう。

②テスト実施(実行)のために必要な作業

テストを確実に、そして効率的に実施するためには、事前にさまざまな準備作業を整えておくことが欠かせません。有効なテストを実行するために、テストのために必要な作業を洗い出すことが必要です。ここでは、テスト実施のために必要となる主な準備作業について6つ取り上げて紹介します。

・テスト環境の準備

テストは、あらかじめ整備された専用の環境で行うのが基本です。テスト環境とは、アプリケーションやシステムが動作するサーバー、OS、ネットワーク構成、ブラウザや端末などの一式を指します。テスト対象のソフトウェアがテスト環境でうごくようにセットアップするだけでなく、端末などのような機器類の準備も忘れないようにしましょう。
本番環境とできるだけ同じ構成で準備することが理想ですが、開発状況によっては仮環境や限定的な設定で対応することもあります。環境構築が遅れるとテスト開始が遅れ、スケジュール全体に影響するため、事前にインフラ担当者などと連携し、早めに整備を進めることが重要です。

・テストデータの準備

テストに使用するデータは、テストケースにひもづけて適切な内容で準備しておく必要があります。たとえば、ユーザー情報、商品情報、注文履歴など、実際の利用を想定した「ダミーデータ(仮のデータ)」を用意します。テストデータを手動で準備するか自動化ツールを使うかはあらかじめ決めておきましょう。
また、異常系テスト(エラー発生を確認するテスト)では、意図的に不正なデータや境界値(限界の値)も使用するため、どのようなパターンが必要かを事前に整理しておくことが望まれます。

・ツールの準備

テスト実施に使用するツールも、事前に動作確認とセットアップを済ませておくべきです。代表的なものには、以下のようなツールがあります:
■テスト管理ツール(例:TestRail、qTest)
■不具合管理ツール(例:JIRA、Backlog)
■ログ収集・監視ツール
■自動テストツール(例:Selenium、Postman)

それぞれのツールがチーム内で使える状態か、権限設定は適切かを確認しておきましょう。

・制約事項の確認

テストを進めるうえで障害になり得る制限事項も、あらかじめ確認しておくことが必要です。たとえば次のような内容です:
■外部APIの使用時間に制限がある
■接続先のテスト用DBが同時利用できない
■使用できる端末が限られている
■ライセンスや契約によって実行環境が制限されている
■日またぎや月またぎのテスト実施のタイミングに問題はないか

これらの制約を把握せずにテストを始めると、途中で作業が止まる原因になります。可能であれば代替手段も用意しておくと安心です。

・実行手順の確認

テストを効率よく、かつ確実に進めるためには、テストケースの実行順序を計画的に決定しておくことが重要です。単にテストケースに記載されている順番どおりに上から順に実行していくと、手戻りや無駄な作業が発生する可能性があります。たとえば、「データの全件削除」といった操作を含むテストケースを早い段階で実行してしまうと、他の未実施のテストケースで使用する予定だったデータまで削除してしまい、再準備に時間がかかる事態になりかねません。

また、テスト条件にあわせてシステムの設定を何度も切り替える必要が出てくると、作業効率が著しく低下します。こうした非効率を避けるために、データの初期化・全件更新・削除などのテストは、他のテストに影響を与えないタイミングに配置する、同じシステム設定でまとめて実行できるテストケースは連続して処理するなど、効率性を意識した順序設計が求められます。

また、機能やテストデータの依存関係にも注意しましょう。たとえば、商品を購入するテストを行うには、先に「ログイン」や「商品登録」が正しく動作していることが前提になります。このように、ある機能が他の機能に依存している場合は、その依存関係を把握し、テストを実行する順序を適切に設定する必要があります。依存先の機能が未確認のままテストを行うと、予期せぬエラーや誤判定が起こりやすくなり、手戻りの原因にもなります。

そして、機能の優先度を考慮することも欠かせません。たとえば、システムの基本的な動作に関わる「メイン機能」や、他の機能から多く参照される「中核機能」などは、不具合があると他の多くのテスト結果に影響を及ぼすため、なるべく早い段階でテストを実施すべきです。また、ユーザーの利用頻度が高い機能や、ビジネス上の影響が大きい機能は優先的にテストを行うべきです。これらのような重要機能のテストを終盤に回してしまうと、もし不具合が見つかった場合に、その修正後に多数の再テストが必要となり、結果的にスケジュール全体の遅延につながるリスクが高くなります。

したがって、テストの実行順序は「依存関係」と「重要度」の両面から見て、最小限の手戻りで、かつ優先的にリスクの高い領域を検証できる構成にすることが理想です。

・作業工数の見積り

テストを計画的に進めるためには、テスト実施に必要な作業内容に基づいて工数(作業時間)を正確に見積もることが重要です。曖昧な見積もりのままテストに入ってしまうと、作業の遅れやスケジュール全体への影響が出るおそれがあります。

まず、テスト実装にかかる工数を見積もる際は、環境構築、テストデータ作成、ツールのセットアップ、テストケースの準備といった、テスト実行の前段階で必要となる作業を洗い出し、それぞれにどのくらいの時間がかかるかを積算します。実装作業を細分化して見積もることで、準備不足による手戻りを防ぐことができます。

そして、テスト実行にかかる工数は、テストケースごとの作業内容に応じて時間を分類・集計します。一律に「1ケース=5分」といった単純な見積もりをせず、各テストケースの特徴に注目し、実態に即した分類を行うことで、より精度の高い見積もりが可能となります。こうした時間設定は、プロジェクトごとに特性を踏まえて定める必要があります。

さらに、テスト実行にはテスト手順通りに進める時間だけでなく、不具合が発生した場合の報告作業や、修正後の再テストにかかる時間も含めて見積もっておくことが重要です。不具合対応には、内容の記録、再現条件の整理、影響範囲の確認、開発者とのやり取り、再確認といった作業が発生するため、見積もり段階であらかじめ「対応工数」として一定の余裕を持たせておくと安心です。

このように、単に件数や平均時間から見積もるのではなく、実際に必要となる作業の中身に着目して、現実的かつ柔軟な工数計画を立てることが、精度の高いスケジュール管理と円滑なテスト進行につながります。

③テスト実施(実行)スケジュールの作成

テストを円滑に進め、限られた期間内で高品質な検証を行うためには、詳細かつ現実的なテスト実行スケジュールを作成することが非常に重要です。テスト計画時には、テスト作業全体のおおまかなスケジュールを作成していることが一般的ですが、ここで作成するのは、個々のタスクを明記した、より具体的な実行スケジュールです。

スケジュールを立てる際には、まずテスト実行に必要な作業をすべて洗い出し、タスクを明確にすることから始めます。そのうえで、作業内容ごとに工数(必要時間)を割り当て、全体の流れを時間軸に沿って配置していきます。ここで、実行スケジュールの基礎となるのは、テスト作業工数の見積もりです。作業工数は、事前に「テスト実装に必要な作業」および「テストケースごとの実施時間」などを分析して算出した値を使用します。

単純に「1ケースあたり○分」などと見積もるのではなく、表示確認のみのテストと複数画面をまたぐ操作テストでは工数が異なるため、テストケースの種類に応じて分類・調整することで、実態に即した精度の高いスケジュール作成が可能になります。

また、スケジュールの単位(時間単位/日単位など)は、プロジェクトの規模や期間、進捗管理の方針に合わせて最小単位を設定します。その単位に従って、まずテスト準備作業から順に配置し、次にテスト実行工程を手順に従って割り当てていきます。

事前に考慮している点ですが、スケジュール作成時には、テストに関わるさまざまな制約事項を考慮することも忘れてはなりません。たとえば、以下のような要素がスケジュールに影響を与える可能性があります。

  • 外部システムの利用可能時間が限られている
  • テスト用端末が他チームと共用されており使用時間に制限がある
  • 担当者が他業務と並行して対応している
  • セキュリティポリシーにより接続環境に制限がある

これらの条件をあらかじめ把握し、テストの実施タイミングや作業分担を調整することで、実行段階での手戻りやスケジュール遅延を防ぐことができます。また、しつこいようですがリスクに対応するための余裕をみておくことは重要です。どれほど綿密に計画を立ててもリスクは発生しえます。

以下のようなリスクが代表例です:

  • テスト実行者によって作業のペースにばらつきがある
  • テストツールや機器の操作に習熟するまで時間がかかる
  • 想定以上の不具合が発生し、修正や再確認に時間を要する
  • 不具合の影響範囲が大きく、テスト自体を一時中断せざるを得ない

このような事態に備えて、工程の後半や節目にバッファ(予備時間)を設けておくことが重要です。また、スケジュール内に「進捗確認」や「作業見直し」のタイミングを設けておくことで、問題発生時に柔軟にリカバリーしやすくなります。

このように、作業工数に基づいた現実的な配分、制約条件への対応、リスク回避の余裕という3つの観点を踏まえてスケジュールを作成することで、テスト実行の確実性と柔軟性が大きく高まります。結果として、無理のない進行と高品質なテスト成果物につながるのです。

テスト実施(実行)

テスト実施(実行)とは、テストケースに従って実際にソフトウェアを動作させ、期待結果と実際の結果を比較するプロセスを指します。JSTQB(Japan Software Testing Qualifications Board)のシラバスによれば、テスト実行は「テスト対象にテスト入力を与え、期待される結果と比較することで、不具合や欠陥の有無を確認する活動」と定義されています。このプロセスは、単にプログラムを動かすだけではなく、事前に設計されたテスト計画やテストケースに基づいて、系統的かつ再現性のある方法で実施される必要があります。また、実行中に発生した問題や異常も正確に記録・報告されることで、品質向上や不具合修正のための重要な情報となります。

以下にテスト実施(実行)の流れを簡単に記します。一つづつ紹介していきます。

①テストの実行
②不具合報告

①テストの実行

このステップでは、あらかじめ設計されたテストケースを使用して、実際にソフトウェアを操作します。手動テストであればテスト実行者が画面操作や入力作業を行い、自動テストであればスクリプトを用いて自動的に処理を進めます。事前準備を済ませたうえで、実際にテストケースを実行します。

1つのテストケースを実行する際の大まかな手順は、次のとおりです。

  1. テストケースの選択
  2. テストケースの記載手順に沿ってソフトウェアを操作する
  3. テストケースの期待値と実際の挙動を比較し、結果を判定する
  4. テスト結果の記録や、定められた方法でエビデンスの取得を行う

基本的には、上記の要領でテストケースを実施していきます。ここで重要なのは、テストは正確性と一貫性を重視して行うことです。実行者によって結果がぶれないよう、手順の通りに忠実に実施するようにしましょう。

実行中に迷った場合や想定外の動作に遭遇した場合は、必ず記録を残しておき、後続の判断材料とします。また、テスト中に重大な不具合が判明した場合には、速やかにテストを中断し、次項で述べる不具合報告の手順に従って適切に対応を行うことが求められます。

②不具合報告

テスト実行中に、期待結果と異なる挙動やエラーメッセージが表示された場合、それは「不具合」として扱います。この段階では、不具合報告書(バグレポート)を作成し、再現手順、発生環境、スクリーンショットなどの情報を添えて開発チームに報告します。

不具合管理ツールを用いている場合は、不具合チケットを起票して不具合の情報を報告します。テストの担当者が不具合チケットを作成する際には、開発者に正確かつスムーズに情報が伝わるように記述します。具体的には、以下のような内容を盛り込むことが重要です:

  • 不具合と判断した事象と仕様との相違点
  • 再現手順(どの操作を行えば再現するか)
  • 再現頻度(常に発生するのか、時々なのか)
  • 不具合が起きている条件と起きない条件

これにより、開発者が不具合を正確に把握し、再現確認を効率的に行えるようになります。

不具合チケットは、単に「不具合を報告する」だけでなく、「開発者が正確かつ効率的に不具合を改修できるような報告をする」という意識で記述することが大切です。情報不足や行き違いが発生しないよう、必要な項目をもれなく、わかりやすく記載するようにしましょう。

不具合の報告を受けた開発者は、不具合を確認したうえで必要に応じて修正を行います。その後、テスト担当者は修正確認のためにテストを再実行します。その際には、単に該当箇所を再テストするだけでなく、システムの他の部分に影響がないかを確認する「回帰テスト」や、発生状況・原因の傾向分析に基づいた追加テストも行うことがあります。

テスト実行で気をつけるポイント(個人)

ソフトウェアテストを円滑に実施し、高品質な成果を得るためには、テスト実行そのものだけでなく、テスト担当者個人としての意識や行動も非常に重要です。ここでは、テスト担当者が意識しておくべき主なポイントを5つに分けて解説します。

①仕様の理解

テストを実施する前に、対象システムや機能の仕様を正確に理解しておくことが大前提です。仕様書や設計書、ユーザーストーリーなどを読み込み、「どういう動作が正しくて、何が異常か」を判断できるようにしておく必要があります。
仕様をよく理解していれば、何度も仕様書を見返す必要がなくなるため、テストの効率が格段に上がります。また、仕様の誤解は誤った不具合報告やテストミスにつながるため、事前に正確に把握しておくことが、結果的に全体の品質向上にも寄与します。

② 確実な準備

テスト環境、テストデータ、アカウント情報、テスト実行手順など、事前準備を確実に行うことが、スムーズなテストの鍵となります。テストケース作成者がすべての準備をしてくれるとは限りません。自分で不足しているものを確認し、必要に応じてデータを用意したり環境設定を見直したりすることが求められます。
チェックリストを用意して準備の抜け漏れを防ぐことも有効です。準備不足が原因でテストのやり直しが発生することがないよう、丁寧な事前確認を心がけましょう。

③関係者との情報共有

テスト実行に関わるチームメンバーや開発担当者、マネージャーとの情報共有は非常に重要です。テストの進捗、不明点、判定に迷った項目、不具合の発見状況などをタイムリーに共有することで、チーム全体の対応力が高まります。
不具合の報告が遅れると、開発者による修正作業も遅れ、結果的にリリースに支障をきたす可能性があります。また、テスト進捗の遅れを報告しなかった場合、リリーススケジュールが守れず、他の作業工程にも影響を与えることがあります。日報やチャット、ミーティングなどを活用し、定期的・迅速な情報共有を習慣化しましょう。

④ 不具合に関連したバージョン確認

不具合を見つけた際には、その事象が現在のバージョンで発生しているのかを確認することが重要です。ソフトウェアのバージョンによって挙動が変わることは珍しくありません。
同じ機能でも、修正履歴や仕様変更によって動作が異なる場合があります。どのバージョンから不具合が発生しているのかを明確にできれば、原因の特定がしやすくなり、開発者の修正作業もスムーズになります。

⑤ 不明点を問い合わせる

テスト中に「仕様が曖昧」「結果の判定に迷う」「操作がうまくいかない」といった不明点に直面した場合には、速やかに問い合わせることが基本です。わからないままテストを続けると、後で認識の誤りに気づき、再テストが必要になるリスクがあります。
効率的に正確な回答を得るためには、「はい/いいえ」で答えられる「クローズドクエスチョン」を意識して問い合わせると、相手も回答しやすくなります。

例:
×「これはどうすればいいですか?」
○「この画面で保存ボタンを押したあと、確認ダイアログが出るのが正しい仕様ですか?」

質問の質を高めることで、自身の理解も深まり、全体のテスト品質向上につながります。

テスト実行で気をつけるポイント(チーム)

ソフトウェアテストを成功させるには、個人のスキルだけでなく、チーム全体の取り組み方も重要です。特にテスト実行フェーズでは、「誰がテストするのか」「どのように準備・教育するのか」「どの視点で確認するのか」といったチーム全体の判断が、テスト品質に大きく影響します。ここでは、チームとして気をつけるべき3つのポイントを解説します。

①適切なテスト実行者を選ぶ

テストの質は、誰が実行するかによって大きく左右されます。そのため、テスト実行者の選定は、テスト計画の中でも特に重要なポイントです。
テスト期間が短かったり、手順や確認項目が複雑だったりする場合は、経験の浅いテスターには負担が大きく、正確な実行が難しくなりがちです。そのような状況では、過去に同様の機能を担当したことのあるテスターや、システムに詳しいメンバーを優先的に配置するべきです。テストを実行したい日程や、対象となる機能の難易度に応じて、最適なテスト実行者をアサインすることが、スムーズな進行と高品質な成果につながります。

②テスト教育を行う

テスト実行者のスキルにばらつきがある場合でも、教育やナレッジ共有によってチーム全体の底上げを図ることが可能です。仕様理解のためのレクチャー、過去の不具合事例の共有、テストツールの使い方など、日々の情報共有を重ねることで、テスターとしての基礎力が身につきます。
加えて、「テスト技法」「テストマネジメント」といった知識を実行者自身が身につけることで、テストの視点が広がり、成果の質も高まります。たとえば、境界値分析状態遷移テストなどの技法を理解していれば、単にテストケースをなぞるのではなく、「本当に見るべき箇所」に意識を向けられるようになります。

③第三者検証は有効

開発者とは異なる立場で行う第三者によるテスト(第三者検証)は、テスト品質を一段高める手段として非常に効果的です。開発者自身がテストを行う場合、「この機能は大丈夫なはず」といった思い込みが入りやすく、問題を見逃すリスクがあります。一方、第三者であるテスト担当者は、客観的な視点で仕様どおりかを判断できるため、開発側の想定にない不具合や、操作性の課題なども発見しやすくなります。特に以下のようなメリットがあります。

  • 客観的なチェックで、仕様漏れや見逃しを発見しやすい
  • ユーザー目線での使いやすさを評価できる
  • テスト観点が開発チームと異なるため、視点の幅が広がる

プロジェクト規模に応じて、内部の他チームメンバーや、外部ベンダーなどの第三者を活用するとよいでしょう。

まとめ

今回はテスト実施(実行)について紹介しました。テストはソフトウェアのライフサイクルでは最終版の段階です。リリースまでのクリティカルパスと言えます。そのため、テストを効率よく、計画通りに実施することは非常に重要です。

テスト実施は「テスト実装」「テスト実行」に分けられます。テスト実装では、実行に必要な環境構築やデータ準備、ツールの整備、リスクや制約事項の確認、作業工数の見積もりなどを行います。これらの準備が不十分だと、テスト実行中にトラブルや非効率が発生します。

テスト実行では、テストケースに沿ってソフトウェアを動かし、正しく動作するかを検証します。依存関係や重要度を考慮した順序設計と、精度の高いスケジュール管理が品質確保に不可欠です。

お問い合わせはこちら