ナレッジ
第三者検証とは?必要性やメリット・デメリット、会社の選び方を解説

第三者検証は、ソフトウェア品質保証活動の一つの形態であり、ソフトウェアプロダクトを世の中に送り出すためにとても重要な意味を持ちます。
本記事では、第三者検証の意味から、その必要性、メリットとデメリット、そして最適な第三者検証企業(会社)の選び方に至るまで、包括的に解説していきます。
第三者検証とは?
ソフトウェア開発における第三者検証とは、「第三者」という言葉と、「検証」という言葉から成り立っています。
「第三者」は、実用日本語表現辞典では以下のように解説されています。
------------------
第三者(※1)
第三者(だいさんしゃ)とは、特定の事象や行為に直接関与していない人物を指す言葉である。この言葉は、主に法律やビジネスの文脈で使用され、直接関係のない人々を指す。例えば、契約の当事者ではない人、あるいは事件や事故の被害者や加害者ではない人を指す。また、裁判においては、訴訟当事者以外の人を指すこともある。 第三者は、客観的な視点を持つことが求められることが多い。そのため、第三者の意見や評価は、公平性や中立性を保つために重要な役割を果たす。
------------------
つまり、当事者ではない人を指す言葉になります。ソフトウェア開発の文脈で考えると、直接関与している人としては、「ソフトウェアを開発する人」、「ソフトウェアを利用する人」となり、そのどちらでもない人が第三者と成り得ます。
次に「検証」は、ISO9000(2015)では以下のように記載されています。
------------------
検証(verification)(※2)
客観的証拠を提示することによって,規定要求事項が満たされていることを確認すること。
------------------
つまり、第三者検証とは、当事者(ソフトウェア開発者やソフトウェア利用者)ではない、人がソフトウェアに対して、規定された要求事項が満たされているかどうかを確認することとなります。ここでは、人に焦点を当てて説明しましたが、第三者検証でいう第三者は、当事者とは異なる企業や組織を指す場合が多いです。
また、ソフトウェアテストの世界では、「検証(verification)」と「妥当性確認(validation)」(※3)の2つの視点が重要であるといわれますが、この第三者検証でいう「検証」では、「検証」と「妥当性確認」と区別せずにソフトウェアテストの活動全体を含めた意味で使う場合が多いようです。
検証と妥当性確認の違いについての詳細は、別の記事で解説したいと思います。
なお、この第三者検証ですが、海外では”Third party Testing”と英語表記されている場合もあるようです。
以降では、「第三者検証」を「ソフトウェア開発を行っている企業とは別の企業によって行われるテスト」として説明していきます。
第三者検証の必要性
なぜソフトウェア開発において、第三者検証が重要な意味を持つのでしょうか?
それは、ソフトウェアを作った人は、正しくソフトウェアテストを行うことが困難だからです。自分(たち)が作ったソフトウェアには、一定のバイアス(例えば、この部分にはソフトウェアの欠陥がないはずだ、この機能はこういう風に使うはずだといった先入観や偏見など)がかかってしまうためです。
もう一人の当事者であるソフトウェア利用者(いわゆるユーザー)はどうでしょうか?ユーザーによるソフトウェアのテストは重要です。ソフトウェアテストには、ユーザー受け入れテストというテストがあり、リリースする前に特定のユーザーに使ってもらってソフトウェアを評価してもらうことがあります。
ユーザーにも、一定のバイアス(例えば、自分はこういう使い方しかしないといった偏見など)がかかること、ソフトウェア内部の仕様は関心事ではないこと、そもそもリリース前にユーザーに十分なテストをしてもらうことが時間的に難しいことからユーザーだけのテストではソフトウェアの適切な品質を確保することは難しくなってしまいます。
そのため、先ほど例示したバイアスのかからない第三者がテストすることで、開発者でもユーザーでも見つけることが困難なソフトウェアの欠陥を見つけ出せる可能性が高まります。
自分が作成した資料を、自分で何度もチェックして、もう間違いはないだろうと思ったものが、他人がチェックすることにより意外なところで簡単に誤りが見つかってしまうのと同じようなことです。
このような理由から、第三者検証は世の中にソフトウェアプロダクトをリリースするために、重要な活動と成り得るのです。
なお、この第三者検証ですが、ソフトウェアテストの国際資格認定を行っているISTQBのシラバス(※4)では、テストの独立性として解説されています。その中では、テストには4段階の独立性のレベルが存在すると解説されています(図表1)。
独立性のレベル | テストとの関わり方 | 例 |
---|---|---|
独立性なし | 作成者がテストを行う | プログラムをコーディングした人がテストを行う |
ある程度の独立性あり | 作成者と同じチームの仲間がテストを行う | 実際にプログラムをコーディングした人ではないが、同じチームのメンバがテストを行う |
独立性が高い | 作成者のチーム外だが組織内のテスト担当者がテストを行う場合 | 同じ企業内のシステム開発部門とは異なる品質保証部門がテストを行う |
独立性がとても高い | 組織外のテスト担当者がテストを行う場合 | システム開発をしている企業とは別の企業がテストを行う |
図表1:テストの独立性
第三者検証をこの独立性のレベルで考えてみると、「独立性がとても高い」に当てはまると言えるでしょう。
ISTQBシラバスでは、独立性が高ければ高いほど良いといったものではなく、それぞれメリット、デメリットがあるため、複数の独立性のレベルでテスト全体を構成することが良いと解説されています。
第三者検証を実施するメリット・デメリット
第三者検証を活用することには、多くのメリットがある一方で、デメリットも存在します。
メリット
第三者検証を活用することで以下のようなメリットがあります。
テスト工程でのソフトウェア品質の向上
第三者検証を担う多くの技術者は、ソフトウェア開発者とは異なる経験、技術、観点を持っているため、開発者とは異なる種類の欠陥を検出できる可能性が高まります。第三者検証技術者によって検出された欠陥を修正することで、リリース前のソフトウェアの品質を確保することができます。
安心感の獲得
高い専門性を持つ第三者検証技術者によってテストされたソフトウェアは、欠陥が検出されて、修正されたということ以外にも、特定の条件下で欠陥が検出されなかったという品質の確信度合いが積み上げられることになります。このことは、ソフトウェアの品質が一定以上の水準にあることを示すことにつながり、開発組織も、ステークホルダも一定の安心感を持ってソフトウェアをリリースすることができるようになります。
ソフトウェア開発全体でのコスト削減
第三者検証を担う多くの技術者は、テストの経験が豊富で設計書や仕様書などのテストベースとソフトウェアの故障や欠陥との関係に関するたくさんのノウハウを保有しています。そのため、ソフトウェアを動かさずとも、欠陥が作り込まれやすい仕様書の記述を識別することができます。これにより、ソフトウェア開発のより早い段階で、テストベースの問題により発生し得る欠陥を未然に防ぐことでソフトウェア開発の後戻りを減らすことができ、開発全体でのコスト削減が期待できます。
特定のテスト環境の活用
第三者検証企業の中には、特定のテスト環境を用意している企業もあります。例えば、モバイルアプリケーションのテストを行うために、多数のメーカーやOSバージョンのスマートフォン、およびそれらに接続するアクセサリ類となるヘッドセットなどを保有していたり、スマートフォンをテストするための通信プロトコルシミュレーターや、車載ECUをテストするためのHiL(※5)シミュレーターなど特定ドメインのソフトウェアのシミュレーション環境を常時保有していたりする企業があります。開発プロジェクトでそれらの準備が難しい場合などは、専門の第三者検証企業に委託することでテスト環境準備のコストを削減することができます。
デメリット
次に第三者検証を活用することでのデメリットを解説します。
コストの増加
第三者検証を専門の企業に依頼すると、作業依頼コストが発生するため、自組織でテスト活動を行う場合と比較すると、単純な活動コストだけで見ると増加します。特に予算が限られている小規模なプロジェクトやスタートアップ企業にとっては、このコストは小さくないインパクトとなる場合もあるでしょう。ただし、これは第三者検証企業が行うテストと全く同じことを自組織の技術者が行えると仮定した場合の話であって、高い専門性を持つ第三者検証企業へ依頼できた場合は、自組織ではできないテストを行ってもらえることが期待できます。だからこそ、第三者検証を依頼する企業に対する評価が重要となります。
コミュニケーションの問題
第三者検証技術者は、文字通り第三者としてプロジェクトに参画するため、同じ組織の技術者がテストを行う場合に比べ、開発技術者のチームとコミュニケーションがうまく取れないなどのコミュニケーションの問題が発生するリスクがあります。また、第三者検証技術者によって識別されたソフトウェアの故障や欠陥の報告などを、上手に行わないとテストチームと開発チームの間に敵対関係が生まれてしまうリスクもあります。
開発者の品質に対する意識の低下
テストを第三者検証企業に依頼することで、開発者のソフトウェア品質に対する意識が薄れてしまうリスクがあります。これにより、ソフトウェア品質の問題を、第三者検証技術者や第三者検証企業のせいにしてしまい、適切な品質のソフトウェアの開発に支障をきたしてしまうおそれがあります。基本的に第三者検証技術者によるテストでは、欠陥を検出はしますがその対処は行わないため、開発者、第三者検証技術者間で正しい責務分担が重要になります。
第三者検証企業の選び方
第三者検証を委託する企業を選ぶ際には、その企業がテスト対象のソフトウェアを十分テストできる技術や経験を持っているか、採用しているソフトウェア開発プロセスモデルに対応可能であるかなどが重要になります。第三者検証企業を選定する際のポイントを解説します。
技術力とサービス可能なテストプロセス(※6)
同じ第三者検証という看板を掲げていても、技術力はさまざまだと考えたほうが良いでしょう。第三者検証企業の中には、事前に用意されているテスト手順に従い、誤らないようにテスト実行するという技術レベルの企業から、テスト戦略やテスト計画の立案、リスクやカバレッジを考慮した最適なテストケースの開発を行う技術を持った企業までさまざまです。第三者検証を委託する場合には、求めるテストプロセスと、期待する技術レベルを明らかにした上で、該当のテストプロセスに対する第三者検証企業のサービス提供可否と、その技術レベルを評価すると良いでしょう。
対象ドメインの経験
ソフトウェアを大きく分類すると、組込みソフトウェアやエンタープライズ(業務)ソフトウェア、Webサービスなどに分類され、さらに細かく分類すると、例えば組込みソフトウェアでも、車載系や医療系、家電系など業務ドメインに分類できます。それぞれの業務ドメインには、例えばソフトウェアに関する業界標準など一定の特徴があるため、対象ドメインのソフトウェアテストの経験は企業を選定する際の一つの基準に成り得ます。
ソフトウェア開発プロセスモデルへの適合
自組織が適用しているソフトウェア開発プロセスモデルに、第三者検証企業のテスト活動が適合可能かという点も企業を選定する上で重要となります。ソフトウェア開発モデルには、ウォーターフォールに代表されるシーケンシャル開発モデル、アジャイルに代表されるイテレーティブ開発モデルなどがあります。採用しているソフトウェア開発プロセスモデルに基づき、テスト活動のやり方も変わってくるため、開発プロセスモデルへの適応度合いや実績も確認すると良いでしょう。
得意なテストタイプ(※7)
第三者検証企業にも、より高度で専門的な技術を持つテストタイプがある場合があります。機能要件に適合していることをテストする「機能テスト」、ソフトウェアのセキュリティの側面をテストする「セキュリティテスト」、ユーザーの使いやすさをテストする「使用性テスト」など、ソフトウェアに求める品質の側面にマッチした専門技術を持つ企業を選定すると良いでしょう。また、それぞれの品質の側面ごとに異なる第三者検証企業を選択することもできます。
雑誌やWebサイトなどのメディアにて、大手の第三者検証企業の一覧やランキングなどが紹介されているものを見かけますが、それらは例えば売り上げ規模など特定の分析軸でリストされていることが多いことでしょう。そのため、上記で挙げたようなポイントを基に、自分たちのソフトウェア開発に合った委託先を選定することが重要になります。
第三者検証の未来と、その将来性
近未来という時間軸で捉えるならば、先に述べた第三者検証の必要性や、そのメリット/デメリットは大きくは変わらないと考えています。このため業務としての第三者は、これからも残り続けることでしょう。
ただし、事業ドメインに特化した検証ノウハウや、国際標準や法規に準じるためのテーラリングの必要性が増していくことは間違いありません。
エンタープライズシステム、組込みソフトウェアに関わらず、検証対象の大規模化や機能の高度化が進む中、AIをはじめとした新しい技術の適用により第三者検証に求められる専門性は高くなっています。
ですから、第三者検証の将来は明るいと言えますが、生き残ることができるのは 技術を洗練し続けることができる個人であり、その個が集合した組織であるといっても過言ではないでしょう。
第三者検証で品質向上を
ここまでに説明した通り、第三者検証の活用は品質の高いソフトウェアを開発するための有効な選択肢と成り得ます。一方で第三者検証を提供する企業のサービス内容は、技術力や適応範囲、専門性などによりテスト対象への適合度が異なるからこそ、コスト面も含めて適切な企業を選定することが成功のポイントとなります。
ベリサーブでは、常に技術者に対して数多くのテストプロジェクトで培ってきた高度で専門的な技術のトレーニングを行っています。また、全てのソフトウェアテストプロセスでサービスを展開しており、テストプロセスに限らず、より開発の上流プロセスでの品質活動も支援しています。事業ドメインにおいても自動車、医療、通信、情報家電、産業機器、ITサービス、Webサービス、アミューズメントなどさまざまな経験と実績を持っています。
特にテストプロセスにおいては、テストプロセスの国際標準であるISO/IEC/IEEE 29119をもとに独自に開発したプロセス標準を、対象の開発組織や開発プロセス、ソフトウェアの特性に応じてテーラリングして適用することで、お客様の開発プロセスにマッチしたテストサービスを提供しています。
テスト活動そのもののサービスの他にも、テスト活動やソフトウェア開発活動を効果的に支援する自社開発のツール群も提供しています。
■参照■
(※1)実用日本語表現辞典(https://www.weblio.jp/content/第三者)より引用。
(※2)JISQ9000(2015)より引用
(※3)ソフトウェア品質知識体系ガイド第3版では、検証を「正しく作れていることの確認」、妥当性確認を「正しいものを作れていることの確認」と説明しています。
(※4)「テスト技術者資格制度 Foundation Levelシラバス」(2023年12月時点ではVersion 2023V4.0.J01)。
(※5)JSTQB用語集 Version1では「ハードウェアインザループ(HiL):統合されたソフトウェアと実際のハードウェアを使用して、シミュレーションされた環境で実施する動的テスト。」と説明されています。
(※6)「テスト技術者資格制度 Foundation Levelシラバス 2023V4.0.J01」では、「相互に関連する活動のセット。テスト計画作業、テストモニタリングとコントロール、テスト分析、テスト設計、テスト実装、テスト実行、テスト完了といった活動から構成される。」と説明されています。
(※7)「テスト技術者資格制度 Foundation Levelシラバス 2023V4.0.J01」では、「コンポーネントやシステムのある特性に対応したテストの目的を基にテスト活動をまとめたもの。」と説明されています。特性には、例えばセキュリティや、ユーザビリティ、性能などがあります。
この記事は面白かったですか?
今後の改善の参考にさせていただきます!