Introduction
ソフトウェアテストとは何なのか、どのようなテストがあるのかなど、疑問に思う方も多いでしょう。ソフトウェアテストは、開発に比べて難易度が低い作業なのではと考える方もいるかもしれません。
しかし、品質を保ちつつテストの作業効率をあげるためには、テストの計画・設計に多くの知識や経験が必要となりますので、むしろ難易度の高い工程となることも多いです。
この記事では、ソフトウェアテストに関するさまざまな疑問にお答えします。ソフトウェアテストについて知りたい、外注先選びの際にどのようなことに気をつければよいのか気になる方などは、ぜひ参考にしてみてください。
目次
Q1.ソフトウェアテストとは?
ソフトウェアテストとは、開発したソフトウェアが要件を満たしているか、設計どおりに動作するかなどをテストすることです。
どれだけ優秀な開発者がソフトウェアを開発したとしても、機能確認や動作確認、性能確認をしないまま、市場に出回ることはほとんどありません。テスト工程で品質保証を行うことで、リリース後にトラブルやインシデントの発生を防ぐ必要があるのです。
関連サービスについて
Q2.ソフトウェアテストを行う目的は?
開発したソフトウェアの不具合をリリース前に発見して対処するために、ソフトウェアテストを行います。仕様どおり動作しない、動作速度が遅い、使い勝手が悪いなどの不具合を見つけるために、ソフトウェアテストは重要な意味をもっています。
ソフトウェアテストについてはこちらもご覧ください。
>>ソフトウェアテストとは?種類や目的、重要な7原則を紹介のページへ
Q3.なぜソフトウェアテストが重要視されているの?
ソフトウェアテストをしないまま製品が市場に出回ると、ソフトウェアの誤動作が起こる、使い勝手が悪いなど、ユーザーに迷惑がかかる可能性もあります。ソフトウェアテストは、バグや欠陥をリリース前につぶして、ソフトウェアの信頼性を高めるために重要な工程です。
SHIFTをご利用いただいたお客様の声はこちらをご覧ください。
>>導入事例ページへ
Q4.ソフトウェアテストが誕生した経緯、歴史は?
ソフトウェアテストは、ソフトウェア開発とともに誕生しました。1948年に、イギリスのマンチェスター大学のコンピューター科学者トム・キルバーンが、世界ではじめてソフトウェアを作成したといわれています。当時は、機械語命令を用いて計算するプログラムで、問題が見つかるたびにデバッグを行うテスト方法が主流でした。
その後、1980年代になると画面をもつアプリケーションが発達し、実際にユーザーが使うようにアプリケーションテストが行えるようになります。ここから現在のように、品質保証プロセスが確立されたテスト方法に進化していきます。
Q5.ソフトウェアテストの7原則とは?
ソフトウェアテストの7原則は、JSTQBの『テスト技術者資格制度 Foundation Level シラバス Version 2018V3.1.J03』によると、次のように定義されています。
ソフトウェアテストの7原則
・テストは欠陥があることは示せるが、欠陥がないことは示せない
・全数テストは不可能
・早期テストで時間とコストを節約
・欠陥の偏在
・殺虫剤のパラドックスにご用心
・テストは状況次第
・不具合ゼロの落とし穴
この7原則を正しく理解すれば「テストを確実に行えば不具合がなくなる」「全数テストを行うべき」などの間違いに気づけるでしょう。
ソフトウェアテストの7原則についてはこちらもご覧ください。
>>ソフトウェアテストの7原則とは?正確なテストを行うために必要な考え方も解説のページへ
Q6.ソフトウェアテストにはどんな種類がある?
ソフトウェアテストといっても、さまざまな種類のテストがあります。さまざまな切り口や観点が存在しますが、それらを正しく把握することで、必要なテストは何かを理解できるでしょう。
ここでは、以下4種類のソフトウェアテストの分類方法をご紹介します。
品質によるソフトウェアテストの分類
ソフトウェアの品質が担保されていることを確認するのが、ソフトウェアテストです。「ISO/IEC 25010:2011」という国際規格では「機能適合性」「性能効率性」「互換性」「使用性」「信頼性」「セキュリティ」「保守性」「移植性」という8つの品質特性に分類しています。
ソフトウェアの機能がユーザーのニーズを満たしているか、レスポンス速度などの性能が十分かなど、さまざまな品質が定義されていることがわかります。機能が正しく実装されているという観点だけではなく、ほかのシステムとの互換性や信頼性、セキュリティ面などについてもテストが必要です。
これらの品質特性について確認するために、以下のようなテストが行われます。
・機能テスト
・性能テスト
・互換性テスト
・ユーザビリティテスト
・信頼性テスト
・セキュリティテスト
プロセスによるソフトウェアテストの分類
ソフトウェアテストは、計画から実行まで、以下のようなプロセスを経て行われます。
・テスト計画:テストの対象・やり方・役割分担の決定、準備対象の洗い出し、スケジュール・管理方針の決定
・テスト設計:インプット情報の入手・確認、テスト設計方針の決定、テストケースの作成
・テスト実行:テスト環境・テストデータの準備、実行手順の確認、ツール準備、スケジュール作成、テスト実行、結果の確認・保管
テスト工程では、ただテストを実行するだけではなくプロセスを詳細化して、計画段階から詳細な検討や準備を行う必要があることがわかるでしょう。
テストフェーズによるソフトウェアテストの分類
一般的なウォーターフォール型開発の場合には、開発フェーズごとにその内容を確認するテストフェーズが対応づけられており、以下のようなテストが行われます。
開発の流れ | 順番 | 開発フェーズ | テストフェーズ | 順番 | テストの流れ |
↓ | 1 | 要件分析 | 受け入れテスト | 8 | ↑ |
↓ | 2 | 要件定義 | システムテスト | 7 | ↑ |
↓ | 3 | 基本設計 | 結合テスト | 6 | ↑ |
↓ | 4 | 詳細設計 | 単体テスト | 5 | ↑ |
単体テストとは、プログラムの最小単位のコンポーネントが正しく動作するかを確認し、詳細設計の内容どおりかをテストするものです。結合テストでは、コンポーネントを組みあわせた結果正しく動作するかを確認し、基本設計の内容どおりかをテストします。システムテストは、すべての機能がそろった状態でテストし、受け入れテストは実際に業務で使用する本番環境でテストを行います。
これらのテストは、ただ繰り返し行っているのではなく、テストフェーズごとに確認対象や確認観点が異なるため、どれも重要なテストです。
技法による分類
テストの技法によって、以下の2種類のテストに分類することもあります。
・ホワイトボックステスト
ソフトウェアの内部構造に着目し、設計どおりに動作するかを確認するテストです。上記のテストレベルによる分類において、単体テスト、結合テストで行われることが多いです。
・ブラックボックステスト
ソフトウェアの外部仕様どおりに、動作するかを確認するテストです。内部構造は意識せず、ユーザー視点で仕様どおりに動くことを確認します。上記のテストレベルによる分類において、結合テスト、システムテスト、受け入れテストで行われることが多いです。
関連サービスについて
Q7.ソフトウェアテストの作業の流れは?
ソフトウェアテストは、計画→設計→実行の流れで作業が行われます。
計画時には役割分担やスケジュール、管理方法などを決め、設計時にテスト方針を決めてテストケースの作成などを行います。その後、テスト環境やテストデータ、手順、ツールなどを準備して、テストを実行するという流れです。
このように、テストを行うためには、計画から実行フェーズまでやるべきことが数多くあるのです。
Q8.ソフトウェアテストの作業にかかる期間は?
システムの内容によっても異なりますが、平均的なウォーターフォール開発では、結合テスト、システムテスト、受け入れテストに、システム開発期間の3分の1くらいの期間をかけることが多いでしょう。品質の要求が高ければさらに時間をかけることもありますし、納期の要求が高ければ短縮することもあります。
アジャイル開発のように短いスパンの開発なら、数日から数ヶ月程度で終わることもあります。一方、1年から数年かけて行われる大規模開発の場合には、数ヶ月から1年単位の期間が必要です。
Q9.ソフトウェアテストを効率化する方法はある?
ソフトウェアテストを効率化する方法は、数多く存在します。
たとえば、テストケースの組みあわせによっては、テスト件数が膨大な数になることがありますが、直交表などを用いて合理的に件数を減らすことが行われています。また、テスト支援ツールを導入してテストの管理を自動化できれば、テストの付帯作業を大幅に効率化できます。ほかにも、テスト要員の配置の見直しや、作業フローの改善などを行って効率化することもあります。
ただし、テスト作業の効率化を行った結果、テスト品質を落とすことは許されません。効率化を行う際には、テスト品質を保ちながら、どうすれば無駄な作業を減らせるかを考えなければならないのです。
Q10.ソフトウェアテスト実施にあたっての課題とは?
ソフトウェアテストは、リリース前の最後の砦ともいわれる、非常に重要な工程です。ここでバグや欠陥を見逃してしまえば、世のなかに出てしまうからです。しかし、ソフトウェアテストは、非常にむずかしい作業にもかかわらず、優秀なテスト担当者が不足しやすいという課題があります。
ソフトウェアテストは、やろうと思えばいくらでもテスト件数を増やせますが、無限にテスト期間をとれるわけではありません。そのため、限られた期間とリソースのなかで、バグや欠陥を見つけるための効果の高いテストを行う必要があります。さらに、近年はソフトウェアを利用できるデバイスが増えており、スマホやタブレットなど、多くのデバイスに対応したテストも行わなければなりません。
品質の高いテストを行えるだけでなく、同時にテスト作業の効率化を行える高いスキルをもったテスト担当者が求められています。
Q11.ソフトウェアテストの外注先の選び方は?
ソフトウェアテストを自社で対応するのがむずかしい場合は、外注する必要があります。外注先を選ぶ際には、どのようなことに気をつければよいのでしょうか。外注先を選ぶ際のポイントは、以下のとおりです。
<ソフトウェアテストの外注先を選ぶ際のポイント>
・過去の実績の豊富さ
・担当者のスキルレベル
・計画段階から設計、実行まで対応可能か
・対応できるテスト内容のバリエーション
・テストの自動化が可能か
・アフターフォローが充実しているか
ソフトウェアテストは非常に重要な工程なので、できるだけ優秀な外注先を見つけたいものです。そのため、外注先の実績や担当者のスキルレベルなどを比較して、少しでも優秀な外注先を見つける必要があります。また、対応できるテスト内容の豊富さや、テスト自動化ができるかなども重要で、アフターフォローが手厚いところなら安心できるでしょう。
さまざまなポイントを比較、検討して、少しでも優秀で自社にあった外注先を見つけてみてください。
関連サービスについて
Q12.ソフトウェアテストを外注した場合のチェック方法は?
ソフトウェアテストを他社に外注した場合、どのようなチェックを行えばよいのでしょうか?
<ソフトウェアテストを外注した場合のチェック方法>
・テスト対象や必要な環境などを正しく理解しているか
・テスト計画は十分検討されているか
・テストの方向性のすりあわせはできているか
・テスト内容に過不足がないか
・テストの確認方法に問題がないか
・上記の内容を必要に応じて確認できるドキュメントや体制が整っているか
上記のような内容について確認できる外注先に、テストを依頼することをおすすめします。
SHIFTのソフトウェアテスト ・品質保証サービスについて
SHIFTでは、開発プロジェクトの上流工程から、下流工程までの品質保証サービスを行っています。
テスト工程だけでなく、開発フェーズの企画、要件定義、システム設計の段階からの品質コンサルティング・品質PMOの対応も可能です。テスト工程では、ソフトウェアテスト・第三者検証、テスト自動化、多端末テスト、負荷テストなども対応しています。
金融、自動車、ITサービス、人材サービス、エンタメ、建築・不動産、エネルギーなど、幅広い業界の企業様にご導入いただいています。豊富な導入実績やナレッジを保有しており、テストエンジニアの層も厚いため、高品質で効率のよいテストを実施することが可能です。
ソフトウェアテストの外注先をお探しの際には、SHIFTにお気軽にお問い合わせください。
関連サービスについて
ソフトウェアテストを外注すべき5つの理由とは!?
あらゆる企業において、DXの推進が喫緊の課題となるなか、その中核を担うソフトウェア開発の市場は16兆円を超える規模となっています。
さらに、5GやAI、IoTなど、新たな技術トレンドが次々と発生していることから、同市場は今後もますます拡大していくと予想されます。
その一方、開発の現場においては、人材や予算の制約といった要因から、リリースするソフトウェアの品質面に課題を感じている企業は少なくありません。
具体的には「リリース後に不具合が多発する」「設計・開発に注力するあまり、エンジニアの品質に対しての意識が低い」といったものをあげることができます。
こうした課題を解消し、ソフトウェアの品質を向上するため、最近ではソフトウェアテストを外注する企業が増えつつあります。
そこで本資料では、いままさにソフトウェアテストを外注すべき5つの理由について、詳しく解説していきます。
あらゆる企業において、DXの推進が喫緊の課題となるなか、その中核を担うソフトウェア開発の市場は16兆円を超える規模となっています。
さらに、5GやAI、IoTなど、新たな技術トレンドが次々と発生していることから、同市場は今後もますます拡大していくと予想されます。
その一方、開発の現場においては、人材や予算の制約といった要因から、リリースするソフトウェアの品質面に課題を感じている企業は少なくありません。
具体的には「リリース後に不具合が多発する」「設計・開発に注力するあまり、エンジニアの品質に対しての意識が低い」といったものをあげることができます。
こうした課題を解消し、ソフトウェアの品質を向上するため、最近ではソフトウェアテストを外注する企業が増えつつあります。
そこで本資料では、いままさにソフトウェアテストを外注すべき5つの理由について、詳しく解説していきます。
まとめ
この記事では、ソフトウェアテストに関するさまざまな疑問にお答えしました。ソフトウェアテストとは何か、どのような目的があるのか、ソフトウェアテストにはどのような種類があるのかなどについて、ご理解いただけたと思います。
ソフトウェアテストは、開発作業とは違ったむずかしさがある工程なので、テストに関する知識や経験が豊富な担当者が必要です。ソフトウェアテストの要員が不足している、他社に外注したいという場合には、SHIFTのソフトウェアテスト・品質保証サービスをぜひご利用ください。
>>ソフトウェアテスト・第三者検証のページへ
>>導入事例ページへ
>>料金についてページへ
>>お問い合わせページへ
監修
株式会社SHIFT
永井 敏隆
大手IT会社にて、17年間ソフトウェア製品の開発に従事し、ソフトウェアエンジニアリングを深耕。SE支援部門に移り、システム開発の標準化を担当し、IPAのITスペシャリスト委員として活動。また100を超えるお客様の現場の支援を通して、品質向上活動の様々な側面を経験。その後、人材育成に従事し、4年に渡り開発者を技術とマインドの両面から指導。2019年、ヒンシツ大学の講師としてSHIFTに参画。
担当講座
・コンポーネントテスト講座
・テスト自動化実践講座
・DevOpsテスト入門講座
・テスト戦略講座
・設計品質ワークショップ
など多数
――――――――――
ヒンシツ大学とは、ソフトウェアの品質保証サービスを主力事業とする株式会社SHIFTが展開する教育専門機関です。
SHIFTが事業運営において培ったノウハウを言語化・体系化し、講座として提供しており、品質に対する意識の向上、さらには実践的な方法論の習得など、講座を通して、お客様の品質課題の解決を支援しています。
https://service.shiftinc.jp/softwaretest/hinshitsu-univ/
https://www.hinshitsu-univ.jp/
――――――――――