ソフトウェアの不具合流出を防ぎ、その品質を保証するためには、高品質なテストの実行が求められます。ステップアップを目指すテスターにとっても、開発チームの業務改善を図りたいマネージャーにとっても、テスト実行に関する理解を深めることは重要です。
この記事では、ソフトウェアテストに携わるすべての方に向けて、テスト実行の流れをお伝えします。テスト実行時に気を付けることや成功のポイントも紹介するため、ぜひ参考にしてください。
- もくじ
1.ソフトウェア開発における「テスト実行(実施)」とは
まずは、ソフトウェア開発における「テスト実行」とは何かを明確にしましょう。
JSTQBのシラバスには以下のように定義されています。
テスト実行(test execution) コンポーネントまたはシステム上でテストを実行し、実際の結果を提案する活動。
テスト実行は、テスト実行スケジュールに従ってテストを走らせること(テストラン)を含む。テスト実行は、手動でも自動でもかまわない。テスト実行には、継続的テストやペアテストセッションなど、 さまざまな形式がある。実際のテスト結果は、期待結果と比較する。テスト結果を記録する。不正を分析して、考えられる原因を識別する。この分析により、観察された故障に基づいて不正を報告することができる(5.5 節を参照)。
出典:JSTQB シラバス、用語集より
テスト実行とほぼ同義として「テスト実施」という言葉が使われるケースもありますが、本記事では「テスト実行」と記載して解説していきます。
2.テスト実行の大まかな流れ
それでは、ソフトウェアテスト実行の大まかな流れを見ていきましょう。ここではシステム全体レベルで動作を確認する「システムテスト」の実施を例にお伝えします。テスト実行の流れは、次の4ステップです。
2-1 各種ドキュメント確認
まずは、要件定義書や設計書といった各種ドキュメントを確認しましょう。テスト関連のドキュメントだけではなく、ソフトウェアがどのような仕様になっているのか、今回どのような変更が行われたのかを把握する必要があります。
テスト対象ソフトウェアについて把握せず、記載されたテスト手順だけを実施するのは危険です。何が正しいかも不明確なままでは、テストケースに明記されていない異常現象を見逃すこともあります。必要な情報をしっかり集めたうえでテストに臨みましょう。
2-2 事前準備
テストの情報収集だけでなく、実際にテスト対象ソフトウェアを動かすために必要な事前準備を行いましょう。事前準備の内容はケースバイケースですが、次のようなものが挙げられます。
- テスト用端末の確保
- テスト用アカウントの作成
- テスト用ハードウェアの接続や設定
- テスト用ソフトウェアの導入や設定
- テスト用のデータやファイルの用意
またテストドキュメントを確認し、テストケースの実行順序を考えておくことも重要です。何も考えずに記載順序どおりに実行すると手戻りが大きくなる場合があります。
たとえば、1機能のテストケースをすべて消化した後に別の機能で致命的な問題が発覚し、最初から再テストが必要になるケースも考えられます。機能ごとのテスト優先度だけでなく、NG項目が発生した場合の手戻りの大きさも考慮して順序を考えましょう。
2-3 テストケース実行
事前準備を済ませたうえで、実際にテストケースを実行しましょう。1つのテストケースを実行する際の大まかな手順は、次のとおりです。
- テストケースを選択する
- テストケースの記載手順に沿ってソフトウェアを操作する
- テストケースの期待値と実際の挙動を比較し、結果を判定する
- テスト結果の記録や、定められた方法でエビデンスの取得を行う
基本的には、上記の要領でテストケースを消化していきます。ただし、テストで重大な不具合が判明した場合には、次項で述べる不具合報告を速やかに行いましょう。
2-4 不具合報告・進捗報告
テストにおいて判明した不具合があれば、速やかに報告する必要があります。不具合報告の方法は開発チームによってさまざまです。たとえば不具合管理ツールを用いている場合は、不具合チケットを作成し、ツール経由でメールを展開することになるでしょう。
また、テストマネージャーといった関係者への報告は定期的に行うことが理想です。進捗報告のタイミングはテスト計画書の内容やチーム体制によっても変わります。
3.テスト実行時に気を付けること
ソフトウェアテスト実行時に気を付けるべきことは、主に次の5つです。
3-1 仕様を正しく理解する
テスト対象ソフトウェアの仕様を正しく理解することが重要です。仕様の理解が誤っていると、何が有効値/正常値なのか、何が無効値/異常値なのかが揺らぎます。自分の中に正しい基準がないままテストを実施すると、結果判定のミスにつながります。
また、表示項目の意味を把握できていないために、テストケース実行のたびに仕様書を確認するのでは非効率といえます。どの項目が何を意味するのかは把握しておきましょう。
3-2 準備を確実に行う
テストの準備は確実に行いましょう。テスト実行中に準備不足な作業があると、テストの効率は著しく低下します。足りない要素があれば事前に揃えておくことで、実行がスムーズになるでしょう。
また、テストに必要なデータやファイルが揃っているのかも確認しておくべきです。テストケース作成者が、テストに必要な材料を完璧に用意してくれているとは限りません。
3-3 関係者との情報共有をしっかり行う
不具合や進捗など、関係者との情報共有を欠かさず行いましょう。不具合の報告が遅れると開発者の対応も遅れ、プロジェクト全体のスケジュールにも影響しかねません。
テスト進捗に遅れが生じている場合も、速やかに情報共有すべきです。開発の終盤に行うテストの遅れは、リリースにも影響します。テスト要員補充やスケジュール調整などの対処を早期に行うためにも、関係者に遅れを速やかに伝えることが重要です。
3-4 さまざまなバージョンの確認を行う
不具合と思われる現象があった場合、さまざまなバージョンで確認しましょう。ソフトウェアのバージョンによって挙動が変わることは珍しくありません。どのバージョンから不具合が発生するのかがわかれば、原因が絞れて解決がスムーズになります。
3-5 不明点があればすぐに問い合わせる
不明点の確認は後回しにせず、すぐに問い合わせましょう。わからない状態のままテスト実行を続けると、後で認識違いに気づき再テストが必要になることもあります。
ただし、選択肢が与えられない「オープンクエスチョン」だと、相手に時間を使わせてしまいます。Yes・Noのように、決まった選択肢から選べる「クローズドクエスチョン」での問い合わせを意識しましょう。
ソフトウェアテスト実施はじめてガイドブック
実際に「テスト実施」・「不具合報告」をする際の正しい流れを解説したガイドブックです。ソフトウェアテストを初めて実施する人に向けて、その作業内容や用語、心構えをまとめています。
4.チームとしてテスト実行を成功させる3つのポイント
高品質なソフトウェアテストを成功させるうえで、テスト実行者が気を付けるだけでは不十分です。ソフトウェア開発チームとしてテスト実行を成功させるのであれば、次の3つのポイントを押さえておきましょう。
4-1 テスト実行者の選定
テスト実行者の経験やスキルによって、テストの速度や品質は変わってきます。テスト期間が短かったり、手順や確認項目が複雑だったりする場合、経験の少ないテスターだと難しいでしょう。実行したいテストの日程や難易度に合わせた実効者の選定が重要です。
4-2 テスト教育を推進する
必要な知識がない状態で若手にテスト経験を積ませても、テストの成果は上がりません。
それどころか、誤った理解が定着してしまうことも考えられます。ソフトウェア品質保証の基盤を固めるためには、テスト教育を推進することも重要です。テスト技法やテストマネジメントといった知識をテスト実行者が身につけることで、成果が高まります。
なお、テスト教育を推進する際には、Webで手軽に学べるeラーニングが効果的です。
4-3 第三者検証を取り入れる
開発者とテスト実行者を同一人物にする場合、テストに先入観が入って不具合を見逃すことがあります。開発者の先入観を排除するために、「第三者検証」を取り入れることが効果的です。開発に関与しない第三者がテストを実行するため、より確実に不具合を検出できます。
短期間で高品質なテストを実行するのであれば、プロに第三者検証を依頼するのが確実です。第三者検証を実行したい場合は、幅広い業界において豊富な実績を持つバルテスまでお問い合わせください。
まとめ:高品質なテストを実行しよう
テスト実行にあたっては、各種ドキュメント確認、事前準備、テストケース実行、不具合報告・進捗報告といった流れで進めます。仕様を正しく確認する、準備を確実に行う、情報共有をしっかり行うなど、テスト実行時には気を付けるべきことが数多くあります。
ソフトウェア開発チームとしてテスト実行を成功させるのであれば、テスト教育の推進や第三者検証の導入も検討すべきです。
本記事の内容を参考に、高品質なテスト実行を成功させましょう。