ソフトウェアを開発する中で、テストがどれだけ重要なのかはあえて言う必要もないでしょう。テストされていないコードをリリースすることは、致命的な不具合を生み出す可能性があります。ソフトウェアだけでなく、工業製品などは常にテストを行い、品質を保証します。ソフトウェアについても同様に、品質や機能を保証するためにテストは必ず必要です。
本記事では、社内テストと第三者検証という観点からテストについて考えてみます。第三者検証と社内テストの違いやメリット、使い分ける方法を解説いたします。
社内テストとは?役割とメリット・デメリット
社内テストとは、ソフトウェアの開発者をはじめとして、社内の人員が行うテストになります。自社でテストを行うことで、自分たちのプロダクトに対する品質保証を行います。
社内テストのメリットは以下のようになります。
社内テストのメリット
・開発に関わった人たちがテストを行うため、意図を理解しやすい
・社内でテストを行うため、修正がしやすい
・テストの実施が容易で、コストが低い
逆に社内テストにはデメリットもいくつかあります。
社内テストのデメリット
・開発者がテストを行うため、視点が偏りがち
・テストの範囲が狭くなりやすい
・プロジェクトの進捗によってテストに割ける工数が増減する
この中で、特に問題になりやすいのはテスト工数の時間です。専門のチームを設けている場合においても、社内ではどうしても融通が利きやすい傾向があります。そのため、後工程になりやすいテスト工程は短縮されやすく、その中で何とかして品質を担保する流れになります。
また、開発者自身の前提知識によるテスト漏れも発生しやすいのが課題です。開発者は前提知識として、入力が想定される内容を把握しているため、異常な入力データに対するテストが抜けやすい傾向があります。しかし、不正な利用を行う人たちはそうした異常な入力を利用することが多く、セキュリティリスクの増加につながります。
第三者検証と社内テストの違い
一方で、第三者検証は社内テストとは異なり、外部の専門家が行うテストです。第三者検証のメリットは以下のようになります。
第三者検証のメリット
・社内の視点とは異なる視点からのテストが可能
・ソフトウェアの品質を客観的に評価できる
・テスト工数を確保しやすい
・ベンダーによっては業界や製品特性に応じたテスト観点を保有している
・前提知識のない、網羅的なテスト設計が行いやすい
第三者検証では、前提知識や社内での暗黙知がないため、より一般化したテストによる検証が可能です。そのため、社内テストでは見落としがちな不具合を発見できるでしょう。もちろん、常に第三者検証が良い訳でありません。たとえば以下のようなデメリットも存在します。
第三者検証のデメリット
・社内テストと比べてコストが高い
・複雑なワークフローに対するテストが難しい
・ピンポイントでのテストが難しい
システムを開発する中で、適切で網羅的なワークフローやデータフローが作られていないと、第三者によるテスト検証は難しいでしょう。そのため、システム開発の後工程で第三者検証に入ってもらうと、必要な情報を揃えるのに時間がかかってしまいます。
また、特定の機能だけをテストするのは難しいです。システムはモジュールが複雑に絡み合って構成されており、一部のモジュールだけを理解しても、品質は保証できません。そのため、第三者検証は全体を対象とした知識とテストが求められるでしょう。
社内テストと第三者検証を使い分けるためのポイント
社内テストと第三者検証の使い分けるためには、以下のようなポイントが挙げられます。
使い分けのポイント
・機能テストや結合テストや社内テストで行う
・セキュリティテストやパフォーマンステスト、受け入れテストの前段階でのテストは第三者検証で行う
システム開発であらかじめ仕様書やRFPを作成している場合、それらのドキュメントに合わせた第三者検証は可能です。第三者検証を通すことで、ユーザー企業の受け入れテスト前に不具合を発見し、修正できます。
機能テストなどで第三者検証を入れる場合には、テストコードについて十分な内容であるか、テストケースが網羅的であるかといった検証はできるでしょう。また、社内テストで見落としがちな不具合を発見するために第三者検証を入れるケースもあります。
前述の通り、第三者検証は社内テストと比べて工数やコストが大きくなります。そのため、CI/CDなどで日常的なテスト工程に組み込むのは難しいでしょう。システムテストや受け入れテストなど、プロジェクトにおけるテストレベルが変わる段階での第三者検証実施がお勧めです。
第三者検証の重要性とメリット
ユーザー企業への納品やSaaSでの提供にしても、外部の視点は重要です。自社の人員だけでは思い込みや暗黙知が入り込みやすく、思わぬ抜け漏れが発生します。第三者検証は、そのような抜け漏れを発見し、品質を向上させるための手段として有効です。
また、テストの専門家としての視点は、単にシステムが動けば良いというものではなく、ユーザーが求める品質を担保するための視点が加わります。さらに昨今のセキュリティインシデントにつながりやすい仕組みをあらかじめ防げ、不具合につながりやすい箇所を発見するのにも役立ちます。
第三者検証と社内テストの連携による効果
第三者検証と社内テストは、どちらかだけ行えば良いものではありません。両方を組み合わせてこそ、より良い結果を得られます。第三者検証で得られた知見を日々のテストに反映することで、プロダクトの品質向上につなげられます。より工数を減らしたテストを実現し、品質を担保する効率的なテストを実現できます。
また、第三者検証をより効率的に、品質高くするためには、日頃の社内テストが重要です。社内テストがまったく行われていない状態で第三者検証を行っても、不具合が多く見つかってしまって効率的とは言えません。社内テストが十分に行われている中で実施される第三者検証こそ、最も効果的なテスト戦略と言えるでしょう。
まとめ
「第三者検証と社内テストを使い分けるとメリットがあるよ」と題して、ご紹介してまいりました。今回は、社内テストと第三者検証の違い、メリット・デメリット、使い分ける方法にスポットを当てて解説しました。社内テストは社内の人員(主に開発者)が行うテストであり、第三者検証は外部の専門家が行うテストです。それぞれのメリットやデメリットを理解し、使い分けることで、より効果的なテストを実現できるでしょう。
バルテスはテスト専門企業として、ソフトウェアテスト支援やテスト自動化などを提供しています。ぜひバルテスの品質向上サービスを皆さんのプロダクト開発に活用し、品質向上に役立ててください。
当サイトでは、テスト技法を学びたい方、アジャイル開発やマイグレーションのテスト手法について知りたい方、テストアウトソーシングサービスに興味のある方へ、ダウンロード資料を多数ご用意しております。ぜひダウンロードいただき、資料をご活用ください。