InfoQ

InfoQ

News

マイブックマーク

ブックマークするためにログイン または 会員登録 する

ブックマークされました!

ブックマークがエラーになりました。もう一度お願いします。

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

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

セクション
デベロップメント,
設計/アーキテクチャ
トピック
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

特集コンテンツ一覧

GAE開発の落とし穴

Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します

イベントレポート:「Coqチュートリアル#1」

去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。

Javaの未来についてのNeal Gafter氏とのディスカッション

Choosing Options

Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。

Google Dartのエッセンス:アプリケーションの構築、スナップショット、Isolate

GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式

CSPベースのモデル検査ツール「Process Analysis Toolkit」

本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。

Jenkinsによる継続的インテグレーションのススメ(4) ~CloudBeesでJenkinsをサービスとして使う~

前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。

書籍『抽象によるソフトウェア設計-Alloyではじめる形式手法-』の紹介

Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。

Windows デバイスで開発するタッチユーザーインターフェイス

スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。