ガトリングレポートのスクリーンショット | |
| 事業の種類 | プライベート |
|---|---|
サイトの種類 | Web アプリケーション向けのオープンソースの負荷およびパフォーマンス テスト |
| 利用可能 | 英語 |
| 設立 | 2015年7月1日 |
| 本部 | バニュー、フランス |
| サービスエリア | 全世界 |
| 創設者 | ステファン・ランデル ( CTO ) |
| 業界 | ソフトウェア |
| 製品 | ガトリング、ガトリングエンタープライズ(フロントライン) |
| メールアドレス | ガトリング |
| 発売 | 2012年1月13日 |
| 現在の状況 | アクティブ |
| 書かれた | Scala、Java、JavaScript |
Gatlingは、 Scala、Akka、Nettyをベースにした負荷およびパフォーマンステストフレームワークです。最初の安定版は2012年1月13日に公開されました。2015年、Gatlingの創設者であるStéphane Landelleは、オープンソースプロジェクトの開発に専念する会社(「Gatling Corp」)を設立しました。Gatling Corpの公式ウェブサイトによると、Gatlingは20,000,000回以上ダウンロードされています(2024年)。2016年6月、GatlingはGatlingのエンタープライズバージョンに機能を追加したGatling FrontLine(現在のGatling Enterprise)を正式に発表しました。[1]
このソフトウェアは、 Web アプリケーション、API、マイクロサービス を中心に、さまざまなサービスのパフォーマンスを分析および測定するための負荷テストツールとして使用するように設計されています。
Gatlingは、 ThoughtWorks Technology Radarで2013年と2014年に2度言及され、[2]「試してみる価値のあるツール」として、[2] 「パフォーマンステストを本番コードとして扱うという興味深い前提」に重点が置かれました。[2]
最新のマイナーリリースは、2024年4月23日に公開されたGatling 3.11です。[3]
概要
Gatling Corp は、Web アプリケーション用のオープンソース パフォーマンス テスト ツールである Gatling とそのエンタープライズ バージョンである Gatling Enterprise を開発しています。プロジェクトの目的は次のとおりです。
- 高性能
- すぐに使える HTML レポート
- Java、Scala、Kotlin、JavaScript、TypeScript 向けの開発者フレンドリーな DSL
用語
- シミュレーション:シミュレーションファイルには、テストのさまざまなシナリオ、そのパラメータ化、およびインジェクションプロファイルが含まれています。技術的に言えば、シミュレーションはScalaクラスです。[4] JavaとJavaScriptでのシミュレーションの例を次に示します。[5] [6]
//Java
パブリッククラスComputerDatabaseSimulationはSimulationを拡張します{
HttpProtocolBuilder httpProtocol = http . baseUrl ( "https://computer-database.gatling.io" ) . acceptHeader ( "application/json" ) . contentTypeHeader ( "application/json" );
ScenarioBuilder myFirstScenario = situation ( "My First Scenario" ) . exec ( http ( "Request 1" ) . get ( "/computers/" ));
{
setUp ( myFirstScenario . injectOpen ( constantUsersPerSec ( 2 ). during ( 60 )) ). protocols ( httpProtocol ); } }
//JavaScript
デフォルトシミュレーションをエクスポートする(( setUp ) => {
const httpProtocol = http . baseUrl ( "https://computer-database.gatling.io" ) . acceptHeader ( "application/json" ) . contentTypeHeader ( "application/json" );
const myScenario = situation ( "My Scenario" ) . exec ( http ( "Request 1" ) . get ( "/computers/" ));
setUp (
myScenario . injectOpen ( constantUsersPerSec ( 2 ). during ( 60 )) ). protocols ( httpProtocol ); });
- シナリオ:シナリオは一連のリクエストから構成されます。シミュレーション内の各シナリオには独自のインジェクションプロファイルを設定できます。[7]シナリオの例を以下に示します。[5] [6]
//Java
ScenarioBuilder myFirstScenario = situation ( "My First Scenario" ) . exec ( http ( "Request 1" ) . get ( "/computers/" ));
{
setUp ( myFirstScenario . injectOpen ( constantUsersPerSec ( 2 ). during ( 60 )) ). protocols ( httpProtocol ); }
//JavaScript
const myScenario = situation ( "My Scenario" ) . exec ( http ( "Request 1" ) . get ( "/computers/" ));
setUp (
myScenario . injectOpen ( constantUsersPerSec ( 2 ). during ( 60 )) ). protocols ( httpProtocol ); });
- グループ:グループは、シナリオの細分化として使用できます。また、機能的な目的 (ログイン プロセスなど) を持つ一連のリクエストでもあります。
- リクエスト: Gatlingは複雑なユーザー行動をシミュレートすることができます。この目的のために、テスト対象のシステムで適切なリクエストを生成します。以下はGatlingのリクエストの例です: [5] [6]
//Java
. exec ( http ( "リクエスト1" )
. get ( "/computers/" ));
//JavaScript
. exec ( http ( "リクエスト 1" )
. get ( "/computers/" ));
- インジェクションプロファイル:インジェクションプロファイルとは、テスト中にテスト対象システムに注入される仮想ユーザーの数と、その注入方法のことです。インジェクションプロファイルの例を次に示します。[5]
//Java
setUp (
myFirstScenario . injectOpen ( constantUsersPerSec ( 2 ). during ( 60 )) ). protocols ( httpProtocol );
//JavaScript
setUp (
myScenario . injectOpen ( constantUsersPerSec ( 2 ). during ( 60 )) ). protocols ( httpProtocol );
建築
Gatlingは、リソース効率を高めるために、パフォーマンステストツール用の完全に新しいアーキテクチャを実装しました。[8]これにより、1台のマシンで1秒あたり多数のリクエストをシミュレートすることが可能になりました。[9]
コンポーネント
レコーダー
Gatling には、シミュレーションをブートストラップするためのレコーダーが付属しています。
ドメイン固有言語
Gatlingには、シミュレーションやシナリオをコード化するシンプルで軽量な[10 ]ドメイン固有言語[2]が付属しています。これにより、ユーザーは多くのフックを通じてカスタム動作を追加できます。 [11]これにより、シミュレーションスクリプトが読みやすく、メンテナンスが容易になります。[12]
2024年にGatlingはJavaScriptとTypeScript用の新しいDSL(SDK)を導入しました。[13] JavaScriptとTypeScript SDKはGraalVMを使用してJavaScriptコードをJavaに変換し、 JVM上で負荷テストを実行します。JavaScriptとTypeScriptのサポートが追加されたことで、Gatlingは市場初の多言語負荷テストツールとなりました。
これは、Gatling のドメイン固有言語の例です(§ 用語も参照)。
val scn =シナリオ( "BasicSimulation" ) . exec ( http ( "request_1" ) . get ( "/" )) . pause ( 5 )
HTML レポート
各テストの終了時に、GatlingはHTMLレポートを生成します。レポートには以下のものが含まれます。[14]
プロトコルのサポートとプラグイン
以下のプロトコルを公式にサポートしています。
Gatlingのドキュメントには、プロトコルに依存しないことが記載されており、他のプロトコルのサポートを実装することが可能です。[15]以下は、コミュニティプロトコルのサポートの非網羅的なリストです。
プラグイン
Gatling には公式プラグインとコミュニティ プラグインが付属しています。次のプラグインと統合されます。
- Eclipse(ソフトウェア)やIntelliJ IDEAなどの統合開発環境(IDE)
- ビルド自動化ソフトウェア、またはApache Maven、Gradle、sbtなどのビルドツール
- Jenkinsのような継続的インテグレーションソリューション
以下はコミュニティ プラグインの非網羅的なリストです。
継続的インテグレーション
Gatlingによる自動化は、シミュレーションの保守性と関係しています。[16]特にDevOpsライフサイクルにおける他の開発ツールとの統合により、パフォーマンステストを産業化することが可能になり、つまりソフトウェア開発プロセスにおけるパフォーマンステストキャンペーンの実行を完全に自動化できるようになります。
メジャーリリースとマイナーリリース
ライセンス
GatlingはApache License 2.0 [18] に基づいて公開されています。これはApache Software Foundation (ASF) [19]によって作成された寛容な フリーソフトウェアライセンスです。
ソースコードはGitHubからアクセスできます。
ガトリングエンタープライズ
Gatling Enterprise は Gatling の商用バージョンです。Gatling Enterprise は独自のソフトウェアです。Gatling Corp. によって配布されています。
会社
Gatling は 2012 年にオープンソース プロジェクトとしてスタートしました。3 年後の 2015 年に、創設者の Stéphane Landelle が「Gatling Corp」という専門会社を設立しました。
オープンソースプロジェクトの起源
Gatling は、フランスの IT コンサルティング会社 eBusiness Information の 最高技術責任者 (CTO)だった Stéphane Landelle 氏によって設計されました。
専門会社の設立
2015 年に専門会社が設立されました。この会社は Gatling のユーザーに専門的なサービスを提供しており、2016 年からは Gatling のエンタープライズ バージョンである Gatling FrontLine も提供しています。
同社はパリ近郊のフランス・バニューに拠点を置いています。
ガトリング社は、2005年に設立されたイル・ド・フランスのビジネスクラスターであるSystematic Paris-Regionのメンバーであり、 [20]複雑系とICTに特化しています。[21] Systematic Paris-Regionは、デジタルイノベーションを促進するために、大規模なグループ、中小企業、大学、研究室を集めています。ガトリング社はSystematicのオープンソースワーキンググループのメンバーであり、2016年11月に中小企業の代表としてSystematicの取締役会 のメンバーに選出されました。
同社は、パリ オープンソース サミット (POSS、2015、2016、2017 年版)、Liferayの 2016 シンポジウム、Java ユーザー グループ (JUG) の会議、パリ Gatling ユーザー グループ、ニューヨーク Gatling ユーザー グループなどのイベントに参加しました。
参照
参考文献
- ^ 「Soirée de présentation Gatling FrontLine」。Gatling Paris ユーザーグループ(フランス語) 。Meetup。2017年9 月 1 日閲覧。
- ^ abcd Rodrigo Tolledo (2014 年 5 月 12 日)。「Gatling: パフォーマンステストを次のレベルに引き上げる」。ブログ。ThoughtWorks。2017年9 月 1 日閲覧。
- ^ 「3.11 の新機能」 2023-02-11。
- ^ Lyudmil Latinov (2017年6月9日). 「Gatlingによるパフォーマンステスト」. Automation Rhapsody . 2017年9月1日閲覧。
「シミュレーション」は実際のテストです。これは、Gatling の io.gatling.core.scenario.Simulation クラスを拡張する Scala クラスです。シミュレーションには、URL、リクエスト ヘッダー パラメータ、認証、キャッシュなどの適切な値でインスタンス化および構成された HTTP プロトコル オブジェクトがあります。シミュレーションには 1 つ以上の「シナリオ」があります。
- ^ abcd Gatling Corp. 「Gatling ドキュメント、初めての Java ベースのシミュレーションを作成する」。Gatling Corp. 2018 年1 月 12 日閲覧。
- ^ abc 「初めてのJavaScriptベースのシミュレーションを作成する」。Gatlingドキュメント。2023年12月16日。 2024年7月23日閲覧。
- ^ Lyudmil Latinov (2017 年 6 月 9 日)。「Gatling を使用したパフォーマンス テスト」。Automation Rhapsody。2017年9 月 1 日取得。
シナリオは、さまざまなアクション (POST/GET) とリクエスト パラメータを持つ一連の HTTP リクエストです。シナリオは、実際のユーザー実行パスです。負荷ユーザー数とランプアップ パターンで構成されます。これは、シミュレーションの「setUp」メソッドで行われます。複数のシナリオで 1 つのシミュレーションを形成できます。
- ^ Siva Prasad Rao Janapati (2017 年 2 月 1 日)。「Gatling: 軽量負荷テスト ツール」。パフォーマンス ゾーン。DZone。2017年9 月 1 日閲覧。Gatlingは
、他のオプションよりも負荷テストを実行するために消費するシステム リソースが少なくなります。
- ^ Lyudmil Latinov (2017 年 6 月 9 日)。「Gatling によるパフォーマンス テスト」。Automation Rhapsody。2017年9 月 1 日閲覧。
単一のノードから膨大な量のトラフィックを作成することができます。
- ^ Sree Tejaswi (2017 年 1 月 4 日)。「Gatling を使用した負荷テストの概要」。DevOps Zone。DZone。2017年9月 1 日閲覧。
これは、シミュレーションとシナリオが単純なドメイン固有言語 (DSL) でコード化された、簡単にインストールできるツールです。
- ^ 「チートシート」. 2021年4月20日.
- ^ Sree Tejaswi (2017 年 1 月 4 日)。「Gatling を使用した負荷テストの概要」。DevOps Zone。DZone。2017年9 月 1 日閲覧。これにより、
読みやすく保守しやすいパフォーマンス テスト コードを生成できます。
- ^ 「JavaScript SDK | Gatling ブログ」。gatling.io 。2024年 5 月 24 日閲覧。
- ^ Sree Tejaswi (2017 年 1 月 4 日)。「Gatling を使用した負荷テストの概要」。DevOps Zone。DZone。2017年9月 1 日閲覧。
- ^ "Gatling".ドキュメント. Gatling Corp. 2017 年9 月 1 日取得。
コア エンジンは実際にはプロトコルに依存しないため、他のプロトコルのサポートを実装することは完全に可能です。
- ^ Federico Toledo (2016 年 7 月 12 日)。「パフォーマンス テスト用の Gatling ツールのレビュー (Scala で記述)」。パフォーマンス ゾーン。DZone。2017年9 月 1 日閲覧。
言語、Scala、および Gatling の DSL は、テストの保守性の向上に重点を置いており、継続的インテグレーションに重点を置いている場合に最適です。
- ^ 「マイルストーン」。Gatlingのリポジトリ。GitHub。2017年9 月 1日閲覧。
- ^ 「ライセンス」。Gatlingのリポジトリ。GitHub。2017年9 月 1日閲覧。
- ^ New Media Rights ( 2008-09-12 )。「オープンソースライセンスガイド」。California Western School of Law。2015-11-28取得。BSD
、MIT、Apache ライセンスなどの「BSD ライク」ライセンスは非常に寛容で、ライセンスされたコードのオリジナル部分を独自のコードやドキュメント内のオリジナルの開発者に帰属させる以上のことはほとんど要求しません。
- ^ (フランス語) Systematic Paris-Région アーカイブ 2013-02-17 at archive.today
- ^ (フランス語で) Qui sommes-nous?
