システムテストとは?目的・観点・種類・手順を徹底解説!

システムテストとは?目的・観点・種類・手順を徹底解説!

システムテストはアプリケーション開発の重要な工程で、システムやソフトウェアの構築が完了したタイミングで実施するものです。個々の機能ではなく、システムやソフトウェア全体が要件定義書の通りに作成されているかを評価します。また、求められている機能や性能が予定通り実装されているかどうかを評価するものです。

システムテストを実施することで、アプリケーションの品質を最大限担保できるようになります。開発する側も、開発を発注する側も必ず理解しておきたい工程であるため、システムテストについて今回は解説します。

システムテストの概要と目的

システムテストはシステム全体を評価するためのテストを指します。一般的には、アプリケーション開発を評価するためのテストです。ただ、システムの構築においてインフラなどを整備したならば、これらも含めたテストに変化します。システムやソフトウェアの開発において、構築や実装したもの全てを評価するテストだと理解すればよいでしょう。

システムテストを実施することによって、開発したシステムが「想定通りに実装されているか」の最終確認ができます。例えば、アプリケーションは想定していた機能が全て実装され、業務を遂行できるかを評価するのです。また、インフラ面では要求していたレスポンス速度が達成されているかどうかを確認します。実際にシステムで業務などを遂行するときと同じ内容をテストし、問題がないか最終確認するのです。

なお、システムテストの実施は、単体テストや結合テストなどが完了したタイミングです。そのため、基本的には個々の機能レベルといえる小さなバグなどは検出されません。実際に業務を遂行するにあたり、問題となる部分が洗い出されるのです。ただ、システムテストで単体テストレベルのバグが発見されることもあります。このような問題が露呈したならば、プログラム修正などに大きな影響を与えかねません。

システムテストで求められる観点


システムテストでは、どのような観点から評価が求められるのかを紹介します。

機能評価

機能評価は、開発したシステムやアプリケーションが要件定義に沿っているかを確認するものです。どのような機能が必要になるかは、要件定義の段階で事前に定義されています。その内容を踏まえて、全ての機能が新しく実装されているかを評価するのです。例えば、アプリケーションにログインできるか、フォームから情報を送信できるか、ボタンのラベルや位置が設計書通りかなどを確認します。

なお、これらは単体テストでも評価している部分です。そのため、システムテストでは全体を通じた一連の流れで評価しなければなりません。

性能評価

性能評価は、処理できるデータ量やレスポンス速度などを評価するものです。一般的に非機能要件と呼ばれるもので、これも要件定義の段階で定められます。基準値が決定されているため、これを満たしているかを評価するのです。例えば、応答速度は1秒以内、検索速度は5秒以内などと定めておき、このとおりに開発されているかを確認します。

負荷評価

負荷評価は、性能評価に似た部分もありますが、どれだけの負荷に耐えられるかを確認するものです。例えば、大量のデータが入力された場合、すべてに対して想定通りの振る舞いができるかを評価します。また、複数のユーザーが同時に利用した際に、すべてのリクエストに正しくレスポンスできるかどうかなども確認します。

運用評価

システムが完成した後に、実際の運用をシミュレーションし、業務的な評価も実施します。実際に業務を遂行するように操作して、支障がないかどうかを確認するのです。要件定義に沿った個々の機能確認だけではなく、業務時間内にすべての処理が完了できるかなども評価しておきます。

また、バッチ処理などが含まれている場合は、これらについても運用評価で確認しなければなりません。例えば、深夜にマスタデータの連携処理が動く設計ならば、実際に動作させて翌朝の利用に問題がないかを評価します。

セキュリティ評価

セキュリティ要件が定められていることが多いため、これらについての評価も必要です。例えば、外部からの攻撃を検知して、関係者にメールが送付されるかどうかなどを確認します。セキュリティ評価は、どのような仕組みを採用しているかによってシステムテストの事項が変化する部分です。一概に何を評価すると言い切れないため、その点は注意してください。

システムテストの種類


システムテストには種類があるため、それらからピックアップして紹介します。

機能テスト

システムテストの中でも特に重視されるもので、開発されたシステムが事前に定められた要件定義に沿っているか評価します。細かな機能は単体テストや結合テストにおいて評価されているため、それらの機能を利用して、想定通り業務を遂行できるかどうかを中心に評価するのです。実際に業務で利用するシナリオを用いて、システムを評価するケースが多いと理解しておきましょう。

なお、要件定義書に沿った機能が提供されているかという観点では、性能面なども同時に評価しなければなりません。そのため、以下で解説する性能テストは機能テストに含まれる場合があります。システムテストの種類は明確に定義されているわけではないため、プロジェクトに応じて臨機応変に対応することが重要です。

性能テスト

システムの応答速度やデータ処理能力などが要件定義に沿っているかどうかを評価するテストです。機能テストは純粋に要件どおりの機能が実装されているかを評価するもので、基本的に性能は評価されません。そのため、性能テストも別の観点として実施することが求められます。

例えば、機能が実装されていても動作に5分や10分が必要となっていれば、業務を遂行できない可能性が高いでしょう。そのため、性能テストで想定されている時間内に処理が完了するかどうかを評価します。要件定義の段階で、レスポンス速度などの非機能要件が定められているため、これを基準とするのです。

リグレッションテスト

回帰テストとも呼ばれるもので、各種テスト工程で不具合が生じて修正作業が発生した際に、その修正結果を評価するためのものです。プログラムを修正して、バグが解決しているかを評価するための「再テスト」と理解すればよいでしょう。単純に、バグが解決しているかどうかを評価するだけではなく、別の問題を生み出していないかも評価します。

一般的にあるトラブルとして、バグの発生していた機能を改修することによって、別の機能が動作しなくなることが挙げられます。そのため、バグを発見したテストを改めて実施するだけでなく、影響を及ぼしそうな機能で新しいバグが生まれてないかも評価するのです。

ロングランテスト

その名のとおり、長期間システムを動作させて、不具合が発生しないかどうかを評価するテストです。多くの場合、システムテストは短期間で実施して、その結果を記録・評価する方法がとられます。ただ、場合によっては、短期的なテストだけでは判明しない問題があるかもしれません。そのため、ロングランテストも必要とされます。

例えば、データを中長期的に保存することによって、容量が不足してシステムが停止するかもしれません。設計段階で考慮していても、実際に動かしてみると想定よりもデータ量が多く、大きなトラブルが発生することがあります。そのような問題を検知したり、安定して運用できるかを評価したりするため、ロングランテストも実施しておくのです。

ただ、ロングランテストの実施には、時間とお金が必要となるため、システムテストの中でも割愛されるケースが多くあります。

システムテストの実施手順


システムテストを実施する際は、どのような手順で進めればよいのかについて解説します。

テストの計画

最初にシステムテストの計画を立てなければなりません。テスト計画とは、どれだけの時間やお金をかけてどれだけのテストを実施するのかなどを定めることです。一般的に、テストは多く実施すればするほど品質が高まりますが、それだけ時間とお金がかかってしまいます。際限なくシステムテストを実施することは不可能であるため、事前にどれだけのテストを実施するか計画で定めなければなりません。

なお、以下で解説する手順は、システムテスト計画の内容が礎となります。例えば、テストのスケジュールを決定する際には、テスト計画で定めた期間を中心に考えるのです。これら以外についても、システムテスト計画の内容をもとに細かな部分が決定されるため、慎重に検討しなければなりません。

テストの設計

続いては、テストの設計作業に移ります。テストにおける設計とは「具体的にどのようなテストを実施するのか」を決定することです。解説したとおり、システムテストにはいくつもの観点があり、目的に応じてどれをテストするか変化します。テスト計画に沿って、定められた観点についてどのようなシナリオで実施するのかを検討していくのです。

なお、具体的なテストシナリオもこの段階で作成します。要件定義書の内容を踏まえて、テストケースの詳細を詰めていくようにしましょう。システムテストは、機能を単体で評価するのではなく、一連の業務で評価するシナリオにすることが重要です。

また、テストを実施する担当者も具体的に決定しなければなりません。特にシステムテストではIT部門ではなく、業務部門の担当者がテストを実施することが多々あります。日々の業務に加えてテストを実施してもらう必要があるため、事前に伝えておかなければトラブルになりやすいのです。

テスト環境の構築

システムテストを実施する際は、専用の環境を構築するケースが大半です。これまでに単体テストや結合テストを実施しているはずですが、同じ環境でテストすると不要なデータなどが残っているかもしれません。これにより想定外のトラブルが発生する可能性があるため、綺麗な環境を用意してシステムテストを実施します。

テスト環境の構築にあたっては、各種ハードウェアのスペックを本番に近いものとしたり、テストに利用するデータも実際の業務データを採用したりすることが重要です。システムテストは本番の運用を想定して実施するものであるため、あまりに乖離があると、評価した結果が意味をなさないものになってしまいます。もちろん、コスト面でまったく同じものは準備できないかもしれませんが、可能な限り本番に近い環境作りを心がけましょう。

テストの実施

環境が準備できたならば、システムテストの実施へと移ります。テスト計画書やテストシナリオに沿って、着々と進めていきましょう。定期的に状況を確認して、遅延なく進めることが大切です。それぞれのテストについてエビデンスを取得し、テストが成功したかどうかを後から確認できるようにします。

なお、テスト中に何かしらのバグが見つかるかもしれません。この場合にはいち早く連絡してもらい、調査などの対応が取れるような体制を整えておきましょう。もし、アプリケーションにバグが含まれているならば、早急に修正して再テストを実施しなければなりません。

テストの評価

一連のテストが完了したならば「システムテスト報告書」と呼ばれるものを作成し、システムをリリースできるかどうかを評価しなければなりません。例えば「どのようなテストを実施したか」「バグは発生したか」などを資料にまとめ、結果を踏まえて最終的にシステムをリリースできるかを判断できるようにします。

テストの評価が完了した後は、その内容をプロジェクトオーナーやシステムオーナーなどに説明し、システムをリリースするかどうかの判断を仰ぎます。

まとめ

システム開発で重要なシステムテストについて解説しました。単体テストや結合テストに続いて実施するもので、システムの品質を高めるために、いくつもの観点から実施されます。また、同じシステムテストといえども、その種類は多岐に渡るため、どのようなテストを実施するかを理解しなければなりません。

なお、システムテストは実施すべきことが多く、すべてをテストしようとするとコストが際限なくかかります。そのため、どのテストが必要であるかどうかを見極めて、部分的に実施するケースが大半です。

SHAREこの記事をシェアする

admin