Hedgehogはお客様のウェブシステム・サイトに対しての負荷試験を実施するためのサービスです。負荷試験実施にあたって必要となるリソースを可能な限り削減することを目標に開発しており、以下の特徴があります。
Hedgehogでは負荷試験に使うサーバの調達にIaaSを利用しており、試験実施時のみ必要なサーバを起動するAPI制御でインフラコストの最小化を実現しています。
Apache JMeterなどの負荷試験ツールを使う場合、1,000~2,000ユーザ程度までは容易に負荷を発生させることが可能です。しかし、10,000ユーザを超えるような試験では、複数台構成への変更やOSのチューニングなど、様々なハードルがあり、結局負荷試験に多くのリソースががかかってしまうケースが多いです。Hedgehogでは負荷がどれだけ大きくなろうともまったく同じ操作で試験が可能です。
既存の負荷試験ツールの多くは、シナリオの作成・記述にプログラミング言語(DSL)を採用しており、柔軟なシナリオの作成が可能です。その反面、知らない言語であれば学習が必要になったり、効率の悪いシナリオを記述した場合は思ったとおりの性能がでないなどのデメリットもあります。Hedgehogでは、フォームUIによるシナリオ作成を提供しており、HTTPに関する知識を持つ方であれば直感的にシナリオを作成できます。DSLでシナリオを定義する場合に比べて実現可能なことや自由度は劣りますが、それが必要になることは稀であり、ほとんどのケースではシンプルなフォームUIによるシナリオ作成で十分だと考えています。シナリオ作成のための学習は不要です。(でもヘルプはあります!)すぐに負荷試験を始められます。もし、実現できないシナリオがあれば是非お問い合わせください。
負荷試験をやったことのないお客様、現在の機能では希望の試験ができないお客様に向けて、Hedgehogを使った負荷試験のサポートをご用意しております。是非ご活用ください。
メール、Slack、電話で担当者が即時回答いたします。連絡先はご契約時にお伝えいたします。
メールサポート。24営業時間内で回答いたします。連絡先はご契約時にお伝えいたします。
トップページやシナリオ一覧に設置された「新規作成」ボタンからシナリオ作成画面へ遷移します。
以下がシナリオ作成画面です。矢印が指しているシナリオ名、基準URL、リクエストパスが必須入力項目になります。
https://example.com/ に対してのリクエストを例とします。シナリオ名は一覧に表示されますので、わかりやすい名前をつけてください。基準URLのホスト名には「example.com」を入力し、リクエストパスには「/」を入力します。これでシナリオとして実行できるようになりました。
ですが、負荷試験したいエンドポイントを1つ追加したくなりました。その場合は、矢印の指している「リクエスト追加」ボタンを押してください。リクエスト設定用のフォームが追加されます。
2つめのリクエストに「/list?p=1」を入力し、シナリオ名を変更しました。
ここで別ドメインのAPIにもアクセスしたくなりました。その場合は、「リクエスト追加」し、パス欄にドメインを含むURL全体を入力してください。
最後に以下の赤枠部分ですが、下に連なるリクエストをどの程度実行するかを指定します。デフォルトは10秒間繰り返します。セレクトボックスで「回数」を選択した場合は、その右にあるテキストフォームに記載された回数繰り返し実行します。
シナリオに問題がなければ、右上の「更新」ボタンを押すとシナリオが保存され、テストに利用可能なシナリオが作成されます。
https://example.com/form に設置されたフォームから、https://example.com/form/submit対してPOSTするシナリオを作成します。
1つめのリクエストには、フォームが設置された画面へののパスとして、/formを設定します。
「リクエスト追加」ボタンを押下し、POSTするリクエストを追加します。パスには「/form/submit」を設定し、メソッドをGETからPOSTに変更します。
メソッドがPOSTの場合は、「ボディ」タブが表示され、パラメータの送信方法をフォーム・Body・Body(変数)から選べます。今回はフォームからPOSTするシナリオを作成するため、「フォーム」を選択します。送信するパラメータを「追加」ボタンから追加します。
対象のフォームが、以下のHTMLだと仮定します。
<form> <input type="text" name="email" /> <input type="password" name="password" /> </form>フォームから送信される、email, passwordを以下の通り設定します。
以上でシナリオは完成です。ですが、実際にはフォーム内にCSRF対策用のトークンが埋め込まれていて、ケースが多いため、トークンの取得・送信に対応したシナリオに変更します。フォームのHTMLは以下だと仮定します。
<form> <input type="hidden" name="_token" value="yd9iu2256k" /> <input type="text" name="email" /> <input type="password" name="password" /> </form>1回目のリクエストのレスポンスから_tokenの値を取得するよう設定します。「レスポンス」タブを選択し、「追加」ボタンを押下してください。
一番左のセレクトボックスから「HTML(CSSセレクタ)」を選択します。その右のCSSセレクタに取得したい対象を取得する「input[name="_token"]」を入力します。(CSSセレクタで該当の要素を特定さえできれば良いです。)さらに右の属性に対して「value」を指定します。最後に右端のフォームに変数名として「token」を入力します。(変数名は、取得した値を後から参照するときの名前です。自分がわかる名前であれば自由につけられます)
取得した値を、次のリクエストのパラメータに含めます。「追加」ボタンからパラメータを追加し、左端のセレクトボックスから「セッション変数」を選択します。キー名に「_token」を入力し、右端のセレクトボックスから「token」を選択します。
以上でCSRFトークンの送信に対応したシナリオが完成です。
シナリオが作成できたら、テストを実行できます。シナリオ一覧からテスト実行ボタン()を押してください。テスト実行前の画面に遷移します。

試験を実施する前にはドメインの保有者であることを確認する必要があります。初めてのドメインに対してのリクエストが含まれている場合は、未認証のドメインの前に が表示されます。ドメインをクリックすると認証ダイアログが開きます。

「認証」ボタンをクリックすると、記載されたURLに対してリクエストが飛び、アクセスに成功すると認証が完了します。認証に成功するとドメインが緑色に変わり、「開始」ボタンがクリックできるようになります。

試験開始の準備ができたら、その他の項目を入力していきます。「開始時間」はテスト実行タイミングです。すぐにテストを開始するか、指定日時に開始するかを設定できます。「シナリオ実行モード」は作成したシナリオを1度だけ実行するか、指定した時間繰り返すかを指定できます。今回は1回のみを選択しますが、「繰り返し実行」についてはヘルプを参照してください。「仮想ユーザ」はセッションの数です。「秒間リクエスト数」には、秒間リクエストの上限を指定します。(注:複数台のサーバから負荷を生成する大規模なテストでは、誤差が発生します。)「起動方式」「時間指定」についてはそのままで大丈夫です。「開始」ボタン押下で試験が開始します。