自動化gatlingで負荷テスト-続編!


このポストは、.私はあなたが何を考えている知っている、続編は常に不自由ですか?ええ、それは通常本当です.私がその傾向を逆にすることができることを願っています!このポストで、我々はgatlingのnitty grittyに少しより深くなります.
私はパフォーマンステストの一般的な概要を開始し、gatlingレコーダーを使用してgatlingスクリプトを構築するためにハト.それらの例では、我々はgatling束を使いました、しかし、もう一つの方法があります.
ガトリングバンドルは、スタンドアロンツールであり、実際には、エンターテインメント環境でガットリングを活用するときに使用されるツールではありません.GatlingもMaven、SBT、またはGradleなどのビルドツールで使用することができます.Mavenのアーキタイプを使って新しいMavenプロジェクトをブートしましょう.

Gatlingのための新しいプロジェクトをブートストラップする


IDEを使用してアーキタイプを使用して新しいプロジェクトを作成できますが、コマンドラインから実行します.
mvn archetype:generate -DarchetypeGroupId=io.gatling.highcharts -DarchetypeArtifactId=gatling-highcharts-maven-archetype
グループID、artifactid、バージョン、およびパッケージを入力するよう求められます.したら、あなたの選択を確認すると、新しいプロジェクトが作成されます.その後、Scala SDKを設定する必要があります.

また、あなたのマークをする必要がありますsrc/test テストソースとしてのフォルダ.

あなたを見てくださいpom.xml ファイル.gatlingの依存関係が表示されます.

レコーダーを動かす


私の中で、私はbin ガトリング束のフォルダ.Mavenプロジェクトを使用すると、実行して開くことができますsrc/test/resources/Recorder.scala . 数秒後には、スクリプトを記録するために使用することができますレコーダーユーティリティを参照してください.一度開いた後、レコーダー機能は、私が以前に説明したのと同じです.レコーダーユーティリティは次のようになります.

私は、ちょうどMavenプロジェクトからレコーダーを動かす方法をあなたに示しました.だから今ではレコーダーを使用する時間ですか?すみません、プロットねじれ!
レコーダーは、実行されるスクリプトを生成するために使用することができますが、もちろん、生成されたコードが何をしているかを理解することは重要です.imhoレコーダーだけではガトリングであなたを得るために十分ではありません.代わりにレコーダーを使用して、ゼロからスクリプトを作成しよう!(レコーダーのデモを参照してください)

最初のスクリプトをゼロから書く

  • スクリプトを作成するために、私はIntellijアイデアのコミュニティ版を使用します.あなたがすでにそれを持っていないならば、あなたはそうすることができますdownload インストールします.インストールしたら、以前作成したプロジェクトを開きます.
  • 新しいパッケージを作成するsrc/test/scala フォルダ名scripts .
  • 新しいパッケージを作成するHelloGatling と編集用に開きます.これは私たちのスクリプトになります.

  • すべてのgatlingスクリプトのために必要とされる2つの輸入品があります.
    import io.gatling.core.Predef._
    import io.gatling.http.Predef._
    

  • クラスはgatlingしているスクリプトにgatlingのシミュレーションクラスを拡張する必要があります.
    class HelloGatling extends Simulation {
    
    }
    

  • 現在、我々は我々のクラスで働き始める準備ができています.ベースURLを定義し、JSONフォーマットのデータを送信するためにヘッダーを設定します.
    val httpConfig = http
        .baseUrl("http://computer-database.gatling.io")
        .header("Accept", "application/json")
    

  • 今、我々はシナリオを構築する準備ができています.このデモについては、スクリプトのgatlingサンプルのWebサイトにアクセスします.まず最初にホームページにアクセスしましょう.
    val myScenario = scenario("Add a new computer scenario")
       .exec(
         http("load the Home Page")
           .get("/")
       )
    
    このコードを使用すると、1つのステップでシナリオを作成しました.我々は、シナリオのための、そして、ステップのためにテキスト説明をします.これらの説明は、ガトリングレポートに表示されます.
    The get ステートメントはホームページにアクセスします.

  • 今、我々は[ 1 ]が新しいコンピュータページを加えて、[ 2 ]ポストを新しいコンピュータにアクセスする残りのステップを加えることができます.完全なシナリオは次のようになります.
    val myScenario = scenario("Add a new computer scenario")
      .exec(
        http("load the Home Page")
          .get("/")
      )
      .pause(5)
    
      .exec(
        http("get the Add New Computer page")
          .get("/computers/new")
      )
      .pause(5,10)
    
      .exec(
        http("Post the new computer")
          .post("/computers")
          .formParam("name", "Ionic Defibulizer")
          .formParam("introduced", "2020-01-01")
          .formParam("discontinued", "2020-06-30")
          .formParam("company", "37")
      )
    
    2つの新しい手順に加えて、我々はまた、それらの間の一時停止を追加しました.pause(5) ウィルポーズ5秒pause(5,10) 5秒と10秒の間の時間のランダムな量を一時停止します.一時停止時間がどのようにユーザーがページと対話するかをシミュレートすることです.現実的な一時停止の時間は現実的なシナリオを構築するために重要です.

  • OK私たちのシナリオを構築している.今私たちはどのようにユーザーが追加される定義する必要があります.このスクリプトでは、10人の同時実行ユーザを30秒間実行します.setUp(myScenario.inject(constantUsersPerSec(10) during (30 seconds)).protocols(httpConfig))また、Scalaからdurationintをインポートする必要がありますseconds 解決する
    import scala.concurrent.duration.DurationInt
    
    Gatlingユーザーを追加する方法の数を提供します.チェックアウトアウトdocumentation 詳細は
  • そして、我々はそれを持っています.最終的な製品は次のようになります.

    スクリプトの実行


    スクリプトを実行するには2、3の方法がある.最も簡単な方法はMavenコマンドラインからです.
    mvn gatling:test -Dgatling.simulationClass=scala.scripts.HelloGatling
    
    もう一つのオプションはsrc/test/resources/Engine.scala . これは私たちが使用したのと同じユーティリティですbin フォルダ.
    選択したメソッドにかかわらず、新しく作成したスクリプトが実行され、結果は次のようになります.

    包む


    それで、最初からあなたの最初のスクリプトがあります.これは、記録されたスクリプトとは全く異なるが、うまくいけば、どのようにMavenと新しいガトリングプロジェクトを作成するためのより良い理解を持って、いくつかの明確なスクリプトの内側の作業に.