sitateru tech blog: flood

sitateru tech blog

シタテルの技術やエンジニアの取り組みを紹介するテックブログです。

ラベル flood の投稿を表示しています。 すべての投稿を表示
ラベル flood の投稿を表示しています。 すべての投稿を表示

2020年4月30日木曜日

Flood Element でブラウザベースの負荷テスト

4月 30, 2020
どうも朝野です。
少し前に負荷テストツールのFlood Elementというものを使ってみたので、紹介しようと思います。

まずはCLIをインストールします。npmかHomeBrewでインストールできます。
$ npm install -g @flood/element-cli
$ brew install flood-io/taps/element

CLIを使ってプロジェクトを作成、テストファイルを追加します。
$ element init
$ element generate some-test.ts

テストファイルにはブラウザ上での操作を書いていきます。elementはpuppeteerを利用しているので、書き方はかなりpuppeteerに近いですね。
googleのトップページにアクセスして"flood element"と検索するならこのようなコードになります。
import { step, TestSettings, By, Until } from '@flood/element'

export const settings: TestSettings = {
  // userAgent: 'flood-chrome-test',
  loopCount: 10,
  screenshotOnFailure: true,
  clearCache: true,
  clearCookies: true,
  actionDelay: 1,
  stepDelay: 1,
  waitTimeout: 180
}

export default () => {
  step('Sample', async browser => {
    await browser.visit('https://google.com')
    await browser.click(By.css('form input[type="text"]'))
    await browser.sendKeys('flood element', Key.ENTER)
    await browser.wait(Until.elementIsVisible(By.css('div#search')))
    await browser.takeScreenshot()
  })
}
ローカルで実行するときは
$ element run some-test.ts
でOKです。
スクリーンショット等の実行結果は、 tmp/element-results/<テストファイル名>/<実行タイムスタンプ> 以下に記録されます。

ファイル前半で定義しているのは動作時の設定なのですが、そのあたり他詳しいことは公式ドキュメントを参照してください。


さて、テストファイルができたら負荷テストを実行してみます。負荷テストSaaSのFloodの出番です。
Scalable software starts here - Flood

elementはFloodがテストを書くために作ったライブラリなんですね。
ログインしたら"Stream"タブの"CREATE STREAM"をクリック、先ほどのテストファイルをアップロードします。


"CONFIGURE LAUNCH"をクリックすると実行設定に移ります。

テストファイルを実行するリージョンをまず選びましょう。
"Users per Region"がリージョンごとの並列実行数で、"Duration"は実行時間の上限のようです。(試した限りでは、設定したDurationより早くテストファイルの実行が終わったらその時点でテスト完了になりました)

あとは"LAUNCH TES"を押せば負荷テストが始まります。
結果はこのようにグラフで見られます。


ちなみにFloodの料金ですが、VUHという単位の使用量によって決まります。
Flood Load Testing Pricing
VUH = Virtual User Hourであり、 (実行時に設定したUser数) x (テストを実行した時間(15分単位)) というものです。例えば200ユーザーで30分間(=0.5時間)動かしたら 200x0.5=100VUH 、という要領ですね。

ひと月あたり500VUHまでは無料で、それ以降は500VUHごとに$22程度かかる従量課金制になっています。うっかり使いすぎないよう気をつけないといけないですね。


実際のブラウザアクセスを想定した負荷テストって難しそうだなと思っていたのですが、これで無料でもちょっとした実験はすることができました。

好きなサイトに大量のアクセスをかけることができてしまうので悪用厳禁なツールですが、簡単な負荷テストやってみたいという際には試してみてはいかがでしょうか。