ソフトウェアテストとは? テストの7原則や種類、プロセスを紹介
【監修】株式会社ジオコード マーケティング責任者
渡辺 友馬
現代は日々の生活のあらゆる場面でソフトウェアが浸透しており、人々の生活の利便性を高めています。続々と新しいソフトウェアがリリースされていますが、ソフトウェアの開発工程では段階に応じてさまざまなテストを実施し、ソフトウェアが正常に動作するかを確認することが重要です。ソフトウェアテストとはどのようなもので、どのような方法で実施されるのでしょうか。
本記事ではソフトウェアテストの概要や重要性、テストの7原則や種類、フェーズごとの分類や実施プロセスなどを解説します。ソフトウェア開発で適切なテストが実施できないと、製品の品質が担保できず、自社の信頼を失ってしまうことにもなりかねません。ソフトウェア開発に関わっている方は、ぜひ本記事を参考にしてみてください。
おすすめのシステムテスト企業一覧
scroll →
会社名 | 特徴 | 得意分野 | 品質 | 費用 |
---|---|---|---|---|
SOLIZE株式会社 |
|
ソフトウェア開発サービス、第三者検証サービス、国際規格コンサルティングサービス | ISTQBパートナープログラムGold Partnerの認定 ソフトウェア品質知識体系(SQuBOK)に沿った開発 |
要問い合わせ |
バルテス・モバイルテクノロジー株式会社 |
|
Web・モバイルアプリ開発、モバイルアプリのテスト・保守 | 要問い合わせ | 要問い合わせ |
株式会社メリテック |
|
業務システム、WEBシステム、組み込みシステム開発 | ISO9001、ISO/IEC 27001、ISO 13485:2016、ISO 22301:2019を取得 | 要問い合わせ |
株式会社AGEST |
|
・テスト設計/実施のアウトソース ・多端末テスト ・脆弱性診断 ・アジャイルテスト ・テスト自動化導入支援 |
ISTQBのパートナープログラムにおいて最上位となるGlobal Partnerを取得 | 要問い合わせ |
株式会社ユー・アイ・エス |
|
Webシステム、業務システム、モバイルアプリ | 要問い合わせ | 要問い合わせ |
Bee Tech Asia株式会社 |
|
システム開発、WEB開発、アプリ開発、ベトナム進出支援 | 要問い合わせ | 要問い合わせ |
株式会社ブレーンネット |
|
システム開発、インフラサービス、移動体通信、エンジニア派遣・人材紹介、技術研修 | 要問い合わせ | 要問い合わせ |
株式会社SHIFT |
|
ソフトウェアテスト・品質保証、セキュリティ、DX、UI/UX、カスタマーサクセス | SHIFT独自の品質保証標準(SQF) | 要問い合わせ |
バルテス株式会社 |
|
Webサイト、モバイルアプリ、業務システム、家電・AV機器・OA機器、デジタル放送、金融・保険、開発SIer、アジャイル開発など | ISO/IEC 27001認証、JSTQB取得率が92%(入社2年目以降) | 要問い合わせ |
株式会社システナ |
|
移動体無線通信・基地局及びコアネットワーク検証、決済端末品質検証、フィールド試験、IoTデバイス検証、スマートデバイス・アプリケーション検証、Webアプリケーション検証、品質管理コンサルティング | 要問い合わせ | 要問い合わせ |
株式会社デジタルハーツ |
|
ゲームデバック | 要問い合わせ | 要問い合わせ |
テクバン株式会社 |
|
システムインテグレーション、ITプラットフォーム、セキュリティ、ビジネスアプリケーション、ビジネスアウトソーシング、ソフトウェアテスト | 要問い合わせ | 要問い合わせ |
株式会社ヴェス |
|
ソフトウェア・Web検証、組込み検証、その他検証・教育サービス | IVEC最高位のプラチナパートナー、ISTQBのゴールドパートナーに認定 | 要問い合わせ |
Sky株式会社 |
|
自社パッケージ商品開発・販売、ソフトウェア開発・評価・検証 | JSTQB保有者470名以上 | 要問い合わせ |
株式会社ベリサーブ |
|
品質向上、効率化、検証支援、セキュリティ対策、分野特化型サービス、テスト支援ツール | 要問い合わせ | 要問い合わせ |
株式会社プラスナレッジ |
|
ソフトウェア開発、Web・モバイル・アプリケーション評価、車載系ソフトウェア評価、品質コンサルティング、ニアショア事業 | 要問い合わせ | 要問い合わせ |
株式会社ウェブレッジ |
|
サービス品質検証・システム品質検証 | 標準テストプロセス(ISO-29119)を採用 ISTQB Platinum Partner・IVEC Silver Partner認定 |
要問い合わせ |
この記事の目次はこちら
ソフトウェアテストとは?
ソフトウェアテストとは、開発したソフトウェアが正常に動作するかを検証するテストのことです。
開発段階のそれぞれのフェーズでテストを実行して、ソフトウェアに不具合がないかを検証したりクライアントの要件や仕様を満たしているかを照合したりして、リリース後のトラブル発生を防ぎます。開発工程において、ソフトウェアの品質を担保するための重要なプロセスです。
ソフトウェアテストの重要性
どのようなソフトウェアを開発する際でも、ソフトウェアテストは必ず実施されます。
綿密にソフトウェアを開発したとしても、開発段階では何かしらの不具合が発生します。その不具合を見落としたままソフトウェアをリリースしてしまうと、クライアントはもちろんエンドユーザーから低評価を受けてしまうでしょう。もし重大な損害が出るようなトラブルが発生すれば、自社の信頼も失墜してしまいかねません。
ソフトウェアテストが重要なのは、このような事態に陥ってしまうのを避けるためです。100%不具合がないシステムを作ることは難しいですが、テストを実施して不具合のリスクをできる限り排除することで、クライアントやエンドユーザーの満足度や自社への信頼を高めることができます。
ソフトウェアテストの7原則
ソフトウェアテストには、担当者が理解しておくべき7原則があります。この7原則はソフトウェアテスト技術者の国際的な資格認定を行っているISTQB(International Software Testing Qualifications Board)が定めるもので、テスト技術者資格制度のシラバスにも示されています(※)。
ここからはソフトウェアテストの7原則がどのようなものなのかを見ていきましょう。
※参考:ISTQB.「テスト技術者資格制度 Foundation Level シラバス 」.https://jstqb.jp/dl/JSTQB-SyllabusFoundation_Version2018V31.J03.pdf ,(参照 2024-09-10).
1.テストは欠陥があることは示せるが、欠陥がないことは示せない
ソフトウェアテストを実行すると、ソフトウェアに欠陥があることは示せます。しかしテストで欠陥が見つからなかったとしても、欠陥がないことは証明できないため、テストで見つけ切れなかった欠陥が隠れているかもしれません。
テストを行わなかった範囲で不具合がある場合もあれば、たまたま不具合が発生しない場合もあります。「念入りにテストを行っても不具合は起こる可能性がある」と、常に頭に入れておく必要があるでしょう。
2.全数テストは不可能
ソフトウェアで実行できる処理パターンと(入力と事前条件の組み合わせ)は膨大です。実現可能な全ての処理パターンのテストを行うことは「全数テスト」と呼ばれますが、ソフトウェアテストで全数テストを行うことは現実的に不可能とされています。
小規模なソフトウェアであれば全数テストが可能なケースもありますが、大規模なソフトウェアの場合、ソフトウェアの性質を元に起こりうるリスクを検討し、優先順位を付けて重要度の高いテストに集中するのが原則です。
3.早期テストで時間とコストを節約
開発が進めば進むほど、見つかった不具合が影響を及ぼす範囲も広くなるため、修正には時間もコストもかかってしまいます。時間とコストを節約し、効率良くソフトウェア開発を進めるには、開発の早い段階でテストを実施し、その都度不具合の修正を行うことが大切です。
4.欠陥の偏在
ソフトウェアに欠陥がある際、ソフトウェア全体に均等に発生するのではなく、特定のモジュールに集中しているケースがほとんどです。
効率良くソフトウェアテストを実施するためには、その都度テスト結果を分析して、欠陥が集中しているモジュールがないかを確かめましょう。多くの場合、欠陥は特定の機能や特定の担当者に集中していると言われています。欠陥が多発している箇所を予測して、重点的テストを行うべき箇所を絞り込むことが大切です。
5.殺虫剤のパラドックス
殺虫剤のパラドックスとは、同じ殺虫剤を使用し続けることで、ターゲットとなる害虫が耐性を付けてしまうという意味です。
ソフトウェアテストも同様で、同じテストを繰り返しているとそのテストでは次第に新しい不具合が見つけられなくなってしまいます。殺虫剤のパラドックスを回避するためには、テストとテスト結果を定期的に見直しつつ、テスト観点の角度を変えたり段階的に性質の異なるテストを実施したりすることが大切です。
6.テストは状況次第
条件や状況、ソフトウェアの性質によって最適なテストの方法は変わってきます。
例えば、金融系アプリケーションとスマートフォンゲームでは、求められる機能や要件などは大きく異なります。どのソフトウェアにも万能なテストは存在しないため、ソフトウェアの性質を考慮して、適切なテストケースやテスト手法を選定することが大切です。
7.「バグゼロ」の落とし穴
テストを実施して不具合を徹底的に修正して、「バグ(不具合)」がゼロの状態になったとしても、システムに求められる機能が正常に動作しなかったり、操作性や処理速度などが低下してしまったりすれば意味がありません。
ソフトウェアテストを実施する目的は、不具合がないことを証明することではなく、品質を担保することです。「バグゼロ=高品質なソフトウェア」ではないことは、しっかりと頭に入れておきましょう。
ソフトウェアの品質要件とは?
ソフトウェアテストは製品の品質を担保するために行うものですが、製品の性質やクライアントの要求、エンドユーザーのニーズなどによって品質要件は異なります。
そこでソフトウェアの品質評価に一定の基準を設けるために、ソフトウェアとシステムの評価基準として定められたのが、国際規格の「ISO/IEC 25010:20118」です。ISO/IEC 25010:20118は、品質モデルを以下の8つに分類しています。
品質モデル | 概要 |
機能適合性 | 搭載された機能がどの程度ニーズを満たしているか |
性能効率性 | システムを実行した際、どの程度の効率でどの程度の性能が発揮されるか |
互換性 | 他の製品やシステムと連携し、正常に機能や情報を共有できるか |
使用性 | ユーザーにとって使いやすい製品か |
信頼性 | エラーや障害を発生せずに安定した動作が可能か |
セキュリティ | ソフトウェアが脅威からデータやシステムを安全に保護できるか |
保守性 | 保守作業がスムーズに行えるか |
移植性 | 他のハードウェアなどへの移植ができるか |
求められる品質要件は製品によっても変わってきますが、上記の品質モデルを一つの基準として覚えておきましょう。
品質確認のためのソフトウェアテストの例
品質確認のために行われるソフトウェアテストの一例をご紹介します。
機能テスト
機能テストとは、クライアントが求める機能を要件・仕様通りに搭載しているかを確認するテストです。
いくら高品質のソフトウェアを開発できたとしても、クライアントが期待する要件や仕様を満たしていなければ意味がありません。機能テストは要件定義書や仕様書などと照らし合わせながら、機能面を細かくチェックします。また機能だけでなく、仕様通りのUIになっているかも確認します。
性能テスト
性能テストは、ユーザーが快適に使える処理能力や応答速度かどうかを検証するテストです。
いくら求められる機能を搭載していても、反応が遅ければエンドユーザーの満足度が下がってしまいます。そのため性能テストでは、ストレスなくソフトウェアを使用できるかに重点を置いて検証を行います。
エンドユーザーの視点に立ってテストを行う必要があるので、実際の使用環境を想定した状態で行うことが性能テストの原則です。
負荷テスト
負荷テストはソフトウェアが耐えうる負荷の限界値を測定するテストです。
ソフトウェアは常に同じ負荷で動作するわけではありません。負荷テストでは、アクセスを集中させたり膨大なデータを処理させたりして、ソフトウェアに高い負荷をかけて、動作状況を検証します。処理能力を落とさずに動作する限界値を把握することで、最大負荷を明確にすることが可能です。
ユーザビリティテスト
ユーザビリティテストは、操作性やUI・UXを検証するテストです。
機能性や性能が高いソフトウェアだったとしても、使い勝手が悪ければ高評価を得ることはできません。ユーザビリティテストではエンドユーザー視点に立って、ソフトウェアが操作しやすいか、直感的に操作できるか、視認性に優れているかなどを確認します。
実際にエンドユーザーにソフトウェアを使用してもらい、フィードバックから課題を見つけて、よりユーザーの満足度を高められるように改善を行うためのテストです。
セキュリティテスト
セキュリティテストは、ソフトウェアのセキュリティ性を検証し、脆弱性を発見するために行うテストです。
インターネット上にはさまざまな脅威が潜んでおり、ソフトウェアがサイバー攻撃を受けて大きな損害が出てしまった事例も少なくありません。セキュリティテストでは、実際に起こり得るサイバー攻撃を想定したテストを実施し、ソフトウェアに搭載されているセキュリティ機能が正常に動作するかや、どこに脆弱性があるかを検証します。
回帰テスト
回帰テストはソフトウェア開発中の修正・変更によって不具合が発生しないかを確かめるテストです。
ここまで解説したテストを実施して不具合が見つかった場合、ソフトウェアを修正したり変更を加えたりすることになります。すると修正を行った不具合が解決しても、他の部分に影響が出てしまって、別の不具合が発生してしまうケースも少なくありません。そこで回帰テストを行って、他の部分に影響が出ていないかを検証します。
ただし修正・変更を行うたびに回帰テストを行うのは現実的ではないため、実施範囲や優先度を検討した上で、適切なタイミングで行うことが大切です。
ソフトウェアテストのフェーズ別分類
ソフトウェアテストはフェーズごとに異なるアプローチを行います。フェーズ別に実施すべきテスト分類を見ていきましょう。
単体テスト
単体テストは開発初期段階で行うテストです。
モジュール単位やプログラム単位で一つずつ単体でテストを実施し、それぞれのモジュールやプログラムが正常に動作するかを確かめます。
結合テスト
結合テストは開発の中盤から終盤にかけて行われるテストです。
単体テストをクリアしたモジュールやプログラムを組み合わせて構築し、正常に動作するかを確認します。
システムテスト
システムテストは開発の終盤に行われるテストです。
全てのモジュールやプログラムを構築し、ハードウェアと組み合わせてシステム全体が正常に動作するかを確認します。またクライアントが求める要件や仕様に準じているかを確認することも、システムテストの重要な目的です。
受入れテスト
受入れテストは、システムテストが問題なく完了した後、クライアント側で行うテストのことです。
クライアントが本番環境を想定してテストを実施し、求めていた通りにソフトウェアに機能が搭載され、正常に動作するかを確認します。
ソフトウェアテストの方法
ソフトウェアテストの方法は大きく「ホワイトボックステスト」と「ブラックボックステスト」に分けられます。それぞれがどのようなテストなのかを見ていきましょう。
ホワイトボックステスト
ホワイトボックステストは構造テストとも呼ばれ、ソフトウェアの内部構造に着目して実施するテスト方法です。
エラーやセキュリティの脆弱性を確認するために、プログラムのコードを一つずつ確認します。テストを行う担当者には、プログラミングに関する専門知識が必要です。
構造上の問題を理論的に分析できるため、不具合を発見しやすいのがホワイトボックステストの特徴です。また実際のソフトウェアでは設定できないイレギュラーな状況を作り出して検証することもできるので、想定していない事象が発生した際の対応策の検討にも役立ちます。
ただしホワイトボックステストでは、ソフトウェアが要件や仕様に準じているかや、データに不具合がないか、マルチタスクや割り込みによって不具合が発生しないか、操作性が十分かなどは確認できません。
ブラックボックステスト
ブラックボックステストはソフトウェアの内部構造には着目せず、ユーザーの視点に立ってソフトウェアが正常に動作するかを確認するテスト方法です。システム内部を中身の見えないブラックボックスに見立てたことから、この名前が付けられています。
構造に関係なく、入力した情報に対して期待通りにソフトウェアが動作するかを確かめます。テストを行う担当者にプログラミングの専門知識は不要で、ソフトウェアテストに関する知識があればテストの実行が可能です。ホワイトボックステストでは検証できない機能性や使用性の高さも評価できます。
ブラックボックステストの代表的な技法は以下の通りです。
- 同値分割
- 境界値分析
- デシジョンテーブルテスト
ただし搭載している全機能や想定される全ての条件に対して、ブラックボックステストを行うことは難しいです。また動作的には問題がなくても構造に問題があるケースは少なくなく、万が一構造上の不具合に気付かずにリリースしてしまうと、リリース後に不具合が見つかってしまうこともあります。
ソフトウェアテストの作業手順
ソフトウェアテストの作業手順は以下の通りです。
- テスト計画:テストを実施する目的や定義、テスト対象、手段・方法、テスト環境、担当者、スケジュールなどを決め、どのような方針・方向性でテストを実施するのかを定めます。テスト全体の計画とテストごとの計画を立てる必要があります。
- テスト設計:どのようにテストを実施していくのか具体的に決めていきます。テストに使用するインプット情報を入手し、テスト範囲を決定して、テストケースを作成します。
- テスト準備:実行するテストの優先順位を決定し、テストに必要な環境を整え、テストごとに手順や必要なツールを確認します。
- テスト実行:テストを開始します。
- テスト報告:実行したテストで得られた結果や実施環境、発見された不具合などをまとめて、適切な修正を検討します。不具合を修正したら、再度テストを実施して、修正による不具合が発生していないかを確認します。
ソフトウェアテストに要する期間
ソフトウェアテストに要する期間は、開発する製品によっても異なるため、一概には言えません。
一般的にウォーターフォール開発の場合、結合テスト・システムテスト・受入れテストにかける時間は、システム開発にかかった時間の1/3程度とされています。ウォーターフォール開発とは、要件定義からリリースまで段階的に実施する開発方法です。クライアントから求められる品質要件が高ければ、テストにかかる期間がさらに長期間におよんでしまうこともあります。ただし納期が厳しい場合、逆にテスト期間を短縮しなければならないケースもあるでしょう。
短期間で計画・設計・実装・テストを繰り返して行うアジャイル開発の場合は、ソフトウェアテストに要する期間も数日から数カ月程度と短いことが多いです。開発自体に年単位の時間がかかる大規模なソフトウェア開発の場合は、数カ月から1年程度の期間がかかることもあります。
ソフトウェアテストでよくある課題
ソフトウェアテストで多くの企業が抱える課題は、人材の確保です。
ご紹介した通り、不具合を発見し修正に活かすソフトウェアテストは、クライアントやエンドユーザーの満足度を高めるために必要不可欠な開発工程です。しかし専門知識が求められる複雑な作業を行わなければならない上に、無限に工数をかけられるわけではありません。
限られた時間で正確なテストを行うには、高度な専門知識を持ち、効率良くテストが実施できる人材が必要です。しかしソフトウェア開発に必要な知識と、テストに必要な知識は性質が異なるため、自社でテストに関する知識を持った人材が確保できないケースは少なくありません。
また社内でテストで求められる高度な知識と作業効率の良さを持ち合わせた人材がいたとしても、その人材をテストに配置してしまうと、開発作業に遅れが出てしまう可能性もあるでしょう。
ソフトウェアテストに課題があれば外注がおすすめ
ソフトウェアテストは、開発したソフトウェアが正常に動作するかを確認し、不具合を発生させないために欠かせないテストです。ソフトウェアをリリースして不具合が出てしまうと、クライアントやエンドユーザーからの信用を失い、自社のビジネスにも影響が出てしまう恐れがあります。高品質のソフトウェアを提供するためには、各フェーズごとに必要なソフトウェアテストを重ねることが欠かせません。
しかしソフトウェアテストを実施するための人材が確保できず、頭を抱えている企業も多いのではないでしょうか。人材の確保に課題を抱えているのなら、テスト工程を外注するのも一つの方法です。ソフトウェアテストを外注すれば、自社のリソースを開発作業に当てられるため、より効率的にソフトウェア開発が進められます。
こちらの記事ではソフトウェアテストを行っているおすすめの専門会社をご紹介しています。各専門会社の特徴や得意分野なども比較してご紹介しているので、ソフトウェアテストに課題を抱えている方は、ぜひ参考にしてみてください。
おすすめのシステムテスト企業一覧
scroll →
会社名 | 特徴 | 得意分野 | 品質 | 費用 |
---|---|---|---|---|
SOLIZE株式会社 |
|
ソフトウェア開発サービス、第三者検証サービス、国際規格コンサルティングサービス | ISTQBパートナープログラムGold Partnerの認定 ソフトウェア品質知識体系(SQuBOK)に沿った開発 |
要問い合わせ |
バルテス・モバイルテクノロジー株式会社 |
|
Web・モバイルアプリ開発、モバイルアプリのテスト・保守 | 要問い合わせ | 要問い合わせ |
株式会社メリテック |
|
業務システム、WEBシステム、組み込みシステム開発 | ISO9001、ISO/IEC 27001、ISO 13485:2016、ISO 22301:2019を取得 | 要問い合わせ |
株式会社AGEST |
|
・テスト設計/実施のアウトソース ・多端末テスト ・脆弱性診断 ・アジャイルテスト ・テスト自動化導入支援 |
ISTQBのパートナープログラムにおいて最上位となるGlobal Partnerを取得 | 要問い合わせ |
株式会社ユー・アイ・エス |
|
Webシステム、業務システム、モバイルアプリ | 要問い合わせ | 要問い合わせ |
Bee Tech Asia株式会社 |
|
システム開発、WEB開発、アプリ開発、ベトナム進出支援 | 要問い合わせ | 要問い合わせ |
株式会社ブレーンネット |
|
システム開発、インフラサービス、移動体通信、エンジニア派遣・人材紹介、技術研修 | 要問い合わせ | 要問い合わせ |
株式会社SHIFT |
|
ソフトウェアテスト・品質保証、セキュリティ、DX、UI/UX、カスタマーサクセス | SHIFT独自の品質保証標準(SQF) | 要問い合わせ |
バルテス株式会社 |
|
Webサイト、モバイルアプリ、業務システム、家電・AV機器・OA機器、デジタル放送、金融・保険、開発SIer、アジャイル開発など | ISO/IEC 27001認証、JSTQB取得率が92%(入社2年目以降) | 要問い合わせ |
株式会社システナ |
|
移動体無線通信・基地局及びコアネットワーク検証、決済端末品質検証、フィールド試験、IoTデバイス検証、スマートデバイス・アプリケーション検証、Webアプリケーション検証、品質管理コンサルティング | 要問い合わせ | 要問い合わせ |
株式会社デジタルハーツ |
|
ゲームデバック | 要問い合わせ | 要問い合わせ |
テクバン株式会社 |
|
システムインテグレーション、ITプラットフォーム、セキュリティ、ビジネスアプリケーション、ビジネスアウトソーシング、ソフトウェアテスト | 要問い合わせ | 要問い合わせ |
株式会社ヴェス |
|
ソフトウェア・Web検証、組込み検証、その他検証・教育サービス | IVEC最高位のプラチナパートナー、ISTQBのゴールドパートナーに認定 | 要問い合わせ |
Sky株式会社 |
|
自社パッケージ商品開発・販売、ソフトウェア開発・評価・検証 | JSTQB保有者470名以上 | 要問い合わせ |
株式会社ベリサーブ |
|
品質向上、効率化、検証支援、セキュリティ対策、分野特化型サービス、テスト支援ツール | 要問い合わせ | 要問い合わせ |
株式会社プラスナレッジ |
|
ソフトウェア開発、Web・モバイル・アプリケーション評価、車載系ソフトウェア評価、品質コンサルティング、ニアショア事業 | 要問い合わせ | 要問い合わせ |
株式会社ウェブレッジ |
|
サービス品質検証・システム品質検証 | 標準テストプロセス(ISO-29119)を採用 ISTQB Platinum Partner・IVEC Silver Partner認定 |
要問い合わせ |