システム開発のハイライトと言えばテストです。シナリオをこなすのも大変ですし、見つかったバグの管理であったり、どうにもならない場合のお客様との調整などを考えると非常に苦しい時間であり、また複雑さをコントロールする中で醍醐味を感じる部分でもあります。

そのテストを考えるのは設計や開発と同じくらいクリエイティブな活動であると思います。テストの役割はその時に問題がなかったことを確認するだけにとどまるものではありません。テストの時点で、システムの挙動を把握できるようなテストデータを積み重ねて置くことにより、リリース後の障害の切り分けでテストデータが生きてくることがあります。

例えば負荷テストで想定以上の負荷をかけた場合にどのようなダウンをするかを観測しておくことができます。そこまでやっておいた場合、実際の運用で障害が発生した際に性能オーバーなのか、それとも別の要因なのかというところを切り分けやすくなります。

テストというものをそのように捉えれば、運用の場面で欲しいテストデータはどのようなものであり、それはどういったシナリオで得ることができるだろう、ということが定まります。

また、特に負荷テストでは自分が設計したシステムが自分の想定通りの負荷がかかっているか、という点も見逃せない点です。負荷をかける場合、動いていればOKとか、レスポンスが何秒以内というところがどうしても注意を惹きます。しかしながらテスト用のデータが適切でないなどの理由によっては、負荷分散やキャッシュの効果により実際に使われる場面では起こりえないような状況が表面化することがあります。

例えばコストダウンの一環として検証環境に仮想サーバを用いることがあります。本来ならば検証環境には本番と全く同等の構成が欲しいところですが、なかなかそういう訳にもいきません。仮想サーバの中には物理ディスクへのアクセスを減らすために仮想ディスクに強力なキャッシュを備えた製品がありますが、それが良い仕事をしすぎると問題です。キャッシュの効果が出やすいアプリケーションの場合、本番の物理のサーバよりも高いパフォーマンスを出してしまうというようなことが考えられます。どうしても本番データよりもテストデータのほうが単純でバラツキが小さいものになりがちですので、本番では思ったよりもキャッシュが活用されずパフォーマンスが出ないという現象につながりかねません。

そういった場合ではまず検証環境で小さな負荷テストをやっておき、どれくらい負荷がかかったかを認識します。本番環境でそれと矛盾しないような結果が確認されれば問題ないですが、それが大きく異なるような場合は現象を突き止めていく必要があると言えるでしょう。

同じように、開発環境に強い負荷をかけようとしても機器に負荷がかからないということもあります。例えばテストツールの設定が悪くて実際の負荷が発生していない、ですとか、シナリオのデータのバラツキが悪くてキャッシュだけが忙しく働き、メモリやCPUに仕事がいっていない、ですとか、そういったことが考えられます。

このような想定外を乗り越えると、開発をしながら「このアプリは1秒につき完全にユニークなリクエストを100個投げたときに、Webサーバの負荷はこれくらい、DBサーバの負荷はこれくらい」という「普通」を把握していくことができます。最終的な負荷テストの値はお客様に報告するとしても、開発の段階から積み重ねたこの「普通」の経験値はなかなか明文化することが難しいものです。『何が普通で何が普通でないか』これを把握するためにはやはりシステムに対する意地悪が必要になります。私の経験としては、そのような意地悪が得意な人には優秀な技術者の方が多いように思います。

私がシステム開発に携わっていたとき、自分の開発力にはあまり自信がありませんでした。しかし障害の切り分けと原因特定ではそこそこ良い仕事ができたというように思っています。それは論理的思考力であったり知識であったりというよりは、システムの「普段の姿」をよく観察していたことに尽きるのではないかと思っています。テストデータというと「異常が無いこと」に意識が向きがちですが、「普通」を把握するためのデータという観点もまた重要であるように思います。

yohei

Special

- PR -
コメント
方波見 豊 2010/02/25 08:56

山口さま

「検証環境で小さな負荷テストをやっておき、どれくらい負荷がかかったかを認識」

重要だと思います。

現状のミニマムユニットでどこまで耐えられるの?を掌握すれば、サイジングやスケールアウト可能とする設計をする際にも、その他の要因(ミドルウェア、ネットワークインフラ、LB/キャッシュなどのインフラ)との切り分けがしやすくなると思います。

フツーの処理能力(「普通」を把握)とセットで、過負荷時の処理能力と、ダウンする過負荷を限られた検証環境でしっかりとできれば、負荷テストの基本をクリアしたことにもなりますので、是非に抑えて欲しいところです。


yohei 2010/02/26 00:23

方波見さん、コメントありがとうございます。
どこまで負荷が上がるとダウンするかわかっている場合、負荷の増加トレンドを予測して機械を予め発注しておけるという点もまた嬉しいですね。
また、機械は一度買ってしまうとなかなか売れませんが、クラウドの世界ではサイズダウンがしやすいという特徴があります。負荷テストツールで想定トランザクションを高い精度で再現できる場合、できるだけ安上がりに実現するための構成をじっくりと検討することができそうです。今後は大規模システムの品質向上だけでなく、そういった世界でも負荷テストの存在感が大きくなっていくのではないかと思っています。

eis 2010/02/27 13:49

山口様

欲しいテストデータの話で別の視点として、テストデータを用意(作成)するのに、スクリプトで自動的に作成する、Excelでデータやコマンドを作成するなど、効率よくテストデータを作成する能力も大事だと思いました。

yohei 2010/03/04 01:11

eisさん、コメントありがとうございます。
「業界団体」でテストデータをお持ちのところもありますね。非常によい試みと思います。テストデータを作成するプロセスそのものが、システムの使われ方などを再考し品質を高めるための良いきっかけになるのではないでしょうか。
少し話題は代わりますが、テストで頭が疲れてきたときに(もちろん良識の範囲内で、ですが)テストデータの「モーニング娘限定」や「SMAPの曲名限定」などのルールを入れて担当者同士が楽しんで仕事をできるような工夫もまたおもしろいと思います。不謹慎と感じる方もおられるかと思いますが、SMAPの曲にTOKIOの曲が混ざっていると非常に明快に不具合がわかるというメリットもあり、一考に値するかと思います。


コメントを投稿する
メールアドレス(必須):
URL:
コメント:
トラックバック

http://app.blogs.itmedia.co.jp/t/trackback/77444/23424429

トラックバック・ポリシー


» このブログのTOP

» オルタナティブ・ブログTOP



プロフィール

山口 陽平

山口 陽平

国内SIerに勤務。現在の担当業務は資金決済法対応を中心とした資金移動業者や前払式支払手段発行者向けの態勢整備コンサルティング。松坂世代。

詳しいプロフィール

カレンダー
2012年2月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
カテゴリー
エンタープライズ・ピックアップ

news094.gif 富士通元社長の山本卓眞氏が残した次代へのメッセージ
富士通の社長、会長を務めた山本卓眞氏が亡くなった。哀悼の意を込めて、日本のIT産業界の大御所が残した次代へのメッセージを紹介しておきたい。(2/6)

news094.gif Facebook就活はもう古い?
約260人のブロガーが、ITにまつわる時事情報などを日々発信しているビジネス・ブログメディア「ITmedia オルタナティブ・ブログ」。その中から今回は「就活」「都心の雪」「ソーシャルメディア」などを紹介しよう。(2/4)

news094.gif 東北をコットンの生産地としてブランディングしたい──リー・ジャパン・細川取締役
塩害に強い綿の生産で東北に新たな産業を作りたい。オーガニックコットンの採用など、環境負荷を下げるジーンズ生産に取り組んできたリー・ジャパンの新たなチャレンジとは──。(1/30)

news094.gif 東北から始まるイノベーション
企業のICTを活用と若手IT技術者による東北発のイノベーションが、中長期的な震災復興の鍵となる。(1/27)

news094.gif 貧困国の雇用を創出する印刷屋、丸吉日新堂印刷の挑戦
全国から約2万7000件の名刺制作を受注をする札幌の小さな印刷会社の成功の秘密は、地道な社会貢献にあった。(1/16)

オルタナティブ・ブログは、専門スタッフにより、企画・構成されています。入力頂いた内容は、アイティメディアの他、オルタナティブ・ブログ、及び本記事執筆会社に提供されます。

Special

- PR -

サイトマップ | 利用規約 | プライバシーポリシー | 広告案内 | お問い合わせ