公開:
第三者検証とテストアウトソーシング
![第三者検証とテストアウトソーシング](https://agest.co.jp/wp-content/uploads/2024/06/20180523_column_thumb_01.jpg)
更新:2024.06.13
実際の開発プロジェクトの現場では、開発からテストまでの実業務を自社の開発エンジニアで対応することはもちろん、外部の業者に委託するケースも多いのではないでしょうか。
しかし、開発担当と同じチームやメンバーがテストも実施する場合、第三者観点の不足などから必ずしも十分な品質が担保されないこともあります。
そこで、今回は「第三者検証の重要性とテストアウトソーシングの潮流」について解説したいと思います。
目次
テストの独立性
テストを実施する際、開発者が行ったり、またはプロジェクトに参画する別の担当者が行ったりと、プロジェクトの状況によってテスト実施者は変わってきます。
そこで疑問となるのが、「一体、テストは誰が行うことが望ましいのだろうか」ということです。
一般的には、実際にプログラムコードやドキュメントを作成した開発者とは異なる独立したテストチームがテストを実施することが推奨されています。その最大の理由として、テストは客観的な視点で行うことが望ましいと考えられているためです。開発者も人間である以上、必ず先入観を持っています。このため、テストにおいても開発者の主観に基づいて「こうあるべきだ」といった主観的な考えでチェックを進めると、想像もしていなかった不具合が残留する可能性があります。このような事態を防ぐために、開発者以外の独立した担当者がテストを行うことが推奨されています。
例えば、皆さんも、作文をされた際、下記のような経験をされたことはないでしょうか。
![](https://agest.co.jp/wp-content/uploads/2024/06/image-16.png)
このように、第三者にチェックしてもらうことで見つかる不具合は実は結構存在します。特に、構造が複雑な場合や、高い安全性および信頼性が要求されるシステムの場合は、開発者以外の担当者がテストを実施したほうが良いといえます。
独立した担当者でテストを行うメリット
- 先入観なく、客観的な見地から欠陥を発見できる
- エンドユーザー目線でテストを実施できる
- ソフトウェアの開発中に並行してテストを進められる
- 開発者はソフトウェアの品質向上に専念できる
第三者検証サービスとは
今までに、筆者も多くのシステム開発の現場においてコンサルタントとして関わっていましたが、多くの費用や人員、時間を投下したうえで、満を持してカットオーバーしたシステムだったにもかかわらず、エンドユーザーからは「アプリケーションが応答を停止する」「反応が遅い」「不明なエラーが発生する」「ユーザーインタフェースが使いにくい」といった品質に関する不満の声が上がったプロジェクトも多くありました。このような品質に関する問題は、多くの場合、以下のような理由で発生します。
(1) 要件定義フェーズで、エンドユーザーの要求を適切に引き出せないままソフトウェアが実装された
(2) テストフェーズで、単体テストや結合テストのプロセスばかりが重視され、エンドユーザー視点でのテストがおろそかになっていた
(1) に関する対策については本連載では割愛しますが、(2) の課題に対する解決策として近年注目されているのが「第三者検証サービス」です。
第三者検証サービスとは、先述した「テストの独立性」という考え方に基づき、ソフトウェアの開発者やシステム管理者以外の専門的なテスト知見を持った専業ベンダーが、第三者の視点から客観的に対象のソフトウェアの仕様やロジックを分析し、テストを代行するサービスのことです。
第三者検証サービスを行うメリット
- 開発チームは、コーディング、ドキュメント作成など、本来の担当業務に専念できる
- ユーザー目線に立った客観的な視点でテストを実施できる
- 経験豊富な専業のエンジニアがテストを実施するため、開発者が見落としがちな欠陥を発見できる
テスト工程を管理、実施する人的リソースや時間的な余裕が自社開発チーム内にない場合でも、第三者検証サービスを利用することで、システムカットオーバー後にプロダクトの欠陥が露呈するリスクを低減し、結果としてソフトウェアの安全性や品質を高めることができるのです。
テストアウトソーシングの潮流
品質確保に重要な役割を果たすシステムテストですが、最近ではその専門的な業務を外部の業者に委託する、いわゆる「テストアウトソーシング」が増えています。
自社内でシステムテストを行っている場合、不具合発生時に業務が滞ったり、発生した不具合に対応できる人材がいないなど、対応しきれなくなるケースも多く見受けられます。
このような状況に陥ることを防ぐためにも、テストアウトソースは有効な選択肢だといえます。
テストをアウトソースすることで、以下のようなメリットを享受できます。
- コスト削減および予算適用:プロジェクトごとにテストをアウトソーシングすることで、社内に人員を保持する必要性がなくなります。この方式だと人件費が予測しやすくなり、予算管理も明確になります。
- 幅広いスキルと経験:アウトソーシングをすることで、特定のテスト要件に対して最適なスキルセットを持つ専門家を見つけることが可能になります。これにより、最新のテスト戦略やツールなどに熟知した専門家を活用できます。
- 客観性:前述のテストの独立性の通り、第三者の観点からソフトウェアを確認することで、開発者が見落としがちな欠陥を発見できます。
- 不具合発生時に社内のリソースを割かない:社内の開発エンジニアは自分のタスクにに専念できます。
テストアウトソーシングにおけるリスク
しかし、テストアウトソーシングには以下のようなリスクも伴いますので注意が必要です。
- 情報セキュリティ:テストプロジェクトには業界の規定や法律に沿った情報セキュリティが適用されます。そのため、テスト業者と確認した上で、十分なセキュリティ対策をとる必要があります。
- コミュニケーション:社内外のチーム間のコミュニケーションは複雑になりがちです。明確かつ定期的なコミュニケーションをとることが、相互の理解と目線の一致を保つために役立ちます。
適切なテストベンダーを選べば、品質、コスト効率、スピードにおいて大きなメリットを得ることができます。業者選びは慎重に行い、長期間にわたり良好な関係を維持することが大切です。
テストベンダーの選び方
第三者検証サービスを提供しているテストベンダーは国内でも複数社あり、近年増加傾向にあります。私が所属している株式会社AGESTもその一社であり、ゲームソフト、Webサイト、クラウドサービス、スマートフォンアプリケーション、自動運転車など、さまざまなソフトウェアを対象とする第三者検証サービスを提供しています。
では、第三者検証サービスを利用する際、どのような点を意識してテストベンダーを選ぶべきでしょうか。私が考えるベンダー選定のポイントは以下の3点です。
(1)テストベンダーの特性
「第三者検証」と言っても、テストベンダーにより得意としているプロダクトや検証領域は異なります。そのため、テストベンダーの特性を見極めてアウトソーシングを検討することが好ましい選定方法です。
テストベンダーを選ぶ際の事例
![](https://agest.co.jp/wp-content/uploads/2024/06/image-18.png)
(2)テストの合理化
システムテストは、リリース前だけではなく、リリース後においても、バージョンアップ等が発生する度にリリース前と同様のテストを繰り返し実施する必要があり、実は、開発工程の中でも非常に工数やコストがかかるプロセスなのです。 そのため、機能テストの自動化や、テストスクリプトのデプロイの自動化など、テスト工程の効率化に関しても積極的にアイデアを提案するテストベンダーを選ぶことが好ましい選択と考えます。
(3)開発の振り返り
テストの成果物であるバグレポートには、次回の開発に生かすべきさまざまな情報が含まれています。そのため、テストを実施した結果、「誰が実装したどのコンポーネントやクラスにどのような欠陥が多く発見されたのか」また、「どの部分にセキュリティリスクやパフォーマンスリスクが集中していたのか」といったフィードバックまでを提供するテストベンダーを選ぶことが好ましい選択と考えます。このようなテスト結果のフィードバックは、今後の開発チームの体制構築や利用するプラットフォーム、フレームワーク、言語などを選択する際に役に立つことが多くあります。
以上の3点が、開発プロジェクトに最適なテストベンダーを選定する手がかりとなります。
まとめ
近年、AI(人工知能)、IoT(モノのインターネット)、ブロックチェーン(分散型台帳技術)といった、新たな技術の誕生により、私たちのビジネスや暮らしにおいて、ITやシステムが果たす役割は飛躍的に増え、ソフトウェアの品質を担保するためのテストの重要性はますます高まっております。
しかし、システムテストの在り方に「勝利の方程式」や「虎の巻」といったものは存在しません。そのため、ビジネス要件、インフラ、開発モデル、フレームワークなどの開発条件や、開発チームに与えられている人的、金銭的、時間的リソースを考慮した最適なテスト工程を組み立てて、実行する必要があります。