コードジンのヘッダーが入ります
デブサミ2008でエンピレックス社の副社長として負荷テストをテーマに講演した山岡英明氏が、同社のWebアプリケーションテスト・ソフトウェア部門をオラクルが買収したことに伴い移籍。今年は日本オラクルのSystem & Application Managementビジネス推進本部セールスディレクターとして登壇した。
現在の厳しい経済環境の中で、システムの開発コスト、運用コストの削減が強く求められている。過去10年、開発プロセスの効率化開発資産の再利用、標準化など開発の効率化が進んできた。山岡氏は「しかしその一方で、テスト工数は減るどころか増加を続けている」と指摘する。なぜなら既存システムの1%の修正でも他のシステムに影響する可能性があるのならば、テストは100%行う必要があるからだ。さらに開発とは異なりテストの効率化は進んでいない。テストが複雑になり、開発初期段階のテストが維持できず、アプリケーションを継続発展させて品質を維持することが困難になっている。
そこで、これからのコスト削減で注目すべきはテストだ。まず、開発プロジェクトにおいて、テストの管理がほとんど行われていない現状が問題だ。その背景には現場を信頼する日本の文化があり、これまではそれなりの成果を上げてきた。しかし、開発が大規模になりオフショア化が進むと、テストもマネジメントが必要になる。またテストの工数が増大する中、可能な限りテストを自動化する必要がある。
そして山岡氏は、Webシステムでは性能管理によるサービス向上のためのテストが最も重要と指摘した。なぜなら、テスト関連のコストで最も多額になりやすいのが性能の問題による失敗コストだからだ。不具合を開発チームが指摘された場合、まず問題になるのは再現方法だろう。ところが山岡氏の行ってきた過去500程度のWebシステムの性能検証では、実運用ではほぼ100%再現できなかったという。そのため原因を探るのに大きな手間がかかり、修正コストが他の不具合の100倍のケースもあった。
性能検証のために行われるのが負荷テストだ。今のWebシステムはクロスベンダーで前例が無い様々なものが作られており、特に性能に関して積算などによる事前見積もりはあてにならない。そこで実際にシステムに負荷をかけてテストを行う訳だが、数万人によるアクセスを人力で行うのは不可能であり、オラクルなどの負荷ツールを使うことになる。ツールによりシステムへのアクセス数を増やしていくと、ある時点で限界点に達し、ボトルネックが発生する。山岡氏の経験では99%問題が発生していることから「負荷テストは○か×かのチェックではなく、必ず×になるという前提で、チューニングやプログラム修正を考えながら行う必要がある」と語る。
また初めの負荷テストでは情報を取得しすぎないことがポイントだ。ページの応答時間やCPUとメモリー、DBではディスクのI/O程度に絞り込む。一定以上テスト関連スキルがあれば、それだけで問題箇所を推定することができる。それからマクロの世界からミクロの世界に入っていけばいい。
ただ、テストの結果2分かかると判明した応答時間を10秒に短縮するのは、チューニングでは不可能に近い。そこで要件の段階から性能に着目し、各要件とテストを紐付けする必要がある。
そして山岡氏がポイントとしたのが「負荷試験はチームで行う」ことだ。チームはインフラ担当者とアプリケーション開発者、そして基本的な結果グラフを見て問題点を指摘できる人などで構成する。なぜなら負荷テストによるボトルネックの再現を開発サイドで行うのは難しい。問題発生を各担当者が同時に確認し、その場で原因を推定することが望ましいからだ。
オラクルは、e-TEST suiteでWeb負荷テストの国内トップベンダーだったエンピレックスの同事業統合により、この分野における高い実績とノウハウを継承した。山岡氏は、性能の最適化を図るためにはチームによる負荷テストを何回できるかがキーポイントと強調して今年のセッションを閉じた。