ソフトウェアテストとは?目的や7つの原則・工程別の種類を解説
COLUMN
最終更新日:2023年09月15日 / 投稿日:2023年09月15日
現代は、家電、スマートフォン、PC、ゲームから医療機器、車両など、身の回りにあるあらゆるものにソフトウェアが組み込まれている時代です。ソフトウェアの安全性に問題がある場合、重大なものなら製品のリコールや訴訟など大きな問題にもつながるでしょう。そのため、ソフトウェア開発の際には、事前にソフトウェアが正常に動作するかテストする工程が組み込まれています。
この記事ではソフトウェアテストの目的や種類、ISTQB(国際ソフトウェアテスト資格認定委員会)が定める7つの原則について解説します。
1.ソフトウェアテストとは
ソフトウェアテストとは、制作したソフトウェアが想定通りに動作し、期待される要件を満たしているかを評価・検証するために実施するテストです。
現代社会はさまざまな製品にソフトウェアが実装・活用されています。ユーザーが製品を安全に利用するために、開発プロセスでソフトウェアの動作を確認するソフトウェアテストは欠かせない作業です。
ソフトウェアテストでは、調査したいテスト対象に沿ってさまざまな条件・データなどを組み合わせたテストケースを組み、テストを実施します。ソフトウェアテストは人力でも行えるものの、多くの細かな作業が要求されるため、テスト自動化ツールの利用がおすすめです。
テスト自動化ツールならATgo
1か月トライアル無料:詳細はこちら
1-1.ソフトウェアテストの目的
ソフトウェアテストの目的としては、主に下記の4つが挙げられます。
- ソフトウェアの正常な動作を保証する
ソフトウェアが正常に動作しなければリリースできません。ソフトウェアテストによってソフトウェア品質を評価でき、リリース後の正常な動作を保証できます。
- ソフトウェアの欠陥やバグを発見する
どのようなソフトウェアであっても欠陥やバグは存在します。開発段階で発見可能な欠陥やバグをなるべく発見し、対処することもソフトウェアテストの目的です。
- 意思決定の材料となる情報を提供する
ソフトウェアに欠陥やバグを発見した場合、修正のために時間が必要となります。ソフトウェアテストにより発見した欠陥・バグは、リリースの時期や可否を決める重要な判断材料です。
- 欠陥の発生を防ぐ
ソフトウェアテストで欠陥・バグを発見することで、開発中のソフトウェアに起こり得る問題を把握できます。開発中に同じ欠陥が発生しないよう、予防が可能です。
2.ソフトウェアテストの7原則
ソフトウェアテストの基礎知識を証明する資格「ISTQBテスト技術者資格制度」では、ソフトウェアテストを行う際に理解するべき7つの原則があると定めています。
出典:国際ソフトウェアテスト資格認定委員会「テスト技術者資格制度Foundation Level シラバス」
ソフトウェアテストを行う普遍的なガイドラインとなる7原則を分かりやすく解説します。
2-1.テストは欠陥がないことを示せない
ISTQBの正式名称は「テストは欠陥があることは示せるが、欠陥がないことは示せない」です。
ソフトウェアテストで欠陥を発見できれば、ソフトウェアに欠陥があることは確認できます。しかし、欠陥を発見できないときに、「テストを行っても欠陥が発見できないなら、欠陥が存在しない」と判断するのは危うい考え方です。
設定したテストケースでのみ欠陥が発見できない場合や、テストを繰り返すと欠陥が分かる場合もあります。ソフトウェアテストは欠陥がないことを保証する手段ではない、という点に留意しましょう。
2-2.全数テストは不可能
全数テストとは、設定できるすべての条件・データなどを組み合わせて実施するテストです。もしも全数テストを行うのであれば、膨大な組み合わせのテストケースを実施する必要があります。ソフトウェアテストにも予算や納期の都合があり、全数テストは現実的に考えて不可能です。
実際のソフトウェアテストでは、調査したいテスト対象によって条件・データを絞り込んでテストケースを設定します。テスト範囲を単純に広げるよりも、調査対象に合わせて設定したほうが効率的です。
2-3.早期テストで時間とコストを節約
早期テストとは、開発の早期段階で行うソフトウェアテストのことです。早期テストを行うとソフトウェアの欠陥を早く発見でき、開発にかかる時間・コストや開発チームの負担を抑えられます。
一般的な開発サイクルでは、テストは開発の終盤に行われることが多いでしょう。しかし、ソフトウェアテストを開発の終盤近くに実施した場合、「ソフトウェアの根幹にかかわる欠陥を残したまま開発が進んでいた」という事態が起こり得ます。「欠陥の修正がほかの部分に影響し、更なる欠陥が生じた」というケースも起こる可能性もあるため、時間とコストを節約するには、早期テストを行うことが理想的です。
2-4.欠陥の偏在
欠陥の偏在とは、欠陥が特定の部分に集中している状態です。ソフトウェア開発では、実装する機能の開発難易度や、個人の開発スキルの違いなどにより、欠陥が特定の部分に集中する「欠陥の偏在」が生じやすくなっています。
ソフトウェアテストを実施する際には、欠陥の偏在を認識し、どの部分に偏在しているかの予測が重要です。過去の開発経験などを参考に欠陥の偏在を予測することで、欠陥が集中する部分へと重点的にテストを実施できます。
2-5.殺虫剤のパラドックスに注意
ISTQBの正式名称は「殺虫剤のパラドックスにご用心」です。
殺虫剤のパラドックスとは、同じ殺虫剤を使い続けると害虫が耐性を持ち始めることです。ソフトウェアテストも同様に、同じテストばかりを繰り返すと徐々に新しい欠陥を見つけにくくなります。
ソフトウェアテストの効果を高めるには、殺虫剤のパラドックスに注意して、テストの内容や方法を定期的に見直すのが大切です。
2-6.テストは状況次第
ソフトウェアテストでは、実際にそのソフトウェアが使用される状況に合わせて、テストの内容や方法を適宜変更する必要があります。
例として、人命にかかわる医療系のソフトウェアをテストする場合には、正確かつ安定した運用ができることを重視しなければなりません。ゲームのソフトウェア開発であれば、定期的なアップデートが求められるため、テスト体制は効率性を重視する必要があるでしょう。
自社が過去に行った経験のあるテストを、異なる状況でもそのまま実施しないように注意してください。
2-7.「バグゼロ」の落とし穴
ソフトウェアテストを繰り返し実施して、欠陥・バグが発見できない「バグゼロ」のソフトウェアを開発したとしても、高品質なソフトウェアであるとは限りません。例を挙げると、欠陥・バグの予防に注力するあまりシステムが複雑化して、ユーザビリティを無視した使いにくいソフトウェアになるケースがあります。
バグゼロは、ソフトウェア開発における最優先事項ではありません。ソフトウェア開発の目標や満たすべき要件などを念頭に置き、適切なソフトウェアテストを実施しましょう。
テスト自動化ツールのATgoでは、開発体制に合わせて選びやすい料金プランを用意しています。
3.ウォーターフォール型開発における工程別のソフトウェアテストの種類
ソフトウェアテストの種類は、ウォーターフォール型開発における工程別に見る場合、以下の表のように分類できます。
名称 | テストの特徴 |
---|---|
単体テスト | モジュール単位やコンポーネント単位といった、プログラムを構成する小さな単位に対して行うテストです。単体の機能が正常に動作するかをチェックします。 |
結合テスト | 複数のモジュールやプログラムを結合して行うテストです。モジュールなどを結合した際に、テスト設計通りに作動するか、個々の機能が正しく連携するかなどをチェックします。 |
システムテスト | ソフトウェアのシステム全体を対象として、開発側が行う最終テストです。システムテストではエンドユーザーの利用を想定して一通りの処理を実施し、要件を満たしているかをチェックします。 |
受け入れテスト | 開発したソフトウェアの納品時に、実際の運用環境などでシステムを使用して、仕様や動作に問題がないかをチェックするテストです。基本的に、ソフトウェア開発を依頼した発注側が受け入れテストを実行します。 |
ソフトウェアテストの工程で、最初に行うテストが単体テストです。次に結合テストとシステムテストを経て、最後に発注側が受け入れテストを行う流れで進めます。
4種類のソフトウェアテストについては、下記のページでより詳しく解説しています。
単体テストとは?メリット・デメリットと手法から3つの注意点まで COLUMN
結合テストとは?種類から3つの注意点まで徹底解説 COLUMN
システムテストとは?3つの種類から実施の流れまで COLUMN
受け入れテストとは?実施方法・確認するべきポイント・注意点を解説 COLUMN
まとめ
ソフトウェアテストは、ソフトウェアが意図した通りに動作するかどうかを確認・検証し、未然にバグを発見して、欠陥を防ぐ目的で行われます。また、テストをすれば、リリースの可否などを決定するための判断材料も得られます。
ただし、ソフトウェアテストをする場合には、「ソフトウェアテストの7原則」と呼ばれる普遍的なガイドラインがあり、これに沿ってテストを行うことが必要です。ガイドラインから外れたテストを行う場合、時間や費用のロスが発生するだけでなく、テストを効果的に行えません。
また、ソフトウェアテストを行う際にはテスト自動化ツールの利用がおすすめです。テスト自動化ツールATgoは、セキュアなテスト環境にも素早く簡単に導入可能で、テストの工数とコストを最大で85%削減できます。