2017-04-16 25 views
0

セレン/ junitのテストケースで記録されたjmeterスクリプト(複数のユーザーによって記録された一連のアクションによって記録された負荷をテストする)を統合する方法はありますか?私はちょうどそのjavaを使ってそのセレン/ junitテストケースを実行し、それは私にjunitレポートのパフォーマンス結果を与えるのですか? セレンのwebdriverをjmeterに統合する方法を説明する記事を見つけましたが、それ以外の方法はありません。junitテストからjmeterを起動する

+0

このようなことは一度も聞いたことがありませんが、一般的にJMeter APIとJUnit Runnerでは可能です。小さな仕事ではありません。代わりにJenkinsプラグインを使用することをお勧めします。https://wiki.jenkins-ci.org/display/JENKINS/JMeter+Plugin –

+0

あなたは何を求めているのか明確にすることができますか?最初に書かれたようにあなたの質問は絶対に意味がありません。 jmeterとseleniumは非常に異なるものに使われる2つのツールです.Junitは単なるテストフレームワークです。あなたは正確に何をしようとしていますか? –

+0

@Corey Goldberg、OP質問(junitのjmeterテストを実行中)は意味があります。答えが大きすぎる –

答えて

0

あなたは例のコードは次のようになり、JMeter Java APIを使用して、既存のJMeterのテストを実行することができます。

import org.apache.jmeter.engine.StandardJMeterEngine; 
import org.apache.jmeter.reporters.ResultCollector; 
import org.apache.jmeter.reporters.Summariser; 
import org.apache.jmeter.save.SaveService; 
import org.apache.jmeter.util.JMeterUtils; 
import org.apache.jorphan.collections.HashTree; 

import java.io.File; 

public class JMeterFromCode { 

    public static void main(String[] args) throws Exception { 

     // JMeter Engine 
     StandardJMeterEngine jmeter = new StandardJMeterEngine(); 

     // Initialize Properties, logging, locale, etc. 
     JMeterUtils.loadJMeterProperties("/tmp/jmeter/bin/jmeter.properties"); 
     JMeterUtils.setJMeterHome("/tmp/jmeter"); 
     JMeterUtils.initLogging();// you can comment this line out to see extra log messages of i.e. DEBUG level 
     JMeterUtils.initLocale(); 

     // Initialize JMeter SaveService 
     SaveService.loadProperties(); 

     // Load Test Plan 
     HashTree testPlanTree = SaveService.loadTree(new File("/tmp/jmeter/bin/test.jmx")); 

     Summariser summer = null; 
     String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary"); 
     if (summariserName.length() > 0) { 
      summer = new Summariser(summariserName); 
     } 


     // Store execution results into a .jtl file 
     String logFile = "/tmp/jmeter/bin/test.jtl"; 
     ResultCollector logger = new ResultCollector(summer); 
     logger.setFilename(logFile); 
     testPlanTree.add(testPlanTree.getArray()[0], logger); 

     // Run JMeter Test 
     jmeter.configure(testPlanTree); 
     jmeter.run(); 
    } 
} 

は交換してください:

  • /tmp/jmeterのすべての出現 - あなたのJMeterインストール
  • /tmp/jmeter/bin/test.jmxへのパスに - 記録されたJMeterスクリプトを含む.jmxファイルへのパス。
  • /tmp/jmeter/bin/test.jtl - JMeterのテストはMaven pluginを介して実行することができるよう多分あなたは簡単に統合ソリューションを見つけるでしょう、JMeterのテストを実行する可能性の詳細についてはFive Ways To Launch a JMeter Test without Using the JMeter GUIの記事を参照してください

.jtl結果ファイルの目的の場所とかセレンテストと一緒に Ant Task

+0

ありがとう、これは私が望んでいたものです!同じAPIを使用してレポートの結果に対してアサーションを付けることもできますか?たとえば、実行時間が2秒未満の場合はテストに合格する必要があります。 – CodeMaker

+0

JMeterテストプランでは、[Duration Assertion](http://jmeter.apache.org/usermanual/component_reference.html#Duration_Assertion)を使用して、 JMeterアサーションを3つの簡単なステップで使用する方法(https://www.blazemeter.com/blog/how-use-jmeter-assertions-3-easy-steps)を参照してください。 JMeter関連のコードをJUnitまたはTestNGテストにラップすると、次のようなことができます: 'long before = System.currentTimeMillis(); // jmeterコードの後ろに= System.currentTimeMillis(); if((after-before))> 2000){Assert.fail( "Duration of 2 seconds exceeded");} ' –

関連する問題