実際の開発プロジェクトの現場では、開発からテストまでの実業務を自社のエンジニアで対応することはもちろん、外部の業者に委託するケースも多いのではないでしょうか。
しかし、開発担当と同じチームやメンバーがテストも実施する場合、第三者観点の不足などから必ずしも十分な品質が担保されないこともあります。
そこで、今回は「第三者検証の重要性とテストアウトソーシングの潮流」について解説したいと思います。

テストの独立性

テストを実施する際、開発者が行ったり、またはプロジェクトに参画する別の担当者が行ったりと、プロジェクトの状況によってテスト実施者は変わってきます。

そこで疑問となるのが、「一体、テストは誰が行うことが望ましいのだろうか」ということです。
一般的には、実際にプログラムコードやドキュメントを作成した開発者とは異なる独立したテストチームがテストを実施することが推奨されています。その最大の理由として、テストは客観的な視点で行うことが望ましいと考えられているためです。開発者も人間である以上、必ず先入観を持っています。このため、テストにおいても開発者の主観に基づいて「こうあるべきだ」といった主観的な考えでチェックを進めると、想像もしていなかった不具合が残留する可能性があります。このような事態を防ぐために、開発者以外の独立した担当者がテストを行うことが推奨されています。

例えば、皆さんも、作文をされた際、下記のような経験をされたことはないでしょうか。

このように、第三者にチェックしてもらうことで見つかる不具合は実は結構存在します。特に、構造が複雑な場合や、高い安全性および信頼性が要求されるシステムの場合は、開発者以外の担当者がテストを実施したほうが良いといえます。

独立した担当者でテストを行うメリット

  • 先入観なく、客観的な見地から欠陥を発見できる
  • エンドユーザー目線でテストを実施できる
  • ソフトウェアの開発中に並行してテストを進められる
  • 開発者はソフトウェアの品質向上に専念できる

第三者検証サービスとは

今までに、筆者も多くのシステム開発の現場においてコンサルタントとして関わっていましたが、多くの費用や人員、時間を投下したうえで、満を辞してカットオーバーしたシステムだったにもかかわらず、エンドユーザーからは「アプリケーションが応答を停止する」「反応が遅い」「不明なエラーが発生する」「ユーザーインタフェースが使いにくい」といった品質に関する不満の声が上がったプロジェクトも多くありました。このような品質に関する問題は、多くの場合、以下のような理由で発生します。

  • (1)要件定義フェーズで、エンドユーザーの要求を適切に引き出せないままソフトウェアが実装された
  • (2)テストフェーズで、単体テストや結合テストのプロセスばかりが重視され、エンドユーザー視点でのテストがおろそかになっていた

(1)に関する対策については本連載では割愛しますが、(2)の課題に対する解決策として近年注目されているのが「第三者検証サービス」です。
第三者検証サービスとは、先述した「テストの独立性」という考え方に基づき、ソフトウェアの開発者やシステム管理者以外の専門的なテスト知見を持った専業ベンダーが、第三者の視点から客観的に対象のソフトウェアの仕様やロジックを分析し、テストを代行するサービスのことです。

第三者検証サービスを行うメリット

  • 開発チームは、コーディング、ドキュメント作成など、本来の担当業務に専念できる
  • ユーザー目線に立った客観的な視点でテストを実施できる
  • 経験豊富な専業のスタッフがテストを実施するため、開発者が見落としがちな欠陥を発見できる

テスト工程を管理、実施する人的リソースや時間的な余裕が自社開発チーム内にない場合でも、第三者検証サービスを利用することで、システムカットオーバー後にプロダクトの欠陥が露呈するリスクを低減し、結果としてソフトウェアの安全性や品質を高めることができるのです。

テストベンダーの選び方

第三者検証サービスを提供しているテストベンダーは国内でも複数社あり、近年増加傾向にあります。私が所属している株式会社AGESTもその一社であり、ゲームソフト、Webサイト、クラウドサービス、スマートフォンアプリケーション、自動運転車など、さまざまなソフトウェアを対象とする第三者検証サービスを提供しています。
では、第三者検証サービスを利用する際、どのような点を意識してテストベンダーを選ぶべきでしょうか。私が考えるベンダー選定のポイントは以下の3点です。

(1)テストベンダーの特性

「第三者検証」と言っても、テストベンダーにより得意としているプロダクトや検証領域は異なります。そのため、テストベンダーの特性を見極めてアウトソーシングを検討することが好ましい選定方法です。

テストベンダーを選ぶ際の事例

(2)テストの合理化

システムテストは、リリース前だけではなく、リリース後においても、バージョンアップ等が発生する度にリリース前と同様のテストを繰り返し実施する必要があり、実は、開発工程の中でも非常に工数やコストがかかるプロセスなのです。 そのため、機能テストの自動化や、テストスクリプトのデプロイの自動化など、テスト工程の効率化に関しても積極的にアイデアを提案するテストベンダーを選ぶことが好ましい選択と考えます。

(3)開発の振り返り

テストの成果物であるバグレポートには、次回の開発に生かすべきさまざまな情報が含まれています。そのため、テストを実施した結果、「誰が実装したどのコンポーネントやクラスにどのような欠陥が多く発見されたのか」また、「どの部分にセキュリティリスクやパフォーマンスリスクが集中していたのか」といったフィードバックまでを提供するテストベンダーを選ぶことが好ましい選択と考えます。このようなテスト結果のフィードバックは、今後の開発チームの体制構築や利用するプラットフォーム、フレームワーク、言語などを選択する際に役に立つことが多くあります。

以上の3点が、開発プロジェクトに最適なテストベンダーを選定する手がかりとなります。

まとめ

近年、AI(人工知能)、IoT(モノのインターネット)、ブロックチェーン(分散型台帳技術)といった、新たな技術の誕生により、私たちのビジネスや暮らしにおいて、ITやシステムが果たす役割は飛躍的に増え、ソフトウェアの品質を担保するためのテストの重要性はますます高まっております。
しかし、システムテストの在り方に「勝利の方程式」や「虎の巻」といったものは存在しません。そのため、ビジネス要件、インフラ、開発モデル、フレームワークなどの開発条件や、開発チームに与えられている人的、金銭的、時間的リソースを考慮した最適なテスト工程を組み立てて、実行する必要があります。

SHARE

  • facebook
  • twitter

SQRIPTER

Sqripts編集部

記事一覧

Sqripts編集部がお役立ち情報を発信しています。

  • 新規登録/ログイン
  • 株式会社AGEST
#TAGS人気のタグ
RANKINGアクセスランキング
NEWS最新のニュース

Sqriptsはシステム開発における品質(Quality)を中心に、エンジニアが”理解しやすい”Scriptに変換して情報発信するメディアです

  • 新規登録/ログイン
  • 株式会社AGEST