japan.internet.com The Internet & IT Network


RSSニュース検索
カテゴリ
> トップページ
> Webビジネス
> Eコマース
> Webファイナンス
> Webマーケティング
> パブリック
> Webテクノロジー
> 携帯・ワイヤレス
> Linux Today
> Linux Tutorial
> J.I.C.ブログ
キャリア
> 転職ならen
> 派遣ならen
> アルバイトならen
> IT求人情報
ヘッドライン
> 今日のヘッドライン
> 週間ヘッドライン
Special Link
> フォトコミュニティ
> ストックフォト
> クリップアート
> イラスト
> フェリカ
> Web2.0
> 写真
イベント&セミナー
> イベントカレンダー
> 書評「IT の耳」
> 出張・接待検索
> ニュースガジェット 注目
無料ニュースメール
> 新規登録
> 変更・解除
> オプトインメールの登録・変更・解除
インフォメーション
> パートナーサイト
転職ならエン
就職ならen
求人ならen
履歴書ならen
アルバイトならエン
CRM/SFAならオラクル
> グループ会社
株式会社アエリア
(株)サンゼロミニッツ
株式会社エアネット
> お問い合わせ
> 広告掲載について
> リンクについて
> 著作権について
> その他お問い合わせ
> 利用規約
> 個人情報保護方針
> 会社概要地図
デベロッパー 2008年6月20日 10:00
デベロッパー・バックナンバー
開発者のためのスケーラビリティテストとゴールテスト

著者: Michael Ault  オリジナル版を読む プリンター用 記事を転送
2008年6月20日 10:00 付の記事
海外internet.com発の記事
このエントリーを含むはてなブックマーク この記事をクリップ! Buzzurlにブックマーク Yahoo!ブックマークに登録 newsing it!

はじめに

 多くの場合、開発者の仕事は機能コードを開発することだけではありません。開発するコードがアプリケーション環境で適切なスケーラビリティを持ち、適切に動作することを保証しなければなりません。開発したコードに対しては、本来、次の3つのテストを行う必要があります。

  • 機能テスト…コードが提案どおりに機能することを確認します。
  • スケーラビリティテスト…コードが提案どおりに機能しながら、できるだけ少ないリソースで動作することを確認します。
  • ゴールテスト…コードが、指定のサービス品質保証契約(SLA)より短い時間で実行されることを確認します。
 この3つの中では、通常は機能テストが最も行いやすいでしょう。

 本稿では、スケーラビリティテストとゴールテストの違いを取り上げ、手動テスト向けの擬似コードテストハーネスの例を紹介し、実際にQuest SoftwareのToadという自動テストインターフェイスを使用してOracleプロシージャのテストを行う例を示します。適切なコードテストの方法、および開発者にとって利用しやすいテスト作成ツールについて学びたいと考えている開発者のお役に立てば幸いです。

手動で行うスケーラビリティテストの課題

 まず取り上げるのは、プログラム、関数、あるいはステートメントが可能な限り効率的にリソースを使用していることを確認するテストで、「スケーラビリティテスト」と呼ばれます。スケーラビリティテストでは、本番システムで想定される環境とほぼ同じ環境に置いたコードを、ランダムな変数を使用し徐々にユーザー負荷を上げながら実行します。このとき、ユーザー負荷を特定のユーザー数まで高めていく場合もあれば、環境に明らかなストレスが見られるまでユーザー数を増やしていき、現行のプラットフォームでの最大スケーラビリティを判断する場合もあります。

 スケーラビリティテストは、リスト1に示す擬似コードのような内製のテストハーネスを使用して実施できます。もちろん、このテストスクリプトは同時に複数のユーザーに手動で実行してもらう必要があります。

 おそらく何百行にも及ぶと考えられるテストハーネスを管理することは、大変な作業です。また、ランダムな値を生成したり、手動テストハーネスの基礎となるインフラストラクチャを管理したりすることに、実際のアプリケーションの管理や改良よりも多くの時間と手間がかかってしまうでしょう。

 スケーラビリティテストの結果は、通常、1秒あたりのトランザクション数(TPS)、あるいは1分あたりのトランザクション数(TPM)で表されます。

リスト1 スケーラビリティテストハーネスの例
Open procedure with "X" (number of times for each SQL iteration)
Loop 1: Choose Template SQL statement from SQL table
Loop 2: SQL Processing (iterate X times)
Read example SQL string from test SQL table
    Parse variables from code
    Loop3
        Read variable types and values from variable table
        Replace variables in SQL string with proper variable
    End Loop3
    Capture start timing
    Execute parsed and variable loaded SQL into cursor
    Capture end timing
    Calculate total time spent executing
    Load result table for executed SQL with timing
    End Loop2
End Loop 1 
Calculate Averages for all SQL
Determine TPS and or TPM
Generate report of results
End Procedure

ゴールテスト

 パフォーマンスに関するもう1つのコードテストとして、コードが指定のSLAより短い時間で実行されるかどうかを確認する「ゴールテスト」があります。単一のステートメントを実行する場合と、複数のユーザーで同時に実行する場合の両方について検討します。SLAを締結する際には、マネジメントチームは、管理するシステムの該当部分のみに対応すれば十分です。

 良いSLAとは、たとえば「トランザクションXは、データベースレベルで同時ユーザー数がZの場合、Yミリ秒(あるいは秒)以内で完了する」というものです。それに対して、言葉が不十分なSLAとは、たとえば「画面XはY秒以内に完了する」というものです。

 なぜ、2番目の例は不十分なSLAなのでしょうか。理由は、利用状況を限定していないことにあります。画面Xを見ているユーザーはサーバーの隣にいるかもしれず、この場合、SLAに適合する可能性は高くなります。一方で、ユーザーはバングラデシュにいて、サーバーはアメリカにあるという状況も考えられます。この場合は、さまざまなネットワーク遅延が関係してくるため、単純にSLAに適合するかどうかを考えても意味がありません。

 手動で行うゴールテストのテストハーネスの例をリスト2に示します。SLAを全面的にテストするためには、スケーラビリティテストと同様に、複数のユーザーに同時に手動テストを実行してもらう必要があります。ゴールテストの結果は、通常、特定の秒数に達するまでに行われるトランザクション数(TPMまたはTPS)、あるいは、あらかじめ指定されたTPSやTPMに到達するまでのユーザー数として報告されます。

リスト2 SLAテストハーネスの例
Open procedure with "X" (number of times for each SQL iteration)
Loop 1: Choose Template SQL statement from SQL table
Loop 2: SQL Processing (iterate X times)
Read example SQL string from test SQL table
    Parse variables from code
    Loop3
        Read variable types and values from variable table
        Replace variables in SQL string with proper variable
    End Loop3
    Capture start timing
    Execute parsed and variable loaded SQL into cursor
    Capture end timing
    Calculate total time spent executing
    Load result table for executed SQL with timing
    End Loop2
End Loop 1 
Calculate Averages for all SQL
Compare calculated averages to SLAs
Send alert if any SLA exceeded
End Procedure

スケーラビリティテストおよびゴールテストの自動化

 自動テストの機能を持つユーティリティを提供している企業もあります。たとえばHP(正式にはMercury)の「LoadRunner」は高機能のテスト環境です。しかし、1人の開発者が、1つのステートメント、プロシージャ、あるいは機能コンポーネントに対してスケーラビリティテストやゴールテストを行いたい場合には、少々大げさかもしれません。個人で使うテスト環境という意味では、Quest Softwareの「Toad」の方が使いやすいでしょう。

自動で行うスケーラビリティテストの例

 以降では、Toad for Oracleを使用した実際のスケーラビリティテストの例を紹介します。最初のステップは、必要なコードの開発です。今回は、従業員テーブルにレコードを挿入するプロシージャを開発します。図1は、このプロシージャをToadエディタで表示した様子です。

図1 Toad内のサンプルプロシージャ。従業員テーブルにレコードを挿入するコードです。
図1 Toad内のサンプルプロシージャ。従業員テーブルにレコードを挿入するコードです。
 このプロシージャを作成する前に、Toad Code Testerで一連のテストを定義し、機能テストを自動化するためのテストハーネスを生成できるようにしておきました。図2は、図1のプロシージャをコンパイルしたものに対してCode Testerを実行した結果を示しています。

図2 Code Tester の結果。図1のプロシージャをコンパイルしたものに対してCode Testerを実行した結果です。
図2 Code Tester の結果。図1のプロシージャをコンパイルしたものに対してCode Testerを実行した結果です。
 機能テストが完了したら、次のステップでスケーラビリティテストやゴールテストを行います。自動化したテストを実行するために、Benchmark Factoryインターフェイスでは自動化リンクが使われています。次のステップはPL/SQLプロシージャの選択です。図3は、Benchmark Factory(BMF)からプロシージャをテストするためのシナリオウィザードの画面で、テスト対象のプロシージャが選択されています。プロシージャのテストにランダムな変数を使用したい場合は、テスト対象のプロシージャを選択した後、図4の画面でランダム化スクリプトの呼び出しを挿入できます。

図3 プロシージャの選択。Benchmark Factory(BMF)からプロシージャテストを行うためのシナリオウィザードを示しています。
図3 プロシージャの選択。Benchmark Factory(BMF)からプロシージャテストを行うためのシナリオウィザードを示しています。
図4 変数の選択。ランダムな変数を使用するための呼び出しをウィザードで挿入できます。
図4 変数の選択。ランダムな変数を使用するための呼び出しをウィザードで挿入できます。
 次のステップでは、コードの同時実行に使用するユーザー数の範囲を選択します。BMFでは、単に、下限、上限、および増分を指定します。図5では、テスト範囲を1〜50、増分を10としています。

図5 ユーザー負荷の設定。テスト範囲を1〜50、増分を10としています。
図5 ユーザー負荷の設定。テスト範囲を1〜50、増分を10としています。
 実際のテストは、ユーザー負荷プロファイルが設定された後で実行されます。結果は表とグラフの両方の形式で提供され、Excelのスプレッドシートにダンプできます。図6に、プロシージャテストの結果を表形式で出力した最初のページを示します。

図6 表形式の出力。表形式の出力の最初のページです。
図6 表形式の出力。表形式の出力の最初のページです。
 経営陣はグラフが大好きなものですが、その点に関してもぬかりはありません。図7に、このツールから出力できるさまざまなグラフの一例を示します。スプレッドシート形式の出力にも、手作業で作成したレポートに必要に応じてそのままカットアンドペーストできるグラフが含まれています。

図7 グラフ形式の出力の例。ツールから出力できるグラフの一例を示します。
図7 グラフ形式の出力の例。ツールから出力できるグラフの一例を示します。
 開発、機能テスト、およびスケーラビリティテストやゴールテストを個人ユーザーレベルで統合して行うことのできる環境には、明らかなメリットがあります。標準ツールを使うことで、個々の開発者がコードの開発と共にテストの全フェーズにおけるテストレポートを作成でき、それを統合テストの実施時にQA/QCグループに引き渡すことができます。

開発者のためのコードテストの自動化

 本稿では、スケーラビリティテストとゴールテストの違いを取り上げ、手動テスト向けの擬似コードテストハーネスと、自動化テストインターフェイスを使用したOracleプロシージャのテストの例を紹介しました。適切なコードテストの方法と、開発者によるテストを簡便化するツールについて知りたいと考えている開発者にとって、少しでも参考になれば幸いです。

著者紹介

Michael Ault(Michael Ault)


関連記事
  • 高可用性データ同期アーキテクチャ
  • Oracle DB 向けノンプログラミング DB アプリケーション生成ツールを無償配布
  • 米カリフォルニア州、処方薬 DB のオンライン化で薬物乱用に対抗
  • デジタルフォレスト社が Visionalist DB に Netezza を採用
  • タイムマシン


  • 関連テーマ
  • Oracle


  • ★最新トップニュース
    海外 【ケータイ USA】イギリスの団体が iPhone の広告における Apple の虚偽に言及(携帯・ワイヤレス 8月30日 13:00)
    イギリスの広告基準協議会(Advertising Standards Authority:ASA)は、Apple に広告における真実について、訓戒を説こうとしているらしい。
    国内 ASUS、電源オンから約7秒で起動するコンパクト PC「Eee Box」を発表画像のある記事(Webテクノロジー 8月29日 18:20)
    ASUS は2008年8月29日、低価格なコンパクト PC「Eee Box B202」を9月13日に発売する、と発表した。
    国内 【今週の Web ミミズク】「予測市場」の将来を予測したい…(Webビジネス 8月29日 18:10)
    「予測市場」という言葉をちらちら耳にする。「予測」と「市場」という組み合わせが、耳新しいのかもしれない。あるいは、未来を予想できるかもしれない、という期待もあるかもしれない。
    国内 G DATA がゼロアワー攻撃の拡大を警告(Webテクノロジー 8月29日 18:00)
    G DATA が、国内でのゼロアワー攻撃が拡大している、と警告を発している。同社が2008年8月29日、明らかにした。
    国内 KDDI、「光で操作ナビ」などを搭載した簡単ケータイ「W62PT」を8月30日発売画像のある記事(携帯・ワイヤレス 8月29日 18:00)
    KDDI、沖縄セルラーは、2008年8月29日、au 携帯電話新ラインアップとして、パンテック&キュリテル製の簡単ケータイ「W62PT」を8月30日に全国一斉発売することを発表した。
    トピックス
    > オススメのIT系求人情報【毎週月曜日更新】
    footer_301.gif


    リサーチ
    > デイリーリサーチDLサイト
    > OnlineResearchPortal (リサーチデータバンク)
    > モバイルリサーチ with goo
    footer_301.gif
    キーワード
    > iPhone > Youtube
    > Google > モバイルノート
    > 半導体 > ウィルコム
    > テーマ一覧はこちら
    footer_301.gif
    セミナー情報
    > 第2回インターネットコムマーケティングセミナー
    「モバイルマーケティングの世界」〜これだけはやっておきたいモバイルマーケティング施策とは〜
    9月24日(水)13:00〜17:00 ITS 山王健保会館
    ※詳しくはこちら
    footer_301.gif
    デベロッパー
    > DevX
    > CodeGuru
    > developer.com
    footer_301.gif
    j.i.c.ブログ
    ブログ一覧
    ベンチャー専門家の目利きブログ「なぜこの企業は伸びるのか?」 【ベンチャー専門家の目利きブログ「なぜこの企業は伸びるのか?」】
    「選択と集中」選択をして集中しない限りは勝てない/メディカル・コミュニケーションズ株式会社(8月29日)
    データメーション 【データメーション】
    Apple は顧客の忠誠心にあぐらをかいているのか? (8月27日)
    Graphic Design Forum 【Graphic Design Forum】
    次へとつながる輪 (8月27日)
    最新テクノロジーの意外な処方箋 【最新テクノロジーの意外な処方箋】
    あなたが舌なめずりしたくなるようなもの(8月26日)
    エンジニアの独り言 【エンジニアの独り言】
    データをローカルに保存するWebアプリケーション(8月22日)
    デスマーチからの脱却 【デスマーチからの脱却】
    30min. iPhoneアプリリリース(8月18日)
    footer_301.gif
    最新コラム一覧
    台湾企業が席巻する電子製品製造 台湾企業が席巻する電子製品製造

    世界の IT 産業を担う台湾製造企業、馬政権誕生で中・台産業関係さらに緊密へ(8月29日)
    IT マネジメント IT マネジメント

    IT を変えつつあるのはどの技術?(8月29日)
    最新ハイテク講座 最新ハイテク講座

    繁栄か滅亡か!巨大なエネルギー「原子力」の未来(8月29日)
    developer.com developer.com

    レガシーWebアプリケーションをWebLogic Portal内のフルページIFrameとして統合する(8月29日)
    百式のネットビジネス研究 百式のネットビジネス研究

    友達にあなた特製のクスリを贈ることができる「Get Your Drug On」(8月29日)
    週刊-サイト別アクセス状況データ 週刊-サイト別アクセス状況データ

    ビデオリサーチインタラクティブ調査(月間インターネットオーディエンスデータ)(8月28日)
    「IT の耳」 「IT の耳」

    【書評】『1回の会議・打ち合わせで必ず結論を出す技術』――無意味な会議を撲滅する(8月28日)
    ハードウェアから見たデータベース ハードウェアから見たデータベース

    巨大テーブル活用術1(8月28日)
    ウチのサイトを SEO ウチのサイトを SEO

    検索エンジンが見ている世界(8月27日)
    エンジニア転職ノウハウ開発室 エンジニア転職ノウハウ開発室

    目指せecoエンジニア!グリーンITで地球を救え(8月26日)
    footer_301.gif
    専門チャンネル
    > セキュリティチャネル > テレコムチャネル
    > サーチエンジンウォッチ
    footer_301.gif
    海外のインターネットコム アメリカ韓国ドイツトルコ
    関連企業のサイト:ストックフォト イラスト ネットストリート ホテル予約サイト タウン情報 出張 事業継承 シミュレーション トランクルーム 優待映画チケット 田舎暮らしガイド オリジナルデザインTシャツ ニタコエ
    Copyright 2008 Jupitermedia Corporation All Rights Reserved. http://www.internet.com/
    space.gif space.gif