📔 Gatling で複数ユーザ認証した情報を元に負荷テストする

はじめに 今までは JMeter でしか負荷テストを行ったことなかったのですが、最近 PlayFab で CloudFunction の負荷テストを行う際に Gatling を初めて利用しました。 今回の負荷テストでは、各ユーザ毎のレートリミットの制限等も考慮した実利用時を想定した形で行うことが要求されたため、単一ユーザの認証情報を使い回すことは望ましくないと考えました。そこで、複数の認証済みユーザの情報を元に PlayFab の CloudFunction の負荷テストを実施したのですが、若干実装に苦戦したため手順について記事として残しておくことにしました。 また、本記事では Gatling のセットアップから記載していますが、該当コードやその説明を早く見たいという方は 複数ユーザ認証を行うテストシナリオを実装する 項目をご参照ください。 動作環境 macOS Big Sur Java OpenJDK 12.0.1 未インストールの方は事前に 公式サイトから OpenJDK をインストールしてください Gatling の環境を整える Gatling には 2 種類のセットアップ方法が用意されています。 スタンドアローンなツールを直接公式サイトからダウンロードするか、Maven や sbt といったツール経由でダウンロードするか選択できます。 どちらの方法でセットアップするかについてですが、新規でテストケースを Gatling で書いていく用途だと前者になり、既存のプロジェクトに Gatling を取り込む用途だと後者になるかと存じます。 本記事では、前者のスタンドアローンなツールを直接公式サイトからダウンロードする方法で Gatling の環境をセットアップします。 公式サイトから Gatling をダウンロードする Gatling のトップページ に遷移して、ページを 2 Ways to use Gatling の項目までスクロールした後、ダウンロードボタンをクリックします。 DOWNLOAD GATLING'S BUNDLE にある DOWNLOAD NOW ボタンをクリックする...

March 15, 2021 · 6 分 · Me

📝 Jest で private readonly な値をモックする方法

Jest でクラスの private readonly な変数を差し替えたい時に若干引っかかったのでメモっておきます。タイトルでは Jest とありますが、本記事の内容は JavaScript でモックする際の有効な手法の 1 つとして利用することが可能です。 結論から言うと変数を差し替えたい場合は下記のような記述になります。 const mockValue = ""; Object.defineProperty(service, "privateReadOnlyValue", { value: mockValue, }); ちなみに関数を差し替えたい場合は下記のような記述になります。 Object.defineProperty(service, "privateSumFunction", { value: jest.fn((a, b) => a + b), }); 各種テストケースで使いまわしているインスタンスの private readonly な変数をモックした場合、値をリストアしたいケースも出てきました。その場合の記述としては、下記が有効でした。 // tmpService 変数に service インスタンスを clone して利用する const tmpService = Object.create(service); Object.defineProperty(tmpService, "privateReadOnlyValue", { value: "", }); 参考リンク Object.create() - JavaScript | MDN Mocking read-only properties for a class · Issue #2227 · facebook/jest

March 7, 2021 · 1 分 · Me