InfoQ

News

JMeterとAntによる自動負荷テスト

作者 Alexander Olaru , 翻訳者 大田 緑 - (株)チェンジビジョン 投稿日 2008年4月29日 午前6時44分

コミュニティ
Java
トピック
ソフトウェアテスト,
パフォーマンス&スケーラビリティ
タグ
CruiseControl,
Ant

Stelligent社CTO、Paul Duvall氏(source)が、「Automation for the people」(source) シリーズで、継続的インテグレーションサーバにJMeterとAntをどのように統合するか(source) to解説する。統合することで、開発したシステムのある特定の負荷状況における振る舞いを開発者が素早く判断したり、変更に対応したりすることができる。Duvall氏は、まずJMeterのテストで計測できるいくつかのメトリクスを挙げる。:

  • ソフトウェアシステムに何人のユーザが同時にアクセスできますか?
  • 性能が悪化することなくどのくらいのデータをロードすることができますか?
  • システム処理能力の要件は何ですか?
  • これらの要件はどのくらいの間隔でテストされますか?
  • もし、少なくとも一日に一度、これらの負荷と性能の要件が満たされていることを明らかにし、確認することができたとしたらどうでしょうか?

Duvall氏はさらに説明する。CIサーバでスケジュールした自動テストは、一日のうちマシンの使用量が少ないときに実行することができる。同様に、「たった一人で設定してテストを実行するように頼んだ場合に発生しうるボトルネックやエラーを減らす」ことができる。そうした環境をセットアップするために必要な主な手順について説明する。:

1. JMeterを実行し、テスト計画を作成する    JMeter(サイト・英語)はApacheプロジェクトで機能的振る舞いの負荷テストを行い、パフォーマンスを計測するJavaツールである。GUIかコマンドラインから呼び出して、テスト計画によって定義された様々な負荷テストを実行することができる。サンプルのテスト計画には、ウェブテスト計画、FTPテスト計画、ウェブサービステスト計画などが含まれる。このようなテスト計画は、GUIを通して設定し、XML形式で保存することができる。こうしてテストを実行する方法をカスタマイズするために、構成値のパラメタ化が可能となる。

2. AntでJMeterテストを駆動する

実装例(source)を参考にして、JMeter Antタスクを定義する。例えば、次のように定義できる。""  そして、AntからJMeterの負荷テストを実行する。Duvall氏は、BreweryTestPlan.jmx ファイル (テスト計画のXMLの記述) に定義されたテストの設定例を示した 。

<jmeter
  jmeterhome="${jmeter.home}"
  resultlog="${basedir}/target/JMeterResults.xml">
  <testplans includes="BreweryTestPlan.jmx" dir="${basedir}/tests/load">
  </testplans>
</jmeter>

3. XSLTとHTMLでテスト結果のレポートを表示する  次に、JMeterのextrasディレクトリで提供されたXSLTスクリプトを使って、テストの実行結果、「JMeterResults.xml」をHTML形式のレポートにどのように変換するかを示す。生成されたレポートに載っているのは、実行した負荷テストひとつひとつについて、実行時のテスト状況と時間、また全テストの状況と時間の集計結果である。

4. JMeterテストをカスタマイズする  テストを実行する方法はパラメタとプロパティを使ってカスタマイズできる。テスト時や実行時など特定の環境にテストを適合するために、.jmx ファイルにトークンを設定する。後で特定の環境においてテストを実行する場合に、トークンをフィルタリングしたり変更したりできる。Duvall氏は、どのようにJVMメモリを増やし、スレッドとループの数を指定するか例を示した。

5. CI環境でJMeterテストを統合する . Duvall氏は、継続的インテグレーションサーバ、CruiseControlと統合する例を示した。例では、午後11時に毎日実行するビルドをスケジュールする。
...
<modificationset>
  <svn repositorylocation="${svnrepo.location}">
  <timebuild time="2300"/>
...
  </svn>
</modificationset>

CruiseControlのconfig.xml ファイルに2、3行追加すれば、JMeterテスト結果のレポートをCruiseControlのプロジェクトダッシュボードから利用することができる。

継続的パフォーマンスについては、Kirk Pepperdine氏の Iterative, Automated and Continuous Performance(source) 、および、Steve Haines氏の continuous performance management presentation(source)(PPTのダウンロード) で取り上げられている。

原文はこちらです:http://www.infoq.com/news/2008/04/JMeter-Ant-CI

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
slashdot+
Hatena

特集コンテンツ一覧

Flex 4の新機能トップ10

今週(2009年6月1日)AdobeはFlex 4の正式な初ベータ版をリリースしました。Flex 4はGumbo(オクラ)というコードネームで開発されています。今回のリリースには大きな変更が多数含まれています。このRIAフレームワークの最新バージョンにおいて変更された事柄についての概要を以下のリストで見ていきましょう。

Domain Driven Design(ドメイン駆動設計) Quickly 日本語版

ビジネス領域の深い理解を反映したドメインモデルを設計するための、ヴィジョンとアプローチです。この本は、Eric Evans氏の「Domain Driven Design」の主要点を短く読みやすく要約しました。

JavaプログラマがFlexとBlazeDSを学んだ方がいい13の理由

この記事ではJavaプログラマがなぜFlexとBlazeDSを学ぶべきなのかについて13の理由を述べています。なぜ高度にインタラクティブなWeb サイトからJavaで開発されたバックエンドをもつエンタープライズ・アプリケーションまでを含む、リッチ・インターネット・アプリケーション(RIA)の開発にFlexとBlazeDSの組み合わせが最適な選択肢となるのかについて述べています。

仮想パネル: バックログは重要な成果物とプラクティスか、それとも無駄か?

Mary Poppendieck氏、Ron Jeffries氏、Jeff Patton氏、David West氏、Steve Freeman氏、Jason Yip氏が、バックログに関する彼らの意見とアジャイルチームを成功させるために必要な事を語った。

Perf4Jを使ったパフォーマンス解析とモニタリング

この記事ではAlex Devine氏が、Java開発者がPerf4Jをどのように利用できるかと、タイミングステートメントにコードを追加し、ロギング、結果の解析とモニタリングを行うオープンソースツールセットの説明をします。

複雑な外部DSLを開発する

本稿では、Vaughn Vernon氏が内部DSLと外部DSLの違いを説明し、複雑な外部DSLを開発する際のステップを示します。

J2EEアプリケーションにおけるAOPを使ったフェッチ戦略の実装

この記事では低レベルのサービス・レイヤやリポジトリ・レイヤを肥大化させることなく、フェッチング・ストラテジによってモジュール化された方法でバックエンドにあるシステムからデータを取得する処理を最適化する方法について説明します。

実証済みのアイデアの融合: S#arp Architectureの裏側

この記事では、Web開発における多数の成熟傾向と、クライアントに価値を提供することに対するそれらのメリット、およびS#arp Architecture(最善の手法と技術を活用しようとするASP.NET MVCをベースとしたフレームワーク)内でのそれらの使用について取り上げます。