本文へ移動
非機能要件※1の定義から検証まであらゆる工程を支援しシステムのさらなる品質向上を実現するテスティングサービス
システム開発ではお客様の要望する機能要件※2を実現することはもちろん、システムの性能やセキュリティなどの非機能要件の実現も重要なポイントになります。
しかし、非機能要件の定義は難しく、それらを含めシステムを最適化するには専門の技術やノウハウが必要です。アイ・ティ・フロンティアでは、システムの非機能要件に対する品質向上も重視し、2005年からコンピテンスセンターにおいてテスティングチームを組織して高度で専門的なサービスの提供に取り組んでいます。

■性能や信頼性を検証する負荷テスト

 テスティングサービスは、当社が開発するシステムの非機能要件に関するテストを実施するサービスです。要件定義工程において性能や信頼性、セキュリティなどの非機能要件を具体的に定義し、テスト工程において検証することは、システムの品質向上につながる重要なポイントです。しかし、非機能要件の要件定義・検証には高い専門性が求められるため、個々のプロジェクトチームが機能要件の実現に注力しながら実施するのは困難です。このため、アイ・ティ・フロンティアでは非機能要件について専門に検証を行うテスティングチームを組織し、各プロジェクトを支援しています。
 提供メニューの一つである負荷テストは、運用時に想定されるさまざまな負荷を専用のツールを使ってテストすることで、性能や信頼性を保証します。
 負荷テストの重要性が認識され始めたのは近年のことです。他社で過去に発生した、アクセスの集中によりシステムがダウンするというトラブルをきっかけに、負荷テストの重要性が一般にも認知されるようになりました。
 テスティングチームで提供している負荷テストサービスのメリットの一つに、ユーザ企業が感覚として捉えている性能や信頼性などを数値化し、客観的に評価できる点があります。例えばシステムにアクセスして検索結果を得るといった処理に要する時間について、明確に何秒以内とルールを定めているユーザ企業は少なく、多くは感覚的な認識にとどまっています。このため、IT企業がユーザ企業の感覚を性能要件※3として定義する必要がありますが、そのノウハウや技術が十分に蓄積されていないのが現状です。当社は、負荷テストサービスを通じて、そのノウハウや技術の蓄積に積極的に取り組んできました。

■図.性能要件の目標値の例

 

■蓄積したノウハウと高機能のツールを活用し高品質な負荷テストを実施

 負荷テストには大きく分けて六つの工程があります。(1)ヒアリング、(2)計画書の作成、(3)テストの準備、(4)テストの実施、(5)結果の分析、(6)報告です。当社のテスティングチームは、プロジェクトの要件定義工程から参画し、ユーザ企業のニーズを把握しているプロジェクトメンバーへのヒアリングを通じて性能要件を定義します。その定義に基づき、プロジェクトごとに想定される負荷環境のシナリオを作成し、開発されたシステムに対してテストを実施。テスト結果を分析し、数値やグラフといった形で可視化し、プロジェクトへ報告します。
 実施に当たってポイントとなるのが、テスティングチームとプロジェクトメンバーとのコミュニケーションです。当然ながら、プロジェクトごとに開発するべきシステムは大きく異なり、そのすべてをテスティングチームが把握することは困難です。このため、複雑なシステムに対し常に最適な性能要件を保証するために、プロジェクトメンバーとの密接なコミュニケーションが重要になります。
 また、技術面では二つのポイントがあり、その一つがシステムに負荷をかけるスクリプトの作成です。スクリプトは、多数のユーザが、異なる目的でシステムにアクセスするといったシナリオに基づいて負荷を掛ける機能を持つもので、シナリオに合わせて作成します。この作成に当たっては専門のテストツールが必要になります。
 一般に利用されることの多い無償のテストツールは導入費用こそ掛かりませんが、複雑なシステムやHTTP以外のプロトコルに対応できないこと、機能が不十分なためスクリプトの作成コストが掛かることなどの問題が起こりかねません。当社では、機能を重視した有償のテストツールを導入することで、HTTP以外のプロトコルにも対応したテストや、短期間でのスクリプトの作成を可能にしています。また、より多くのプロジェクトにサービス提供することで、テスト品質の向上とプロジェクト当たりのテストに掛かるコスト削減の両立を図っています。
 もう一つの技術的なポイントが、テスト結果の分析です。多様なプロジェクトにおいて正確な分析結果を導き出すためには、さまざまな監視ツールに習熟する必要があり、手間が掛かってしまいます。そこで、テスティングチームでは当社で主に扱う複数のプラットフォームにおいて、自動的にパフォーマンスを測定する共通の仕組を構築しています。これを使ってCPU使用率やDBの接続数などのパフォーマンスに関する測定値をすべて同じ形式のグラフに自動的に変換し、簡単に分析できるようにしています。
 さらに分析の精度を上げるため、支援したプロジェクトごとに現れた問題点や判明したボトルネックなどをノウハウとして蓄積し、テスティングチーム全体のレベル向上を図っています。こうしたノウハウは、分析の精度向上のみならず、当社が提供しているシステム運用・保守サービスにおいて、経年によって起こりがちなレスポンス低下などの性能問題の解決にも役立てています。

■テスティングサービスを拡大しクラウドサービスの価値向上に活用

 テスティングチームでは現在、年間で15〜25件のプロジェクトを支援しており、累計では100件を超える負荷テストを実施してきました。テスト実施により、プロジェクトメンバーへ安心感を与えるのみならず、お客様に数値などわかりやすい形で性能をお伝えできるため、お客様の安心感にもつながっています。
 今後は負荷テストの社内利用を一層推し進めるとともに、他社が開発・運用している社外のシステムに対しても、テスティングサービスの提供を図っていきます。
 また、テスティングサービスのメニューを充実させるため、2009年からはセキュリティテストの提供を始めています。セキュリティテストでは、ハッカーによる悪意のある攻撃や、ユーザの予期せぬアクセスによる不正処理などに対する脆弱性をテストするもので、システムの信頼性向上の実現を支援します。
 さらに、クラウド・コンピューティングへのニーズを見据えて、キャパシティプランニングの手法の確立に取り組んでいます。クラウド型のサービスでは、お客様の状況に合わせてリソースを柔軟かつスムーズに変化させ、常に最適なシステム環境を提供することが重要なポイントになります。テスティングチームの豊富な実績と培ってきたノウハウを生かし、システムの性能要件に対するリソース配分の社内標準を作成することで、今まで以上にお客様のニーズに最適なシステムをご提案していきます。
 アイ・ティ・フロンティアは今後もテスティングサービスを活用し、機能要件と非機能要件双方において高品質なシステム開発・運用・保守サービスを提供することで、お客様の価値創造に一層貢献できるよう、ノウハウ・技術の蓄積に取り組んでいきます。

※1 非機能要件:機能要件(※2参照)以外の要件。可用性、性能・拡張性、運用・保守性、移行性、セキュリティ、システム環境・エコロジーに分類できる。
※2 機能要件:システムがお客様の業務処理を実現するために持つべき機能に対する要件。
※3 性能要件:非機能要件の一つで、性能に関する要件。画面操作の処理応答時間やバッチプログラムの単位時間当たりの処理量などを顧客の業務内容やシステムの操作性を考慮して定める。

中島 裕
事業統括本部
コンピテンスセンター
中島 裕

(IT Frontier NEWS 2010 WINTER TECHNOLOGY EYE 掲載)
掲載内容はすべて、IT Frontier NEWS 2010 WINTER 発行時点のものです。