SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

JMeterでWebアプリケーションのパフォーマンス測定を行う

オープンソースの負荷テストツールJMeterの利用


  • このエントリーをはてなブックマークに追加

多くのリクエストを処理しなければならないWebアプリケーションでは、十分なリクエストを処理できるだけの耐久性が求められます。本稿では、それを調査するために、Apache Jakarta Projectで開発が進められているJMeterを使用して、Webアプリケーションの負荷テストの方法を解説します。

  • このエントリーをはてなブックマークに追加

はじめに

 筆者がこれまで見てきたWebシステムの中には、機能仕様を満たしているものの、パフォーマンスの点でユーザが大きな不満を抱えているケースが珍しくありませんでした。その理由として、負荷テスト(または、ストレステスト)がほとんど行われていない、または全く行われていないケースであることが多かったのです。不特定多数のユーザが利用するWebアプリケーションでは、どれほど便利な機能があったとしても、十分なパフォーマンスが出なければ、ユーザビリティを損なってしまいます。

 そこで、本稿では負荷テストツールであるJMeterを使い、Webアプリケーションに対して負荷テストを行う方法を解説します。

対象読者

 Webアプリケーションの開発を行っていて、JMeterを使った基本的な負荷テストの方法を学習したい方。開発言語は問いません。

環境

必須環境

 本稿では、JMeterとテスト対象Webアプリケーションが正しく動作する環境が必要です。Webアプリケーションは、J2SE Development Kit 5.0 Update 6、Tomcat 5.5.12にて動作確認をしています。環境についての詳細や設定方法については、「サーバサイド技術の学び舎 - WINGS」にある「サーバサイド環境構築設定」を参照してください。JMeterはバージョン2.1.1で動作確認をしています。

推奨環境

 正しい負荷テストを行うには、テスト内容に応じたネットワーク環境、端末が必要です。本稿では、読者がすぐに実践できるように端末一台でテストする場合について解説しています。しかし、正しくテスト結果を得るには、Webアプリケーションが動作する端末(サーバー)とJMeterを動作させる端末(クライアント)を分ける必要があります。また、クライアント端末の処理能力によって生成できる負荷にも限度があるため、与える負荷の大きさによっては複数台のクライアントが必要であることも覚えておいてください。

JMeter

 JMeterは、Apache Jakarta Projectで開発が進められている負荷テストアプリケーションです。Webアプリケーション(HTTPベースのアプリケーション)に限らず、FTP、JDBC、LDAPなどのインタフェースをもったアプリケーションに対して負荷テストを行うことができます。また、負荷テストの機能以外にもアサーションなどの単純なテスト機能も備わっています。

 Webアプリケーションの負荷テストが行えるツールとして、他にもOpenSTA、Mercury LoadRunnerなど優れたツールが存在しますが、以下のポイントからJMeterを取り上げます。

100% pure Javaである

 Javaで記述されているためOS環境を問いません。UNIX環境からコマンドラインで操作することももちろん可能です。

オープンソースである

 オープンソースであるため、導入コストが少なくてすみ、コミュニティも活発です。負荷テストツールの中には、Mercury LoadRunnerのように非常に高機能である反面、導入コストが高いものも多く存在しています。システムの規模によっては有力な選択肢になりますが、今回は導入のしやすさからJMeterを解説したいと思います。

操作が簡単である

 操作がシンプルでCUIはもちろんGUIでもテストを行うことができます。

負荷テスト対象アプリケーションの概要

 テスト対象のアプリケーションに、簡易的な一行メモ帳の機能を持つWebアプリケーションを使用します。機能と画面フローの図を解説します。

負荷テスト対象アプリケーションの画面フロー
負荷テスト対象アプリケーションの画面フロー
  • 適当なユーザIDでログインができ、ログインするとユーザ専用のメモ帳保存フォルダが作成され、メモを入力できる画面に遷移する。
  • メモの内容を入力して、[メモ追加]を押下することにより、メモの情報が一つの新しいファイルとして生成される(メモの数だけファイルが存在)。
  • メモを入力する画面では、表示する度にファイルからユーザの全てのメモを読み込んで表示する。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
テストシナリオの作成

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 佐藤 真介(サトウ シンスケ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/336 2008/08/19 20:51

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング