jmeter实现翻页功能_JMeter定制功能实现
jmeter實現翻頁功能
JMeter提供了可在采樣器中使用的功能。 在編寫復雜的測試計劃時,您會覺得JMeter缺少某些方法。 您使用Beanshell腳本定義自己的自定義方法。 JMeter調用Beanshell解釋器來運行腳本。 只要您不產生高負載(大量線程),此方法就可以正常工作。 但是,一旦JMeter嘗試產生高負載,它就會耗盡資源并大大降低速度。 如果改用JMeter自定義函數,則JMeter可以輕松生成高負載。 唯一的問題是弄清楚實現要求以及如何與JMeter集成。 JMeter幾乎沒有提供任何有關自定義函數實現的文檔。 但是在瀏覽了JMeter源代碼和Googling之后,我找到了實現JMeter自定義功能的方法。
定制方法實施
讓我們深入了解實現的細節。 有一些應滿足的要求。 這些如下。
- 函數類包名稱必須包含“ .functions”。
- 函數類必須擴展AbstractFunction并實現execute(),setParameters(),getReferenceKey()和getArgumentDesc()方法
- 制作jar文件并放入<JMETER_HOME> / lib / ext目錄,然后重新啟動JMeter
包裹名字
JMeter的設計使其無需GUI(通用用戶界面)即可運行。 它加載核心類并執行測試計劃。 它為核心類提供了較高的優先級,并且更喜歡先加載這些類。 為了確保GUI和核心/后端不混合,它根據程序包名稱隔離類。 它嘗試遵循約定,即函數實現類應存在于包中,該類應在其中包含“函數”字,例如com.code4reference.jmeter.functions 。 它在后臺查找jmeter.properties文件,并嘗試查找以下屬性值。
classfinder.functions.contain=.functions.如您所見,提供的默認值是".functions." 。 您可以將其更改為其他名稱,但必須確保自定義函數類包名稱中應存在相同的詞。 最好保留默認值。 一旦定義了包,就可以編寫Function實現類了。
函數實現類
在編寫此類時,您必須實現以下方法。
JMeter功能助手
源代碼
在下面的示例源代碼中,我實現了一個名為__TimeInMillis函數。 在使用提供的偏移量調整當前時間后,此方法以毫秒為單位返回時間。 例如,當當前時間是1371413877000時,此$ {__ TimeInMillis(2000)}方法調用將返回1371413879000。
package com.code4reference.jmeter.functions;import java.util.Collection; import java.util.LinkedList; import java.util.List; import java.util.Calendar;import org.apache.jmeter.engine.util.CompoundVariable; import org.apache.jmeter.functions.AbstractFunction; import org.apache.jmeter.functions.InvalidVariableException; import org.apache.jmeter.samplers.SampleResult; import org.apache.jmeter.samplers.Sampler; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger;public class TimeInMillis extends AbstractFunction {private static final List<String> desc = new LinkedList<String>();private static final String KEY = "__TimeInMillis";private static final int MAX_PARAM_COUNT = 1;private static final int MIN_PARAM_COUNT = 0;private static final Logger log = LoggingManager.getLoggerForClass();private Object[] values;static {desc.add("(Optional)Pass the milliseconds that should be added/subtracted from current time.");}/*** No-arg constructor.*/public TimeInMillis() {super();}/** {@inheritDoc} */@Overridepublic synchronized String execute(SampleResult previousResult, Sampler currentSampler)throws InvalidVariableException {//JMeterVariables vars = getVariables();Calendar cal = Calendar.getInstance();if (values.length == 1 ) { //If user has provided offset value then adjust the time.log.info("Got one paramenter");try {Integer offsetTime = new Integer(((CompoundVariable) values[0]).execute().trim());cal.add(Calendar.MILLISECOND, offsetTime);} catch (Exception e) { //In case user pass invalid parameter.throw new InvalidVariableException(e);} }return String.valueOf(cal.getTimeInMillis());}/** {@inheritDoc} */@Overridepublic synchronized void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {checkParameterCount(parameters, MIN_PARAM_COUNT, MAX_PARAM_COUNT);values = parameters.toArray();}/** {@inheritDoc} */@Overridepublic String getReferenceKey() {return KEY;}/** {@inheritDoc} */@Overridepublic List<String> getArgumentDesc() {return desc;} } 我重點介紹了代碼的一些關鍵部分。 在第19行,設置功能名稱,如在第26行提供功能描述。 在第60行,檢查參數數量,并確保已提供正確數量的參數。 代碼的主要部分在44到51之間突出顯示,其中當前時間被調整并作為字符串對象返回。 如果您有興趣檢查其他函數的實現,那么請檢查github / Code4Reference上存在的整個源代碼。 編寫代碼后,將其編譯并制作jar文件并將其放置在<JMETER_HOME> / lib / ext目錄中。 你可以得到一個樣本Gradle腳本構建jar文件這篇文章 。 如果您不了解Gradle,則可以使用命令生成jar文件 。 通過在Eclipse中導出包并選擇導出目標作為Jar文件,是創建jar文件的最簡單方法。
翻譯自: https://www.javacodegeeks.com/2013/06/jmeter-custom-function-implementation.html
jmeter實現翻頁功能
總結
以上是生活随笔為你收集整理的jmeter实现翻页功能_JMeter定制功能实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云幸福–如何在几分钟内安装新的OpenS
- 下一篇: 显示器有拖影重影解决办法电脑显示重影如何