关于jmeter:JMeter-如何快速实现-gRPC-接口请求

JMeter 是一个弱小的开源工具,因其在软件开发畛域内提供性能和压力测试的能力而受到赞美。它因兼容 gRPC 服务而展现出其多功能性,感激可取得的插件,这进一步加强了其实用性。 应用 JMeter 进行 gRPC 测试的起步筹备阶段为了充分发挥 JMeter 对 gRPC 测试的后劲,首先须要正确设置环境。这包含下载根底的 JMeter,而后集成要害的 gRPC 插件,一个旨在将 JMeter 与 gRPC 性能联合的工具。此插件应被搁置在JMeter装置文件夹的lib/ext目录下,以保障无缝操作。 将插件搁置到指定地位为测试过程做好了筹备: 启动测试之旅装置实现后,启动 JMeter 就揭开了测试之旅的尾声。通过右键 -> 增加 -> 取样器 -> GRPC 申请创立一个新的线程组,为 gRPC 测试设置打下了根底。 在此阶段,精确填写以下必要信息至关重要: 服务器名称或 IP:服务器的端点。端口号:用于连贯的指定端口。SSL/TLS:是否须要 SSL/TLS 认证。Proto 根目录:proto 文件的地位。库目录(可选) :任何辅助库的寄存地位。残缺办法:要调用的确切服务和办法。元数据:须要的 token,特定格局为 key1:value1,key2:value2。截止工夫:指定的超时限度。随申请发送 JSON 格局数据:是否偏好 JSON 格局的申请。通过粗疏的设置和关注细节,JMeter 作为测试 gRPC 服务的严格平台,确保软件可能优雅地解决事实世界的压力。 总结装备了 gRPC 插件的 JMeter,从传统的负载测试工具转变为一个全面的解决方案,用于在各种条件下评估 gRPC 服务。这种共生关系不仅扩充了 JMeter 的适用范围,还为开发人员和测试者提供了进行彻底、事实压力测试的伎俩。从装置到为特定 gRPC 调用进行具体配置的过程,涵盖了一系列设置,容许对测试进行粗疏的方法论探讨。

February 27, 2024 · 1 min · jiezi

关于jmeter:软件测试JMeter常用配置元件剖析

引言性能测试是确保应用程序可能在不同负载条件下失常运行的关键步骤之一。Apache JMeter是一个弱小的开源工具,用于执行各种性能测试,包含负载测试、压力测试、功能测试等。在JMeter中,配置元件是性能测试场景中的重要组成部分,本文将深入探讨JMeter中一些罕用的配置元件,以帮忙初学者更好地了解和应用这一工具。 1. 线程组(Thread Group) 在JMeter中,线程组是测试场景的终点,它定义了测试中要模仿的用户并发数量、循环次数等。初学者须要理解如何正确配置线程组,以达到模仿实在用户行为的目标。 配置要点: 线程数(Number of Threads):定义并发用户的数量。循环次数(Loop Count):指定每个用户线程执行测试计划的次数。2. 配置元件(Config Element) 配置元件用于配置线程组的行为,影响所有线程。以下是一些罕用的配置元件: 2.1 CSV数据文件配置器(CSV Data Set Config) CSV数据文件配置器容许从内部文件中读取数据,将其利用于测试中的每个线程。这对于模仿具备不同输出的用户十分有用。 配置要点: Filename:CSV文件门路。Variable Names:定义CSV文件中的列名。2.2 HTTP申请默认值(HTTP Request Defaults) HTTP申请默认值容许在整个测试计划中共享默认的HTTP申请属性,缩小冗余配置。这是进步测试计划可维护性的重要工具。 配置要点: Server Name or IP:指定被测利用的服务器名称或IP地址。Path:定义申请的门路。3. 监控元件(Listener) 监控元件用于收集和展现测试后果。初学者须要理解不同的监控元件,以便无效地剖析性能测试数据。 3.1 查看后果树(View Results Tree) 查看后果树是一个实时监控和调试工具,用于查看每个申请的详细信息和响应。在调试测试计划时,这是一个十分有用的元件。 3.2 汇总报告(Summary Report) 汇总报告提供了对测试执行后果的汇总信息,包含总申请数、谬误数、均匀响应工夫等。这对于评估整体性能十分有帮忙。 总结JMeter的配置元件是性能测试过程中的要害组成部分,正确的配置能够使测试计划更具可维护性和可扩展性。初学者通过深刻了解线程组、配置元件和监控元件,将可能更好地利用JMeter进行无效的性能测试。心愿本文对初学者在学习JMeter时有所帮忙,更多详细信息可查阅JMeter官网文档。

February 21, 2024 · 1 min · jiezi

关于jmeter:软件测试JMeter-断言元件优化性能测试结果验证的得力工具

引言在进行性能测试时,验证响应后果的准确性是至关重要的。JMeter 提供了弱小的断言元件,使得测试人员可能在测试执行期间对申请的响应进行验证。本文将深入探讨 JMeter 断言元件的应用,为初学者提供实用的常识和实际领导。 什么是JMeter断言?在性能测试中,断言用于验证服务器响应是否合乎预期。JMeter 断言元件能够在每个取样器后增加,以查看响应的内容、响应代码、响应工夫等是否满足预期条件。断言的应用可能无效地辨认潜在的问题,并进步测试脚本的可靠性。 常见的JMeter断言类型响应断言(Response Assertion)响应断言是最罕用的断言类型之一。它容许测试人员定义字符串模式,用于匹配响应中的内容。如果响应中蕴含了不合乎预期的内容,响应断言将标记该申请为失败。 HTML断言(HTML Assertion)HTML 断言用于验证响应是否蕴含了正确的 HTML 格局。它可能查看 HTML 标签、属性等,确保响应的构造正确。 响应头断言(Response Headers Assertion)响应头断言用于验证响应的头部信息是否合乎预期。测试人员能够定义冀望的头部信息,如Content-Type、Content-Encoding等。 XML断言(XML Assertion)XML 断言用于验证响应是否合乎预期的 XML 构造。这对于测试蕴含 XML 数据的接口十分有用。 断言响应码(Response Code Assertion)断言响应码用于查看申请的响应码是否合乎预期。如果响应码与冀望的不统一,断言将标记申请为失败。 如何应用JMeter断言元件?步骤一:创立测试计划 在 JMeter 中,首先须要创立一个测试计划。这是整个性能测试的顶层构造,蕴含了所有的测试组件。 步骤二:增加线程组和取样器 在测试计划中增加线程组和取样器,定义并发用户的数量和测试场景。抉择适当的取样器,如 HTTP 申请取样器。 步骤三:增加断言元件 在每个取样器下方,右键抉择 "Add" -> "Assertions",而后抉择适合的断言元件类型。依据须要能够增加多个断言元件。 步骤四:配置断言参数 每个断言元件都有相应的配置参数,例如响应断言须要设置冀望的字符串模式。依据理论需要配置这些参数,确保断言元件可能正确验证响应。 步骤五:运行测试 配置实现后,运行测试计划。察看 JMeter 的测试后果,查看断言元件的后果。如果断言失败,将会在测试后果中显示详细信息。 JMeter断言元件的优化技巧正当抉择断言类型: 依据测试需要,抉择适合的断言类型。不同的场景可能须要应用不同的断言元件。应用多个断言: 在一个取样器下增加多个断言,以减少验证的准确性。例如,能够同时应用响应断言和响应头断言。灵便应用断言模式: 在响应断言中,能够应用含糊匹配、正则表达式等灵便的模式,以适应不同的状况。联合逻辑控制器应用: 能够联合逻辑控制器,依据不同的条件选择性地启用或禁用断言元件,使测试更加灵便。总结JMeter 断言元件是性能测试中必不可少的工具,通过验证响应后果的准确性,帮忙测试人员发现潜在的问题。初学者在应用 JMeter 断言元件时,应重视抉择适合的断言类型、把握配置参数,并通过理论运行测试计划来深刻了解断言的作用。 通过学习和实际 JMeter 断言元件的应用,初学者将可能更好地把握性能测试的基本原理和实际操作,为我的项目的性能优化提供无力反对。在一直的实际中,初学者将逐步相熟断言元件的灵活运用,进步对系统性能的剖析能力。

February 21, 2024 · 1 min · jiezi

关于jmeter:手把手教程在-Mac-电脑上快速安装-JMeter

Apache JMeter 是一个开源的负载测试工具,能够用于测试动态和动静资源,确定服务器的性能和稳定性。在本文中,咱们将探讨如何下载和装置 JMeter。 装置 Java(已装置 Java 的此步骤可跳过) 要装置 Java,请按一下步骤: 关上 Java 官网下载网站抉择您想要下载的 Java 版本,下载以 .dmg 结尾的安装包,留神 JMeter 须要 Java 8+下载后关上安装包点击“装置”按钮即可下载 JMeter 要下载 JMeter,请遵循以下步骤: 关上 Apache JMeter 官网下载网站 。在 "Binaries" 下拉菜单中,抉择您想要下载的 JMeter 版本,能够抉择 zip 或 tgz 格局。点击下载按钮,期待下载实现。装置 JMeter 装置 JMeter 很简略,只需依照以下步骤操作: 解压下载的 JMeter 压缩文件。将解压缩后的文件夹挪动到您想要装置 JMeter 的地位。进入解压缩后的文件夹,并找到 bin 目录。在 bin 目录中,双击 jmeter 或运行 "./jmeter.sh" 文件,启动 JMeter。扩大浏览JMeter 响应断言详解:如何应用响应断言验证测试后果JMeter 中文版装置及入门指南

September 22, 2023 · 1 min · jiezi

关于jmeter:fastapiuvicorn-压测并发与TCP队列qbit

前言技术栈 操作系统 Ubuntu 20.04内核版本 Linux version 5.4.0-155-genericPython 3.11fastapi 0.99.1uvicorn 0.23.2uvicorn 监听端口 8003用 jmeter 压测 fastapi/uvicorn 接口程序,大量报错: java.net.SocketException: Connection resetorg.apache.http.NoHttpResponseException: ... failed to respond服务器 cpu 和内存应用都不高,揣测是 tcp 连贯队列的问题 解决步骤查看 tcp 连接数 ss -natp '( sport = :8003 )' | awk '{count[$1]++} END {for (word in count) print word, count[word]}'查看应用程序 uvicorn 的 TCP 全连贯队列大小 # ss -nltp '( sport = :8003 )'State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 2048 0.0.0.0:8003 0.0.0.0:* users:(("uvicorn",pid=172724,fd=14))这里的 Send-Q 就是全连贯队列大小,与 uvicorn 文档外面 backlog 2048 的默认值是对得上的 ...

September 5, 2023 · 1 min · jiezi

关于jmeter:Jmeter压测实战Jmeter二次开发之自定义函数-京东云技术团队

1 前言Jmeter是Apache基金会下的一款利用场景十分广的压力测试工具,具备轻量、高扩展性、分布式等个性。Jmeter已反对实现随机数、计数器、工夫戳、大小写转换、属性校验等多种函数,方便使用人员应用。如果在应用过程中存在和业务强耦合的罕用性能函数,在Jmeter不反对的状况下,那就须要独自开发自定义函数实现特定性能。 本文介绍如何开发Jmeter自定义函数实现疾速生成京东宙斯下单规范sign,同时深刻理解Jmeter的插件化机制及高扩展性个性。 2 开发筹备Java根底开发Maven根本应用开发依赖版本 JDK 1.8.0Maven 3.6.3Jmeter 5.4.33 自定义函数外围实现3.1 新建我的项目新建maven我的项目,这里我的项目名为:JSF_Sampler因为是基于Jmeter的扩大,须要依赖包Jmeter两个外围包,别离是:ApacheJMeter_coreApacheJMeter_javaApacehJMeter_functionspom.xml文件外围配置如下 <groupId>com.jd.jmeter.jsf</groupId><artifactId>JSF_Sampler</artifactId><version>1.0-SNAPSHOT</version><properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <jmeter-version>5.4.3</jmeter-version></properties><dependencies> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_core</artifactId> <version>${jmeter-version}</version> </dependency> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_java</artifactId> <version>${jmeter-version}</version> </dependency> <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_functions</artifactId> <version>${jmeter-version}</version> </dependency> </dependencies>3.2 继承实现AbstractFunction类实现类顺次实现以下几个步骤 1)新建实现类并继承 AbstractFunction 留神:实现类的包名必须蕴含xxx.functions.xxx,Jmeter应用命名规定实现实现类的加载。2)重写以下办法,每个办法的用处见下方代码正文 execute()setParameters()getReferenceKey()getArgumentDesc() /** * 京东宙斯 下单规范字段常量 */ private static final String APP_KEY = "app_key"; private static final String APP_SECRET = "app_secret"; private static final String ACCESS_TOKEN = "access_token"; private static final String TIMESTAMP = "timestamp"; private static final String V = "v"; private static final String METHOD = "method"; private static final String BUY_PARAM_JSON = "360buy_param_json"; /** * Jmeter中自定义的函数名,在Jmeter的函数助手中能够看到 */ private static final String FUNC_NAME = "__GenSignFunction"; /** * 自定义函数的形容,入参,出参,方便使用人员参考应用 */ private static final List<String> desc = new ArrayList<>(); static { desc.add("This function is used to generate the JD's JOS sign value"); } /** * 此为自定义函数外围实现类,其中,入参SampleResult为上次运行的后果,Sampler为以后的采集器; * 返回值为该函数的返回值 * @param sampleResult * @param sampler * @return * @throws InvalidVariableException */ @Override public String execute(SampleResult sampleResult, Sampler sampler) throws InvalidVariableException { // 入参解决 String param = String.valueOf((CompoundVariable)paramValues[0]); String signResult = paramHandler(param); return signResult; } /** * 按京东宙斯sign加密规定生成规范sign * @param param * @return */ public String paramHandler(String param){ Map<String,String> valueMap = new HashMap(); // 按&符号宰割 String[] paramArray = param.split("&"); for (int i = 0; i < paramArray.length-1; i++) { String key = paramArray[i].split("=")[0]; String value = paramArray[i].split("=")[1]; valueMap.put(key,value); }; // 京东宙斯规范sign String josGign = EncryptUtil.getSignature(valueMap.get("app_secret")+BUY_PARAM_JSON+valueMap.get("360buy_param_json") +ACCESS_TOKEN+valueMap.get("access_token") +APP_KEY+valueMap.get("app_key") +METHOD+valueMap.get("method") +TIMESTAMP+valueMap.get("timestamp") +V+valueMap.get("v") +valueMap.get("app_secret")); return josGign; }/*** 配置入参,jmeter函数助手入参*/ @Override public void setParameters(Collection<CompoundVariable> collection) throws InvalidVariableException { paramValues = collection.toArray(); }/*** 此办法返回自定义的函数名称*/ @Override public String getReferenceKey() { return FUNC_NAME; }/*** 此办法返回函数形容信息*/ @Override public List<String> getArgumentDesc() { return desc; }3.3 最终我的项目构造 ...

July 3, 2023 · 2 min · jiezi

关于jmeter:JMeter-初学者入门指南如何正确启动-JMeter

Apache JMeter 的启动办法Apache JMeter 是一个开源的性能测试工具,常被用来测试动态和动静资源以确定服务器的性能和稳定性。本文将介绍启动 JMeter 的办法。 Windows 零碎如果你曾经配置好 Java 环境,启动 JMeter 能够间接在 bin 目录下关上 ApacheJMeter.jar 文件。 你也能够通过关上 bin 目录下的 jmeter.bat 文件来启动 JMeter。 值得注意的是,在关上 JMeter 的同时,会主动关上一个运行 JMeter 的命令行窗口。请不要敞开这个窗口,否则会将 JMeter 也敞开掉。 Mac 和 Linux 零碎在终端中输出以下命令即可启动 JMeter: sh /path/to/jmeter/bin/jmeter.sh更加快捷的启动形式是,间接在终端中输出 jmeter 命令。你须要进行以下配置: 在 ~/.bashrc 文件中增加以下内容:<!----> export JMETER_HOME=/path/to/jmeter export PATH=$JMETER_HOME/bin:$PATH请将 JMETER_HOME 替换为理论的 Apache JMeter 所在目录。 如果你应用的是 zsh 终端,你须要批改 ~/.zshrc 文件,并增加与上述内容雷同的配置。 让终端配置失效:<!----> source ~/.bashrc或者在 zsh 终端中输出: source ~/.zshrc尝试一下吧,你会胜利启动 JMeter! 常识扩大学习更多对于 Jmeter 相干应用技巧。 Meter 如何配置环境变量 Meter 测试脚本编写技巧

June 9, 2023 · 1 min · jiezi

关于jmeter:jmeter-内置函数整理

jmeter 内置函数整顿明天在做加密的时候,发现jmeter 的MD5 函数在某些场景下竟然不能用,而后发现还有其余函数可代替,萌发了要整顿一下jmeter内置的函数,所有有了这篇文章,当为本人开辟下思路吧!!!函数函数阐明参数阐明应用场景案例${__base64Decode(,)}base64解码1、base64加密参数 2、须要保留的变量解密场景${__base64Decode(MTIzMjE0MTI0,)}${__base64Encode(,)}base64编码1、明文参数2、保留的变量加密场景${__base64Encode(string,)}${__BeanShell(,)}beanshell sampler 的长期代替计划1、beanshell 内容,特殊符号须要转意2、保留的变量变量较小时候的代替${__BeanShell(vars.put("yytest"\,"${__Random(1000,5555)}"),)} | ${__caseFormat(,,)} | 前面的版本删除了这个函数,看源码也没找到 || | |

April 12, 2023 · 1 min · jiezi

关于jmeter:Jmeter使用文档循环怎么用

Jmeter应用文档(循环怎么用)根底用法批改语言 Jmeter之界面语言设置上面应用简体中文的命名进行阐明关上日志 启动后,右上角有个黄色的感叹号图标,点击即可关上即时日志如果没有看到重启下jmeter,局部操作(如长期批改语言)可能导致图标隐没界面模式================================================================================Don't use GUI mode for load testing !, only for Test creation and Test debugging.For load testing, use CLI Mode (was NON GUI): jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]& increase Java Heap to meet your test requirements: Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch fileCheck : https://jmeter.apache.org/usermanual/best-practices.html================================================================================GUI模式:关上jmeter时,能够看到控制台打印了下面这段文字 GUI指客户端界面能够看到外面提醒不要应用GUI进行测试只有在创立和调试的时候应用CLI模式:即非GUI模式 jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]新建一个文件夹,按住"shift",点击右键,能够看到"在此处关上Powershell窗口" ...

March 3, 2023 · 2 min · jiezi

关于jmeter:使用JMeter的条件安装Java

首先下载JMeter,网址:https://jmeter.apache.org/dow...下载Binaries版,即可执行版,已编译好,下载解压就能够用。Source版是源代码版,须要本人编译成可执行文件。tgz压缩格局用于unix零碎。Windows零碎中用WinRAR也能解压tgz.双击 /bin/jmeter.bat,关上GUI mode来设计脚本。如果设计实现后,跑压力测试,要用Non-GUI mode.如果没有装置JAVA,在运行jmeter.bat后,会提醒 Not able to find Java executable or version.Please check your Java installation.按JMeter官网的阐明,起码要装置JRE,但最好装置JDK,因为用到JDK中的keytool。JMeter is compatible with Java 8 or higher. We highly advise you to install latest minor version of your major version for security and performance reasons.Because JMeter uses only standard Java APIs, please do not file bug reports if your JRE fails to run JMeter because of JRE implementation issues.Although you can use a JRE, it is better to install a JDK as for recording of HTTPS, JMeter needs keytool utility from JDK.那么keytool是什么呢?网络上的文章有写到: keytool 是 JDK 自带的一个密钥库管理工具。这里只用到了 keytool 的局部性能,包含生成密钥对,导出公钥等。keytool 生成的公钥/私钥对寄存到一个到了一个文件中,这个文件有密码保护,通称为 keystore。所以,应该是为了HTTPS协定所用。那么怎么下载JRE,或JDK呢?JRE,叫Java运行时环境,当初间接Java8,包含JVM+Java SE外围类库。JDK,叫Java开发工具包,包含 JRE+Java开发工具(java,javac,javadoc,...)JDK,又分为Java EE(企业版),Java SE(标准版),Java ME(小型版)。 按文章https://blog.csdn.net/wangpai...上所讲,JRE当初被蕴含JDK中,个别也不再独自下载。而Java EE曾经融入Java企业框架。Java ME曾经被放弃。当初的下载Java SE,与下载JDK,或者下载Java,都是同义词。OpenJDK,是指开源的JDK。 但在Java官网下载时,发现下载Java时,仍是JRE;而下载Java SE开发工具包,才是下载JDK。如果只装置JRE,没有keytool,那通过JMeter测试HTTPS接口会如何?应用HTTPS协定,就会返回location.replace(location.href.replace("https://","http://"));JMeter2.13时,返回的字符,最多承受204800JMeter5.5时,View Results Tree在后果之间切换时,会卡顿。JMeter4,能应用5.5创立的脚本,而且没有卡顿景象。装置JDK后,报错 Error occurred during initialization of boot layer ...Module java.activation not found开始认为是因为JRE和JDK一起装置的起因,但卸载了JRE,仍是报这个,起初百度,说是因为JMeter4太旧。换了JMeter5.0,能启动,也没有卡顿。但仍是不能应用HTTPS。起初查问,要应用HTTPS,要导入接口网站证书。这个证书须要应用keytool转化为store格局。参考文档如下:https://www.cnblogs.com/benpa...

October 28, 2022 · 1 min · jiezi

关于jmeter:Jemter压测工具安装使用总结

下载和装置配置JDK步骤一:1、下载 jdk,到官网下载 jdk,地址:www.oracle.com/technetwork/java/jav...2、装置 jdk,下载实现后,双击装置 步骤二:配置 jdk 环境变量右键计算机属性 -> 高级零碎设置 -> 零碎属性 -> 高级 -> 环境变量 -> 增加如下的零碎变量:变量名:【JAVA_HOME】变量值:【D:\Program Files\Java\jdk1.8.0_92】【jdk 装置门路】变量名:【path】变量值:【;% JAVA_HOME%\bin;】变量名:【CLASSPATH】变量值:【.;% JAVA_HOME%\lib\dt.jar;% JAVA_HOME%\lib\tools.jar;】 步骤三:在 cmd 中输出 java -version,查看是否显示 jdk 信息,确定是否装置胜利 下载安装下载地址:Apache JMeter - Download Apache JMeter 环境变量【变量名】JMETER_HOME【变量值】D:\Program Files\jmeter\apache-jmeter-5.5(jmeter 解压门路)【变量名】CLASSPATH【变量值】% JMETER_HOME\lib\ext\ApacheJMeter_core.jar;% JMETER_HOME%\lib\jorphan.jar;% JMETER_HOME%\lib\logkit-2.0.jar; 用法创立线程打算和线程组 设置线程数 模仿HTTP申请 HTTP信息头管理器抉择线程组:右键-->增加-->配置元件-->HTTP信息头管理器 导入CSV文件 提取Json增加json提取器:右键http申请-》增加-》后置处理器-》json提取器 查看提取后果——调试取样器:course_id=63 援用提取进去的参数:${courses_id} Json断言 常见问题1.org.apache.http.conn.HttpHostConnectExceptionHTTP申请 > 高级 > 实现:改为java https://blog.csdn.net/R_miss/... 2.TCP申请长时间无反馈起因:没有设置完结字符 解决办法:行尾(EOL)字节值设为125(“}”的ASCII码) ...

October 22, 2022 · 1 min · jiezi

关于jmeter:使用-jMeter-对-SAP-Spartacus-进行并发性能测试

Spartacus是一个基于 Angular 的店面,是为SAP Hybris Commerce/ SAP Commerce Cloud设计的。它应用REST API与Hybris Commerce交互。在初始阶段,它就提供了Hybris店面的大部分外围性能。Spartacus 是可扩大和可定制的。 Spartacus有一个解耦的架构,这意味着店面自身作为一个独立的实体,在它的OOTB个性之上能够有自定义个性。它通过REST API与SAP Commerce Cloud或任何其余SAP、非SAP工具进行交互,这使它成为一个独立的框架。它容许前端开发人员不再了解后端技术,他们所须要的惟一交互是通过web服务层,这使得开发、测试和部署单个平台更加容易。 咱们能够真正应用快捷的UI,即服务器端渲染和提早加载组件等。因为它不再是平台的一部分,所以能够独自部署,容许它独自扩大。 在Angular中,每个性能都作为一个独自的模块存在。如果在SmartEdit或CMS Cockpit中创立了一个新页面,你须要在Angular代码库中创立一个独自的站点页面。 2021 年国庆节期间的成绩。过后用的版本是 5.4.1: 启动之后间接报错: ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console... 换成 5.5 版本,关上文件报错: Problem loading XML from:'C:\Code\jmeter-projects\jerry-static\ssr\JerryStaticPagesTestPlan.jmx'. Cause:CannotResolveClassException: com.blazemeter.jmeter.RandomCSVDataSetConfigDetail:com.thoughtworks.xstream.converters.ConversionException: ---- Debugging information ----cause-exception : com.thoughtworks.xstream.converters.ConversionExceptioncause-message : first-jmeter-class : org.apache.jmeter.save.converters.HashTreeConverter.unmarshal(HashTreeConverter.java:66)class : org.apache.jmeter.save.ScriptWrapperrequired-type : org.apache.jmeter.save.ScriptWrapperconverter-type : org.apache.jmeter.save.ScriptWrapperConverterpath : /jmeterTestPlan/hashTree/hashTree/hashTree[5]/hashTree[3]/com.blazemeter.jmeter.RandomCSVDataSetConfigline number : 258version : 5.5 ...

July 2, 2022 · 1 min · jiezi

关于jmeter:如何在容器中使用jmeter做压测

为什么会有这样的需要,我也不晓得,没有需要就发明需要呗,间接开整: 首先上docker.hub上看看有没有现成的,关键字 alpine/jmeter ,一搜寻果然有: entrypoint.sh内容看不到,后面PATH曾经配置好,应该是间接执行的jmeter程序。先执行下试试: docker run -v /tmp/:/tmp/ alpine/jmeter:5.4.3 -n -t /tmp/test.jmx在服务器/tmp目录上先放上事后筹备好的测试计划文件(能够从jmeter的桌面ui版配置好后导出),-t参数指向这个打算文件,就能够运行起来了: summary + 5913 in 00:00:32 = 184.3/s Avg: 1287 Min: 74 Max: 7110 Err: 0 (0.00%) Active: 300 Started: 300 Finished: 0summary = 10128 in 00:01:01 = 166.0/s Avg: 1427 Min: 74 Max: 7110 Err: 0 (0.00%)summary + 98 in 00:00:58 = 1.7/s Avg: 31453 Min: 69 Max: 63303 Err: 0 (0.00%) Active: 298 Started: 300 Finished: 2summary = 10226 in 00:01:59 = 85.6/s Avg: 1714 Min: 69 Max: 63303 Err: 0 (0.00%)很不便很间接,如果要生成测试报告,也能够在命令前面带上 -l /tmp/result.jtl 或者是同时生成html页面报告文件 -l /tmp/result.jtl -e -o /tmp/jmeter ,而后用nginx指向上这个 tmp/jmeter ,就能够页面查看执行报告了: ...

July 1, 2022 · 2 min · jiezi

关于jmeter:使用-jMeter-对需要-User-Authentication-的-Restful-API-进行并发负载测试

在 SAP 官网 api.sap.com 里有大量公布的 Restful API,不便合作伙伴和客户自开发利用同SAP解决方案进行集成。 比方笔者最近做的一个我的项目,就是和国内一家专一于提供人脸识别技术解决方案的企业单干, 用户通过微信扫码从而实现人脸识别后,在用户受权的状况下,会调用SAP Marketing Cloud的contact API,生成对应的contact数据,并且将人脸识别得出的面部特色码通过Marketing Cloud扩大字段的形式一并存入contact数据中。 因为这个我的项目最初会在上海举办的 SAP 云大会上展现,所以过后笔者实现集成工作后心想,还是得提前测试一下咱们的 Marketing Cloud 在响应并发申请时的性能, 做到心里有数。 咱们在 SAP 上海云大会上演示的场景是,将 SAP Marketing Cloud的 Launchpad 通过大屏幕投影进去,参会嘉宾实现人脸识别后,Marketing Cloud contact创立API主动被调用,在系统生成contact数据,并且Launchpad contact tile的计数器加一。 所以下一步就是如何模仿大量对Marketing Cloud API的并发申请。 对于程序员来说,最容易想到的形式就是本人入手写一个程序来发送大量申请。笔者抉择的最简略的编程形式,在Java程序里新建大量线程,每个线程发送一个申请,当然也能够间接用JDK里提供的线程池库。 除了本人入手编写代码外,还能够重用一些API测试工具来达到同样的目标。Postman是一个API开发人员罕用的接口调试利器,它也有定义变量和繁难的编程性能: 能够通过称之为Collection Runner的性能,一键运行Collection里的多个申请。 笔者在这篇 SAP 社区博客里具体介绍过 Postman 的编程: Just a single click to test SAP OData Service which needs CSRF token validation 笔者在 成都 C4C开发团队时,组内共事就通知过我,jMeter 是另一个功能强大的基于Java的API压力测试工具。所以本文我抉择用jMeter来对API做压力测试。 下文介绍的内容须要大家对jMeter的应用有最根本的理解,如果还不太熟悉的敌人,能够先查阅jMeter的官网文档。 总的思路就是应用jMeter提供的Thread Group(线程组)和控制器这两个工具。Thread Group帮忙工具使用者实现了通过多线程发送HTTP申请的性能,比方下图设定的100,意思是通过100个线程同时发送申请。 ...

May 15, 2022 · 1 min · jiezi

关于jmeter:Jmeter压测MQTT结果分析

前言为了练习应用Jmeter压测MQTT,在内网环境搭建了EMQ v4.4。整个环境应用了6台PC,CPU是雷同型号,EMQ服务器和控制机采纳8G内存,负载机4G内存。EMQ服务器和负载机均为CentOS7.9。 负载机环境指标数值CPUIntel(R) Core(TM) i7-4770 CPU @ 3.40GHz内核4核8线程内存4GB零碎CentOS Linux release 7.9.2009 (Core)JDKopenjdk version "1.8.0_322"Jmeter5.4.3场景设计继续压测10分钟,公布音讯配置高斯随机定时器,4-8毫秒。由4台压测机发动申请。别离设置,线程数别离配置1000、2000、3000、4000、5000。 后果线程数申请数谬误数TPS最大响应工夫90%响应工夫1000 * 49627201016039.29830.002000 * 45797827101709659.73169370.003000 * 4628073818073510479.411820951.004000 * 433009901978695468.662878391.005000 * 41932047547283224.3748624587.00剖析在https://jmeter.apache.org/use...有阐明,对于Jmeter线程数的限度。原文摘录如下: A single JMeter client running on a 2-3 GHz CPU (recent CPU) can handle 1000-2000 threads depending on the type of test.2-3GHz的CPU,能反对1000-2000线程。而测试后果也映证了这一点。在压测过程中,负载机的内存使用率在70%-75%左右,然而CPU都爆满。

April 21, 2022 · 1 min · jiezi

关于jmeter:JMeter-测试组件介绍-物联网大并发测试实战-02

在本系列文章的上一篇中,咱们介绍了开源测试工具 JMeter,并以一个简略的HTTP测试为例一窥JMeter的能力。在本篇文章中,咱们将进一步介绍JMeter丰盛的组件,以帮忙大家构建简单场景的测试脚本。 JMeter的测试脚本在界面中以「树」的模式出现,保留后的测试脚本jmx文件自身也是xml格局。JMeter脚本树以测试计划(Test Plan)为根节点,所有的测试组件都会被蕴含在测试计划中。测试计划中能够配置被整个测试计划中的组件调用的自定义变量、线程组运行模式、测试中应用的库文件等。 在测试计划中应用多种测试组件,就能够构建丰盛的测试场景。JMeter中的测试组件大抵有以下几类:线程组、取样器、逻辑控制器、监听器、配置元件、断言、定时器、前置处理器、后置处理器。接下来将别离介绍,并对次要的组件进行具体阐明。 一、线程组线程组元件是所有测试计划的入口。所有的取样器和控制器必须放在线程组下。一个线程组能够看作一个虚构用户池,其中的每个线程都能够了解为一个虚构用户,多个虚构用户同时去执行雷同的一批次工作。每个线程之间都是隔离的,互不影响的。一个线程的执行过程中,操作的变量不会影响其余线程的变量值。 线程组的界面如下图: 在线程组界面中能够设置以下数据,进行线程组的管制: 取样器谬误后要执行的动作这几个配置项管制了「当遇到谬误的时候测试的执行策略」是否会继续执行。 持续:疏忽谬误,继续执行启动下一过程循环: 疏忽谬误,线程以后循环终止,执行下一个循环。进行线程:以后线程进行执行,不影响其余线程失常执行。进行测试:整个测试会在所有以后正在执行的线程执行结束后进行立刻进行测试:整个测试会立刻进行执行,以后正在执行的取样器可能会被中断。线程数线程数也就是并发用户数,每个线程将会齐全独立地运行测试计划,互不烦扰。测试中应用多个线程用于模拟对服务器的并发拜访。 ramp-up工夫ramp-up工夫用于设置启动所有线程所须要的工夫。例如:线程数设置为10,ramp-up工夫设置为100秒,那么JMeter将应用100秒使10个线程启动并运行,每个线程将在前一个线程启动后的10秒启动。 如果ramp-up值设置得很小、线程数又设置得很大,刚开始执行测试时会对服务器产生很大的压力。 循环次数设置完结火线程组中每个线程循环的次数。 提早创立线程直到须要默认状况下,测试开始的时候,所有线程就全副创立了。如果勾选了此选项,那么线程在须要用到的时候才创立。 线程组调度器调度器配置能够更灵便地控制线程组执行的工夫 (1)持续时间:管制测试执行的持续时间,以秒为单位。 (2)启动提早:管制测试在多久后启动执行,以秒为单位。 二、取样器取样器是用来模仿用户操作的,是向服务器发送申请、接管服务器响应数据的运行单元。取样器是蕴含在线程组外部的组件,因而它必须在线程组中增加。JMeter原生反对多种不同的取样器,如TCP取样器、HTTP申请、FTP申请、JDBC申请、Java申请等,每一种不同类型的取样器依据设置的参数向服务器收回不同类型的申请。 TCP取样器TCP 取样器通过TCP/IP来连贯指定服务器,连贯胜利后向服务器发送音讯,而后期待服务器回复。 界面如图: TCP取样器中能够设置的属性有: 1.TCPClient classname 示意解决申请的实现类。缺省应用org.apache.jmeter.protocol.tcp.sampler.TCPClientImpl, 应用一般文本进行传输。此外JMeter还内置反对BinaryTCPClientImpl和LengthPrefixedBinaryTCPClientImple, 前者应用十六进制报文,后者在BinaryTCPClientImpl的根底上减少了2个字节的长度前缀。 也能够通过继承org.apache.jmeter.protocol.tcp.sampler.TCPClient来提供自定义的实现类。 2.指标服务器设置 「服务器名称或IP」和「端口号」指定了服务器利用的主机名/IP地址和端口号。 3.连贯选项 Re-use connection:: 如果选中,这个连贯会始终处于关上状态,否则读取到数据后就敞开。敞开连贯:如果选中,这个连贯在TCP取样器运行结束之后就会被敞开。设置无提早:如果选中,Nagle算法将被禁用,容许小数据包的发送。SO_LINGER:用于管制在敞开连贯之前是否要期待缓冲区中的数据发送实现。行尾 (EOL)字节值:用于判断行完结的字节值,如果指定的值大于127或者小于-128,会跳过EOL查看。比方服务器端返回的字符串都是以回车符结尾,那么咱们能够将该选项设置成104.超时工夫: Connect Timeout:连贯超时Response Timeout:响应超时5.要发送的文本 申请发送的报文文本 6.登陆配置 设置连贯应用的用户名和明码 HTTP申请取样器HTTP取样器向web服务器发送HTTP/HTTPS申请。 1.名称和正文 2 .申请协定 向指标服务器发送申请时应用的协定,能够是HTTP、HTTPS或FILE,默认为HTTP。 3.域名或IP地址 申请发送的指标服务器名称或IP地址。 4.端口号 Web服务监听的端口号,HTTP默认端口为80,HTTPS默认端口443。 5.申请办法 发送申请的办法,罕用GET、POST、DELETE、PUT、TRACE、HEAD、OPTIONS等。 6 .门路 要申请的指标URL门路(不包含服务器地址和端口)。 7.内容编码 实用于POST、PUT、PATCH和FILE这几种申请形式,对申请内容进行编码的办法 8.更多申请选项 主动重定向:重定向不会被视为独自的申请,不被JMeter记录。追随重定向:每次重定向都被视为独自的申请,都会被JMeter记录。应用KeepAlive:如果选中,JMeter和指标服务器之间通信时会在申请头中退出Connection: keep-alive。对POST应用multipart/form-data:如果选中,将应用multipart/form-data 或 application/x-www-form-urlencoded发送申请。9.参数 JMeter将应用参数键值对来生成申请参数,并依据申请办法以不同办法发送这些申请参数。例如:GET,DELETE申请,参数会附加到申请URL。 10.音讯体数据 如果心愿传输JSON格局的参数,须要在申请头中配置Content-Type为application/json ...

December 14, 2021 · 2 min · jiezi

关于jmeter:压测工具笔记一之主流工具

@TOC 压测工具笔记(一)之支流工具:https://blog.csdn.net/weixin_...) 压测工具笔记(二)之JMeter:https://blog.csdn.net/weixin_... 简介在挪动利用和Web服务正式公布之前,除了进行必要的功能测试和平安测试,为了保障互联网产品的服务交付品质,往往还须要做压力/负载/性能测试。然而很多传统企业在试水互联网+的过程中,往往因为资源或产品迭代速度等起因漠视了这一块工作,导致新产品上线之后频繁呈现卡顿等重大影响用户体验的问题。那么互联网产品为什么要进行压力/负载/性能测试,又有哪些工具帮咱们实现呢,本文将为您细说打量。 压力/负载/性能测试之异同 在产品研发过程中,经常会混同压力/负载/性能测试这三者之间的区别,这三种测试到底有什么不同呢? 压力测试(StressTesting),也称为强度测试,通过模仿理论利用的软硬件环境及用户应用过程的零碎负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。压力测试须要确定一个零碎的瓶颈或者不能接管的性能点,来取得零碎能提供的最大的服务级别。艰深地讲,压力测试是为了发现在什么条件下您的应用程序的性能会变得不可承受。 负载测试(Load Testing)通常被定义为给被测系统加上它所能操作的最大工作数的过程,负载测试有时也会被称为“容量测试”或者“耐久性测试/持久性测试”,其指标是确定并确保零碎在超出最大预期工作量的状况下仍能失常运行。对于WEB利用来讲,负载则是并发用户或者HTTP连贯的数量。负载测试通过测试零碎在资源超负荷状况下的体现,以发现设计上的谬误或验证零碎的负载能力。在这种测试中,将使测试对象承当不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及继续失常运行的能力。 性能测试(PerformanceTesting)的目标不是去找零碎Bugs,而是排除零碎的性能瓶颈,并为回归测试建设一个基准。而性能测试的操作,实际上就是一个十分小心受控的测量剖析过程:“运行负载试验->测度性能->调试零碎”。在现实的状况下,被测利用在这个时候曾经是足够稳固,所以这个过程得以顺利进行。性能测试还有另一个指标就是建设一组被测系统的基准数据。利用在网络上的性能测试重点是利用成熟先进的自动化技术进行网络应用性能监控、网络应用性能剖析和网络预测。 尽管三种测试的目标截然不同,但其测试操作的环节都是基本一致的,因而一次测试过程中齐全能够蕴含性能测试、负载测试、压力测试三个方面的内容,所应用的测试工具往往大同小异。 市面上风行的压力/负载/性能测试工具多是来自国外,同时因为开发的目标和侧重点不同,其性能也有很大差别,上面就为您简略介绍几款款目前最常见的测试产品。 LoadRunnerLoadRunner是一种预测零碎行为和性能的负载测试工具,通过模仿理论用户的操作行为进行实时性能监测,来帮忙测试人员更快的查找和发现问题。LoadRunner实用于各种体系架构,能反对宽泛的协定和技术,为测试提供非凡的解决方案。企业通过LoadRunner能最大限度地缩短测试工夫,优化性能并减速利用零碎的公布周期。 LoadRunner提供了3大次要功能模块:VirtualUser Generator(用于录制性能测试脚本),LoadRunner Controller(用于创立、运行和监控场景),LoadRunner Analysis(用于剖析性能测试后果)既能够作为独立的工具实现各自的性能,又能够作为LoadRunner的一部分彼此连接,与其余模块共同完成软件性能的整体测试。 详见:《性能测试入门——LoadRunner应用初探》(http://www.admin5.com/article...) LoadRunner官网:https://saas.hpe.com/zh-cn/so... Apache JMeterJMeter作为一款广为流传的开源压测产品,最后被设计用于Web利用测试,现在JMeter能够用于测试动态和动静资源,例如动态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP服务器等等,还能对服务器、网络或对象模仿微小的负载,通过不同压力类别测试它们的强度和剖析整体性能。另外,JMeter可能对应用程序做功能测试和回归测试,通过创立带有断言的脚本来验证你的程序返回了你冀望的后果。为了最大限度的灵活性,JMeter容许应用正则表达式创立断言。 JMeter的特点包含对HTTP、FTP服务器、数据库进行压力测试和性能测试;齐全的可移植性;齐全 Swing和轻量组件反对包;齐全多线程;缓存和离线剖析/回放测试后果;可链接的取样器;具备提供动静输出到测试的性能;反对脚本编程的取样器等。在设计阶段,JMeter可能充当HTTP PROXY(代理)来记录浏览器的HTTP申请,也能够记录Apache等WebServer的log文件来重现HTTP流量,并在测试运行时以此为根据设置反复次数和并发度(线程数)来进行压测。 参考文章:《云智慧压测实战分享之JMeter工具应用初探》(https://segmentfault.com/a/11...) 官网链接:http://jmeter.apache.org/ LoadsterLoadster是一款商用负载测试软件,用于测试高负载下网站、Web利用、Web服务的性能体现,反对Linux,Mac和Windows等运行环境。 Loadster可能对Web利用/服务的Cookies、线程、头文件、动静表格等元素发动测试,取得Web在压力下的性能、弹性、稳定性和可扩展性等方面的体现。 官网链接:http://www.loadsterperformanc... CloudTestCloudTest 是一个集性能和功能测试于一体的综合压力测试云平台,专为古代网络和挪动利用测试而设计开发,CloudTest能够图形化实现判断、循环,整体加重了测试开发的工作量,缩短了开发工夫。CloudTest基于内存的剖析引擎,能够实时收集和展现数据,所有数据在3秒内汇聚显示。 CloudTest采纳虚拟化技术,完满的配合私有/公有云计算技术,无需过多的硬件,带宽资源的投入,人力保护老本简直为零,测试按需取得,近程接入,适宜多团队合作。各种规模的模仿老本均远远优于传统工具,同时大大缩短了测试周期。 官网链接:https://soasta.com/cloudtest 阿里云PTS阿里云性能测试(Performance Testing)是一个SaaS性能测试平台,具备弱小的分布式压测能力,可模仿海量用户实在的业务场景,让利用性能问题无所遁形。PTS平台特色包含提供压测机,无需装置软件;脚本场景监控简单化,省时、省力;分布式并发压测,施压能力无下限;疾速大规模集群扩容、反对几十万用户及百万级TPS性能压测;80%以上用户根本不须要破费额定的老本。 PTS分为两个版本,Lite版收费,企业版提供资源包月和按量付费两种计费形式,按量付费采纳阶梯价计算,满足企业客户多种压测需要。 官网链接:https://www.aliyun.com/produc... 压测宝压测宝是云智慧推出的面向实在用户行为与地区散布的全链路云端压力测试平台,通过云端服务器产生实在分布式用户拜访压力,模仿来自各地区用户接入后盾所带来的实在流量,有限靠近生产环境所面临的各种简单因素,测量实在的用户体验。通过集成云智慧利用性能治理和监控产品,帮忙实现基于实在用户行为的压测计划定制、压测过程中实时定位各环节利用资源及代码瓶颈,现场纠错,剖析利用性能肇因。 产品性能特色方面,压测宝通过独有的凋谢架构,反对各种支流网络协议;同时反对手机APP的脚本录制形式,能够大大降低压测脚本制作的工夫和难度。依靠压测宝以及欠缺的产品线,云智慧为用户提供了一站式压测服务,面向云计算时代的简单利用提供业余性能压测服务,帮忙企业主观评估利用性能容量,发现全链路性能瓶颈,对利用架构的调优及架构容量布局提供业余咨询服务,满足企业灵便多变的业务需要。目前压测宝已提供高达10万UV并发级别的压测服务。 官网链接:http://www.yacebao.com/ kylinTOP测试与监控平台kylinTOP测试与监控平台是一款B/S架构的跨平台的集性能测试、自动化测试、业务监控于一体的测试平台,它是深圳是奇林软件有限公司旗下的一款产品,该工具凋谢10个收费虚构用户可供学习和应用。在易用性上较好,录制脚本反对最新版本的浏览器,对谷歌和火狐都反对十分好。对一些https.的网站证书问题,都为用户主动解决好了,能够轻松录制。录制过程高效便捷这是其它性能工具无法比拟的。仿真能力上是目前业界做的最好的性能工具,能够做到齐全仿真浏览器行为,也就是单用户的HTTP申请瀑布图能够和浏览器器齐全一样。总之它是目前国内一款十分难得好用的性能测试工具,能够齐全代替国外的同类产品。目前在军工畛域、测评检测机构、国有企业、银行体系、大型企业有着宽泛的利用。反对的协定较多,尤其在视频畛域反对的协定十分多,具备独特的劣势。官网地址:http://www.70testing.com NeoLoadNeoLoad是Neotys出品的一种负载和性能测试工具,可实在地模仿用户流动并监督基础架构运行状态,从而打消所有Web和挪动应用程序中的瓶颈。NeoLoad通过应用无脚本GUI和一系列自动化性能,可让测试设计速度进步5-10倍,并将保护的脚本维持在原始设计工夫的10%,同时帮忙用户应用继续集成系统主动进行测试。 NeoLoad反对WebSocket、HTTP1/ 2、GWT、HTML5、AngularJS、Oracle Forms等技术协定,可能监控包含操作系统,应用服务器,Web服务器,数据库和网络设备在内的各种IT基础设施,同时能够通过Neotys云平台发动内部压力。 官网链接:http://www.neotys.com/product... WebLOADWebLOAD是来自Radview公司的负载测试工具,它可被用以测试零碎性能和弹性,也可被用于正确性验证(验证返回后果的正确性)。其测试脚本是用Javascript(和集成的COM/Java对象)编写的,并反对多种协定,如Web(包含AJAX在内的REST/HTTP)、SOAP/XML及其他可从脚本调用的协定如FTP、SMTP等,因此可从所有层面对应用程序进行测试。 WebLOAD存在收费和业余两个版本,收费版本反对50个虚构用户,专业版还提供更多的报告和协定供用户抉择。WebLOAD通常用作QA团队的独立运行工具,在开发周期的验证阶段,被测系统(System Under Test,SUT)投入实用之前,在模仿环境中对被测系统进行测试。 官网链接:http://www.radview.com/ LoadstormLoadstorm是一款针对Web利用的云端负载测试工具,通过模仿海量点击来测试Web利用在大负载下的性能体现。因为采纳了云资源,所以Loadstorm的测试老本非常低,用户能够在云端抉择创立本人的测试计划,测试规范和测试场景。 Loadstorm最多能够生成多达50000个并发用户,通过数以千计的云服务器发动拜访。应用Loadstorm不须要任何脚本常识,同时提供多样化的测试图表和报告模版,用于精确测量Web利用的各项性能指标,如错误率,均匀响应工夫和用户数量等。Loadstorm能够申请收费试用,但更多压力和性能须要开明高级帐户。 官网链接:http://loadstorm.com/ Load impact(开源)是一个在线能够收费测试网站负载能力,它就能够满足你的根本要求, 当然成为他的付费用户测试的我的项目将会更多。 Load impact是一款服务于DevOps的性能测试工具,反对各种平台的网站、Web利用、挪动利用和API测试。Loadimpact能够帮忙用户理解利用的最高在线用户访问量,通过模仿测试不同在线人数下网站的响应工夫,估算出服务器的最大负载。 Load impact的应用非常简单,只须要输出网址进行测试,便可统计出加载网站的一些具体数据。包含整体加载和站内图片,javascript, CSS等代码载入。能够在右侧列表抉择不同文件来同时对比最多三个对象的加载数据,并生成图表显示,不便网站设计者来剖析。测试实现之后,网站还能够存储测试过的统计数据。 官网链接:http://loadimpact.com/ ...

December 8, 2021 · 1 min · jiezi

关于jmeter:Jmeter断言之响应断言

jmeter 中有个元件叫做断言(Assertion),它的作用和 loadrunner 中的 检查点 相似;用于查看测试中失去的响应数据等是否合乎预期,用以保障性能测试过程中的数据交互与预期统一。 应用断言的目标:在 reques t的返回层面减少一层判断机制;因为 request 胜利了,并不代表后果肯定正确。所以通过断言,咱们不再会被 200 所蛊惑,而是能够通过断言,看到咱们申请是否真正的胜利。应用办法:给某个申请增加好断言增加对应的断言后果监听器1、响应断言地位: 增加断言: 2、如何查看断言是否正确:增加断言后果增加断言后果地位: 断言胜利与断言失败后果如何展现: 3、其余拓展断言匹配其余范畴、匹配其余模式 上面是我整顿的学习软件测试的一些电子书,有须要的小伙伴能够点击上面链接软件测试学习电子书

December 8, 2021 · 1 min · jiezi

关于jmeter:开源测试工具-JMeter-介绍

前言物联网正在以爆炸式的增长势头飞速发展。随着设施规模的一直增长和业务逻辑的愈发简单,物联网平台在正式上线前,须要通过对平台大量接入设施时的可用性和可靠性进行验证以确保零碎品质。物联网性能测试的价值与必要性因而逐步凸显。 一方面,性能测试为评估物联网零碎提供根据,从设计指标、可扩展性和可靠性多个维度加以验证;另一方面,性能测试也有助于物联网零碎的优化,帮忙及早发现零碎性能瓶颈,提供调优倡议。此外,性能测试还能够辅助容量打算的制订,为将来扩容打算提供参考。 而物联网零碎接入设施量大、协定多样化、集成架构简单、跨部门开发合作频繁这些特点,也使物联网性能测试面临着重重挑战。本系列文章将以基于 EMQ X 的物联网平台为例,介绍如何使用性能测试工具进行平台相干质量指标的验证与测试。 测试工具的抉择——JMeter 简介咱们抉择 JMeter 作为本次的测试工具。 JMeter 是 Apache 基金会旗下一款开源软件,次要通过模仿并发负载来实现性能测试,是目前开源社区的支流性能测试工具。其次要具备以下劣势: 内置多种协定的测试反对,如 TCP、HTTP/HTTPS 等。提供灵便的插件扩大机制,反对第三方扩大其余的协定。对于物联网零碎中品种繁多的协定,只需按 JMeter 的框架要求定制开发所需协定业务逻辑,就能不便地放入 JMeter 的插件库,应用 JMeter 既有性能进行该协定的性能测试。具备良好的社区反对。JMeter 的装置目前 JMeter 最新稳固版本是 5.4.1,因为 JMeter 是基于 Java 的,5.4.1 版本的 JMeter 须要事后装置 Java 8 及以上的反对(可从以下地址获取:https://www.oracle.com/java/t... )。 装置完 Java 后,从官网下载 JMeter:https://jmeter.apache.org/dow... 。 下载实现后解压,并进入解压后目录下的 bin 子目录。依据操作系统的不同,运行 jmeter.bat(Windows零碎)或 jmeter(Unix零碎)。如果一切顺利,JMeter 的脚本编辑界面将会出现在您的背后: 接下来,咱们以 HTTP 为例,看一下如何应用 JMeter 来构建并运行一个简略的测试用例。 增加虚构用户组(Thread Group):右击测试计划 > 增加 > 线程(用户)> 线程组 JMeter 应用单个线程来模仿一个用户,用户组 Thread Group 就是指一组用户,作为模仿拜访被测系统的虚构用户组。 「线程属性」中的「线程数」可用于配置虚构用户组的并发用户数,数值越高,并发量越大;「循环次数」可用于配置每个虚构用户执行多少次的测试。 ...

December 1, 2021 · 1 min · jiezi

关于jmeter:jMeter-Thread-group-对应的-constant-timer

我创立了一个 CSV Data set config,sharing mode 设置成 Current thread,即每个线程会别离从头至尾读取 csv 文件。 我设置的线程数和 loop 数都为 5: csv 文件的内容: 能够看到,第二个线程的第二次,第三次,第四次和第五次执行,都被提早到了很前面的地位。 如果在 thread group 层级加上一个 1秒的延时: 1000 ms 的含意是,每次 loop 的五个线程全副执行完之后,延时1秒,再开始第二次 loop 的执行。 当初就能看到,每次 loop 的每个线程,都读取 csv 文件的同一行,如下表 Label 列所示: 更多Jerry的原创文章,尽在:"汪子熙":

October 17, 2021 · 1 min · jiezi

关于jmeter:jMeter-里-CSV-Data-Set-Config-Sharing-Mode-的含义详解

CSV Data Set Config in Sharing Mode - Made Easy 为了使性能测试更加实在,最好不要在每个线程组中应用雷同的用户。因而,您须要一种办法来配置 Apache JMeter™ 以应用具备惟一用户数据的不同用户,并提出无关如何无效存储将在测试运行期间应用的用户数据的想法。 为此,JMeter 有一个十分有用的配置元素,称为 CSV 数据集配置。 “CSV 数据集配置”容许应用 CSV 文件作为内部数据源,您能够在其中保留惟一的用户数据,如姓名、电子邮件和明码。借助这个配置元素,JMeter 可能逐行读取 CSV 文件,而后应用拆分参数为不同的线程调配不同的值。 乍一看,所有“CSV 数据集配置”参数仿佛都是不言自明的。但其中之一可能并不像您设想的那么简略。此参数为“共享模式”。这篇博文将解释您须要理解的无关此选项的所有信息。 Understanding the JMeter CSV Data Config Element创立一个蕴含五个线程的 user group: 创立一个用户登录的 HTTP 申请: 您将看到“线程组”中的所有 5 个用户都应用雷同的电子邮件和明码执行了登录。 产生这种状况是因为这些值是在申请采样器中硬编码的,并且它们与该线程组中的所有 5 个用户相干: Multiple Users With Multiple Requests然而如果你想在不同的用户下登录怎么办?要模仿实在的 Web 应用程序负载,您可能心愿应用具备不同凭据的不同用户。为此,JMeter 具备“CSV 数据集配置”元素,旨在帮忙解决此类情况。 此元素的次要思维是它逐行读取 CSV 文件并将其值提供给以后线程组的线程。有许多有用的文章和实际会议通过不同的示例解释了这个 JMeter 元素。 但首先,让咱们创立一个简略的 CSV 文件,其中蕴含一个用户列表(每个用户在独自的一行),电子邮件和明码在每行之间用逗号分隔: csv 文件的内容: JMeterSharingModeUser1@example.com,123qweJMeterSharingModeUser2@example.com,234werJMeterSharingModeUser3@example.com,345ertJMeterSharingModeUser4@example.com,456rtyJMeterSharingModeUser5@example.com,567tyuJMeterSharingModeUser6@example.com,678yuiJMeterSharingModeUser7@example.com,789uioJMeterSharingModeUser8@example.com,890ipoJMeterSharingModeUser9@example.com,901opqJMeterSharingModeUser10@example.com,012pqw ‘All threads’ Sharing Mode让咱们将“CSV 数据集配置”元素增加到咱们的性能脚本中(右键单击“测试计划” -> 增加 -> 配置元素 -> CSV 数据集配置)。 在此元素中,您须要指定蕴含用户详细信息和变量名称的文件名,这些文件名将用作从文件中获取的这些值的容器。 ...

October 17, 2021 · 2 min · jiezi

关于jmeter:如何使用-jMeter-Parallel-Controller-并行控制器以及一些常犯的错误

How to Use the Parallel Controller in JMeter 本文咱们将剖析 Apache JMeter™ 的扩大之一 - 并行控制器(Parallel Controller)。 该控制器由 BlazeMeter 开发,作为对开源社区的奉献,由 Andrey Pokhilko 和 Artem Fedorov 开发。 并行控制器可用于创立并行申请。 并行申请是指不是一个接一个执行而是同时执行的申请。 例如,在加载脚本中解决 AJAX 申请或执行其余同步操作。 您能够应用 JMeter 插件管理器装置并行控制器。 它被称为并行控制器和采样器。 咱们还须要一个 Dummy Sampler 和一个 WebSocket 插件来进行此演示,您也能够在 JMeter 插件管理器中找到它们。 咱们将应用 Peter Doornbosch 的 Websocket Samplers。 当初咱们将通过几个例子来看看并行控制器的个性。 让咱们从一个简略的例子开始。 Using the Parallel Controller - A Simple Example首先,让咱们将控制器增加到测试计划中。 增加线程组后:右键线程组->增加->逻辑控制器->bzm-并行控制器 还要在控制器内增加两个 Dummy Sampler 并将雷同的个性利用到它们。右键单击 Parallel Controller -> Add -> Samplers -> jp@gc Dummy Sampler ...

October 17, 2021 · 2 min · jiezi

关于jmeter:0808-性能测试分布式

参考链接: https://testerhome.com/articl... 分布式的起因针对测试:单机无奈反对过大并发量,须要多机器同时执行并发来解决 分布式的原理主机 master 执行与散发脚本给 从机,汇总 从机 的执行后果 从机 salve 执行 主机 散发的脚本,并把数据反馈给主机 分布式实现1 配置主机 master批改配置文件 jmeter.properties在 jmeter.properties 文件中新增 remote_hosts 配置; 配置是 slave 主机的 ip 和 slave 主机里装置的 jmeter 的端口号 批改并删除正文:server.rmi.ssl.disable=true 敞开SSL,保障近程连贯通顺 #---------------------------------------------------------------------------# Remote hosts and RMI configuration#---------------------------------------------------------------------------# Remote Hosts - comma delimitedremote_hosts=127.0.0.1 # 填写从机的 ip:prot(能够不写,默认1098),多个从机以","宰割#remote_hosts=localhost:1099,localhost:2010server.rmi.ssl.disable=true # 敞开SSL,保障近程连贯通顺jmeter.bat(Windows平台) / jmeter(Linux/Mac平台)在 jmeter.bat 文件中新增新增 set rmi_host=-Djava.rmi.server.hostname=本机 ip 2 配置从机 salve从机必须提前装置好 JMeter,并配置环境变量 批改配置文件 jmeter.properties批改 slave 主机的 ip:remote_hosts={slave IP} 批改并删除正文:server.rmi.ssl.disable=true 敞开SSL,保障近程连贯通顺\凋谢三个默认端口 ...

October 6, 2021 · 1 min · jiezi

关于jmeter:0807-性能测试性能监听平台

参考链接:https://testerhome.com/topics... Grafana应用 docker 装置# 创立 influx 与 grafana 共用的文件映射卷:容器的寄存目录docker volume create influx_grafana# 拉取镜像docker pull registry.cn-hangzhou.aliyuncs.com/zhufc/influx_grafana:v6# 运行容器docker run -d -p 2003:2003 -p 8086:8086 -p 8085:8083 -p 3000:3000 registry.cn-hangzhou.aliyuncs.com/zhufc/influx_grafana:v6启动 Grafana# 进入容器docker exec -it 容器id bash# 启动/etc/init.d/grafana-server start# 重启/etc/init.d/grafana-server restart通过 ip:3000 进入 Grafana默认账户明码: admin admin InfluxDB上一步已同时装置好 InfluxDB,间接开始批改配置文件。 配置文件# 进入配置文件vim /etc/influxdb/influxdb.conf批改 hostname 凋谢端口 数据传输通道:bind-address = ":8086" InfluxDB启动端口:bind-address = ":8083" Jmeter 与 InfluxDB 关联端口:bind-address = ":2003" 配置数据库名称(默认为 jmeter) InfluxDB 相干命令# 启动 InfluxDB 数据库influxd# 应用 Ctrl + q + p 将数据库置于后盾运行# 进入 InfluxDB 数据库influx# 增加用户名与明码> CREATE USER root WITH PASSWORD '000000' WITH ALL PRIVILEGES> SHOW USERSuser adminroot true ...

October 6, 2021 · 1 min · jiezi

关于jmeter:0806-性能测试测试报告与数据

性能测试报告模板: 链接: https://pan.baidu.com/s/1iQju... 提取码: 2gu6 前端性能剖析应用 Chrome 浏览器 后果查看: 图中各种色彩代表的含意: 蓝色 Loading:加载黄色 Scripting:脚本紫色 Rendering:渲染绿色 Painting:绘制浅灰 Other:其余若须要通过 Jmeter 进行测试,则须要☑️从HTML文件获取所有内含的资源 前端性能优化动态资源加缓存,应用 CDN 与 独立域名JavaScript 压缩,去掉反复申请JavaScript 加载后移CSS 依赖缩小,置顶异步接口申请优化、合并、缩小查看页面申请失败与跳转的内部资源缩小页面申请个数,缩小 JavaScript 与 CSS 加载JavaScript 内存泄露,JavaScript 革除定时器Cache-Control: max-age=31536000 测试用例场景 数据分析进行性能测试时,GUI 界面仅作为调试用; 实在运行性能测试时,应用非 GUI 形式运行。 应用命令行启动脚本: 参考链接:https://www.cnblogs.com/kaibi... jmeter -n -t xxx.jmx 生成 jtl 文件:jmeter -n -t xxx.jmx -l xxx.jtl 生成的 jtl 文件,可通过 jmeter 中的监听器进行浏览 监听器中生成的图形,能够导出到 csv 间接生成 csv 文件:jmeter -n -t xxx.jmx -l xxx.csv ...

October 5, 2021 · 1 min · jiezi

关于jmeter:0805-性能测试定时器场景

用户定时器|集合点模仿多用户在同一时间点发动申请,放大并发线程启动时间误差 期待达到指定数量的用户数量后,集中发动申请 应用 Synchronizing Timer(同步定时器) 参考链接:https://blog.csdn.net/sun_hm/... 其中 Timeout in millisecond(超时工夫)=0,属于硬性期待 若汇合用户数>=线程数,运行脚本若汇合用户数<线程数,始终期待,不会运行脚本Timeout in millisecond(超时工夫)>0,属于软性期待 只会在设置好的 超时工夫 内期待后果察看: 吞吐量定时器Constant Throughput Timer应用 Constant Throughput Timer ,通过管制单位工夫的申请数,实现间接管制 TPS,察看响应工夫稳定: 毛病:每次批改吞吐量值时,须要进行脚本再启动,不利于察看整体的测试后果 参考链接:https://www.cnblogs.com/eagle... 响应工夫察看: RPS 定时器Throughput Shaping Timer应用 Throughput Shaping Timer , 能够间接管制压力值 参考链接:https://www.jianshu.com/p/303... 后果察看: 固定定时器集合时间满足后,刹时并发申请: 只会影响业务工夫不会影响服务解决工夫 随机定时器 参考链接:https://www.cnblogs.com/yoyok...

October 5, 2021 · 1 min · jiezi

关于jmeter:0804-性能测试复杂情景设计

负载模型1. 并发用户模型剖析性能衰减点;目标是性能调优 应用阶梯加压的线程组:Stepping Thread Group **保障压力平缓减少 相干参考链接:https://www.cnblogs.com/xioaw... 相干的监听器 对于性能衰减: 随着负载一直减少,TPS 绝对安稳,然而响应工夫继续减少监听器:Transaction Throughput vs Threads应用:Concurrency Therad Group 参考链接:https://www.cnblogs.com/poloy... 2. RPS(基于申请) 模型找出并发用户下的最大吞吐量;目标是能力验证 须要为对应申请增加:Throughput Shaping Timer 参考链接:https://www.cnblogs.com/ryan2... 测试场景构建1. 单接口基准测试2. 多接口容量测试场景阐明: 10min 内实现 3000 笔报销单解决; 单笔报销工夫(蕴含填写报销单信息+提交实现的工夫)20s + 1s =21s 并发线程数:(213000)/(6010min)=105 均匀吞吐量:3000 / 600 = 5 笔/s 其中用户填写报销单信息的工夫,应用 固定定时器 进行管制(其中思考工夫不会计算在响应工夫内): 最初运行,通过 聚合报告 察看数据

October 5, 2021 · 1 min · jiezi

关于jmeter:0803-性能测试数据准备与基准场景设计

根底性能脚本延迟时间=网络工夫+服务解决工夫 次要应用监听器,通过两者的差值,判断响应工夫耗费: jp@gc - Connect Times Over Timejp@gc - Response Times Over Time 调试脚本阶段,能够应用查看后果树等监听器来察看运行后果 正式执行时,须要将其禁用,防止耗费服务器资源 筹备数据获取登录 session,提供给后续接口应用: 从登录的响应中获取 session,传递到 后续接口 的申请头中应用 应用 cookies 管理器 后置处理器在登录申请上增加 正则表达式提取器 调试正则表达式是否正确: 在查看后果树中,找到对应的申请,进入正则调试 填写正则表达式(确定左右边界,留神是否采取贪心模式),点击【test】,查看后果: 将调试无误的正则表达式,回填到 正则表达式提取器 中: 参考链接:https://blog.csdn.net/quiet_g... 延长:json 表达式调试 根节点:$ 获取键值对:$.对应的键名称 参考链接:https://blog.csdn.net/df0128/... 通过后置处理器援用获取值: 通过 HTTP 信息头管理器,将提取的 cookie 值传递到下一个申请的申请头中 其次,能够通过 HTTP Cookie 管理器 精准传递指定用户的 cookie 值 断言为对应的申请增加响应断言: 逻辑控制器仅一次控制器 对于单线程屡次循环,只执行一次;然而对于多线程的状况,还是会执行屡次的 吞吐量控制器 无论线程多少,吞吐量控制器下的申请只执行指定次数 ...

October 5, 2021 · 1 min · jiezi

关于jmeter:0802-性能测试负载模型与压力来源

JDK 中的提供的监听工具 Windows 零碎下,Java 过程最多能启动 1000 个线程 Linux 零碎下,Java 过程最多能启动 2000 个线程 JMeter 线程组 其中线程属性(体现的是压力预期,理论后果在聚合报告中查看)中: ramp up:预期线程加载工夫,如图中,预期1秒内启动10个线程,最终应用的工夫以右上角的工夫为准;ramp up=0:示意霎时加压,线程启动工夫无线趋近于0,负载测试时,尽量将其设置大一些,让性能曲线平缓,剖析瓶颈点循环次数:线程的迭代次数/反复发动申请的次数;若循环次数有固定值,持续时间不会失效,以循环次数为准调度器配置中: 持续时间:须要将循环次数设置为永远,持续时间才会失效 压力起源基于协定发动申请,模仿用户实在操作,向零碎施加压力 HTTP申请 入参模式 个别入参模式是固定的,须要与接口文档进行核查 表单模式 json模式(表单与json,两种入参模式只能选其一) url拼接 Advanced 如果存在某些接口,并发数量过大容易产生梗塞,能够设置超时工夫间接抛出谬误,执行下一个申请, 避免申请堵在队列中,影响后续流程 勾选“从HTML文件获取所有外延的资源”,申请会把所有的动态资源加载进去 JMeter 抓包相干工具:XmfBrowser 链接:https://pan.baidu.com/s/1FI6Q... 提取码:7xsz JMeter 内的操作: 增加 HTTP 代理服务器 设置代理服务器 设置申请过滤 启动代理,而后再浏览器工具中设置代理端口,按理论业务进行操作 在抓取的接口中,抉择有用的挪动到对应事务的线程组中 压力监听 次要监听响应工夫、TPS、流动线程、HPS、响应工夫比例 罕用监听器: JDK 下的监听工具: 地位:jdk/bin/jconsole.exe应用浏览器进行录制脚本时,相干的设置: 第一种形式:配置电脑网络代理(不举荐,会代理所有浏览器申请) 第二种形式:应用浏览器插件--SwitchyOmega(举荐) 应用步骤:

October 5, 2021 · 1 min · jiezi

关于jmeter:0801-Jmeter-核心原理与性能测试理论

Jmeter 外围原理基于协定,模仿实在用户场景,并通过多线程模仿用户发动申请。 基于协定:性能测试的对象是网络分布式架构的软件,而网络分布式架构的外围是网络协议多线程:人的大脑是单线程的,电脑的 cpu 是多线程的。性能测试就是利用多 线程的技术模仿多用户去负载模仿实在场景。用户的拜访工夫,拜访频率都不是固定的性能测试实践性能测试的 根本指标:测试零碎性能是否达标;通过肯定的技术手段,模仿用户的并发申请,去测试零碎最大解决能力与稳固运行的能力,找到性能瓶颈,晋升零碎整体解决能力根本办法:基准、负载、压力……外围原理基于协定,通过多线程的形式模仿用户并发,在不同场景下施压服务器 基于协定:包含http,https,tcp,udp,socket,websocket,基于协定发动申请多线程:通过多线程的形式,模仿并发用户,施压服务器波及场景:jmeter 办法,元件;设计用户应用零碎的关联,思考工夫,集合点,对后果进行断言应用领域能力验证:零碎是否在固定条件下具备所申明的能力 乙方向甲方提供的我的项目中,申明了零碎能够反对5000用户同时登录,且响应工夫不超过3s;乙方须要通过性能测试失去测试后果,给予甲方验收报告瓶颈发现:发现瓶颈与缺点,无可参照的性能指标与指标 通过一系列的性能测试伎俩,发现性能瓶颈与缺点性能调优:对系统性能的调优 针对发现的性能瓶颈做调优TPS 瓶颈服务资源瓶颈响应工夫瓶颈SQL 瓶颈容量布局:零碎是否反对将来一段时间内的用户增长以后用户可能只反对5000用户并发;预计将来用户并发量能达到 50000 or 500000;针对将来可能存在的业务量暴发,以预计的用户并发量为基数,做对应的性能测试,提前调整硬件设施测试思路要测什么?前端:web、APP;从用户角度思考,更多关注页面加载工夫,与响应工夫 服务端: 工具层面:关注错误率与吞吐量服务器层面:CPU,内存,IO,JVM数据库:包含慢SQL,死锁…… 怎么测?需要--打算--计划--测试环境搭建--设计用例--数据筹备--设计场景--脚本开发--数据监控--后果剖析--性能调优--提交报告 测试后果通过的规范:依照需要:测试后果合乎预期 无规范需要的:例如测试一个页面的最大并发 性能指标前端性能指标响应工夫:用户视角最优先关注的指标 258准则: 2s以内,很称心5s,个别8s,无奈承受前端相应工夫: 前端资源加载渲染的工夫前后端交互的工夫前端将后端查问的数据,在页面出现进去网络连接工夫: connect time-连接时间:申请收回到服务端接管到,两头的网络工夫latency-提早:网络连接工夫+服务解决返回的工夫服务段解决工夫=latency - connect time错误率 点击率(HPS):用户点击按钮,触发申请 TPS: 单接口业务:单位工夫实现的申请数多接口业务:单位工夫实现的事务数RPS:间接从服务端角度掂量压力值 单位工夫发动的申请数TPS 掂量了服务端/零碎的性能;RPS 掂量了压力 服务端性能指标CPU 内存 磁盘IO JVM 中间件:Tomcat、redis、Nginx 测试视角用户视角 响应工夫零碎稳固运维视角 硬件设施是否须要更换资源利用率是否达标 利用率超标利用率过低零碎容量开发视角 代码是否须要优化SQL 优化零碎架构优化性能测试工程师的视角 测试类型基准测试:每一次版本迭代都须要做基准测试,目标是比照上一次的测试后果,给出调优的根据 负载测试:继续一直地减少压力;须要保障压力的持续性;找到零碎的瓶颈点 并发用户模型:继续一直地减少并发用户RPS模型:继续一直地减少申请数压力测试:当资源处于一个饱和状态,继续运行服务,考查零碎的稳定性;或者负载处于一个顶峰 稳定性测试:最大压力的80%,继续运行一段时间破坏性测试:在最大压力的根底上,仍然一直减少压力,目标是让零碎解体报错失效恢复测试:零碎异样之后,是否及时地复原 容量测试:考查零碎在将来时间段内,能撑持的用户数;测试大容量下,零碎须要的硬件设施

October 5, 2021 · 1 min · jiezi

关于jmeter:jMeter-Transaction-Controller-学习笔记

JMeter 的事务控制器是一个十分不便的工具,用于组织测试的不同局部并确定这些局部将如何呈现在报告中。正如 Apache JMeter 的文档中所述:“事务控制器生成一个额定的样本,用于测量执行嵌套测试元素所破费的总工夫。” 但这意味着什么?这个“额定样本”对您的 BlazeMeter 报告有什么影响? 如果您还不是十分相熟这些性能,那么仅仅因为它是一个形象的概念,可能会让人有点困惑。为了揭开这个话题的神秘面纱,咱们将通过展现后果的各种示例来具体理解此性能,以精确理解它在不同场景中的行为。 这里探讨的所有内容都将围绕这个“生成父样本”的小复选框: Creating a Basic JMeter Script为了演示事务控制器及其父示例如何工作,让咱们首先创立一个十分根本的 JMeter 脚本。 咱们须要这个脚本蕴含在这个试验中的是: A single Thread GroupA single Transaction ControllerTwo HTTP Request samplersA View Results Tree listener将两个 HTTP 申请采样器放在事务控制器中,给每个采样器一个惟一的名称(我的是“标签 1”和“标签 2”),如下所示: 接下来,将每个采样器配置为只需点击 blazedemo.com: 事务控制器将为咱们提供其中所有内容(咱们的两个采样器)的执行工夫,合并为一个“事务”。 让咱们看看咱们如何调整这个事务控制器来从测试报告中取得咱们想要的。 Scenario 1: No Parent Sample对于咱们的第一个试验,咱们将设置咱们的事务控制器,以便通过确保“生成父样本”框未选中(禁用)来生成任何父样本: 保留测试计划,而后在执行测试时察看查看后果树侦听器。 留神咱们的两个采样器是如何显示的: 咱们看到了两个采样器,但有三个标签。 第三个标签是咱们的“父样本”,即事务控制器自身。 不可避免的下一个问题当然是:咱们不是禁用了生成父样本吗? 咱们的确这样做了,因而父样本显示为附加的失常采样器,而不是理论的父样本。 别放心——当你看到第二个场景时,这会更有意义! 接下来,让咱们在 BlazeMeter 中运行此测试,而后查看申请统计报告以理解标签的显示方式: 就像查看后果树一样,咱们有三个标签,第三个代表事务控制器自身。 这是什么意思? 让咱们回到 JMeter 文档的形容:“事务控制器生成一个额定的样本,用于测量执行嵌套测试元素所破费的总工夫。” 换句话说,测试为两者生成了指标(均匀响应、均匀命中数/秒等): 事务控制器的各个内容(“标签 1”和“标签 2”)。两个标签的组合;换句话说,从头到尾的残缺“交易”,显示为第三项。 ...

October 3, 2021 · 1 min · jiezi

关于jmeter:自定义jmeter测试逻辑

最近测试共事在做压测过程中发现同样配置的两台服务器,部署同样的程序压测后果却差了很多(将近100tps),测试共事用的是loadrunner进行的压测,为了不占用测试资源,本地可能模拟出压测后果,须要在jmeter中自定义测试用例。上面介绍一下如何进行自定义。 引入jmeter的jar包新建一个maven我的项目,联合你装置的jmeter版本,引入对应的版本jar包,次要是ApacheJMeter_core和ApacheJMeter_java,我这里用的是5.4.1 <dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_core</artifactId> <version>5.4.1</version></dependency><dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_java</artifactId> <version>5.4.1</version></dependency>创立本人的用例创立你本人的测试类,须要继承AbstractJavaSamplerClient,并实现他的几个接口,对应的办法执行机会,我在上面代码中正文了 public class MyTester extends AbstractJavaSamplerClient { //执行测试代码,次要的逻辑 public SampleResult runTest(JavaSamplerContext javaSamplerContext) { return null; } //执行之前的初始化逻辑 @Override public void setupTest(JavaSamplerContext var1){ } //完结办法 @Override public void teardownTest(JavaSamplerContext var1){ } //java request界面的参数 @Override public Arguments getDefaultParameters(){ return null; }}这样看可能不是很分明,举个例子: @Override public Arguments getDefaultParameters() { Arguments params = new Arguments(); params.addArgument("host", ""); return params; }下面代码我实现了getDefaultParameters办法,并设置了一个host参数,那么在jmeter上显示的后果如下:其余几个办法的含意,我感觉正文曾经足够分明了。 打包实现本人的代码之后,就要进行打包了。如果你的我的项目不是springboot,则间接打包。如果你的我的项目是springboot我的项目,则须要去掉相干springboot的引入,把它改为一般包,比方我这里就把相干的包正文掉:而后在maven插件里,把springboot的打包形式也正文掉:而后打包就能够了。 应用根本工作都曾经实现了,接下来开始看看怎么用。找到jmeter的装置目录\lib\ext,把上一步生成的包丢进去,比方我目录是D:\安装包\apache-jmeter-5.4.1\lib\ext,则丢完之后:如果你的我的项目中有依赖其余第三方jar的,则把依赖的第三方jar包也丢进去。启动jmeter并创立对应的java request:能够看到,咱们本人写的测试类曾经能够选到了。当然如果你须要显示tps报告的,则须要在申请之前和响应之后的逻辑上增加统计逻辑 SampleResult sr = new SampleResult();sr.sampleStart(); //开始统计String result = TcpUtil.send(host, content);sr.sampleEnd(); //完结统计View Result Tree里的后果,也能够通过你对理论报文的解析来管制胜利还是失败 ...

September 29, 2021 · 1 min · jiezi

关于jmeter:性能工具之Jmeter脚本python启动

背景     上一节是shell命令启动Jmeter,放心大家对shell脚本语法不是很相熟,如果定制本人想要的恐怕不好弄,这次改用python启动脚本,在革新之前大家先理解下Jmeter线程组相干参数,这样对大家革新脚本有肯定帮忙。知识点 python中os、sys、file模块函数 Jmeter 执行形式【jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]】 以下是线程组款式 解释 Name :Thread Group 线程组的名称,能够依据项目名称定义 Comments :备注信息,形容该打算的目标 Action to be taken after a Sampler error 如果申请失败后,接下来执行什么动作 continue 继续执行接下来的操作start Next ThreadLoop 执行下一个线程循环Stop Thead 进行该该线程,不在执行该线程的任何操作Stop Test 期待该线程的采样完结后,完结整个测试,不会立刻进行Stop TestNow 进行整个测试计划Thread Properites :线程属性Number of Threads(users) :线程数,也就虚构用户数Ramp-uo Period(in seconds) :管制虚构用户启动工夫Loop Count:管制执行次数。Infinite 如果勾选示意无线执行,它次要与前面的 Duration 配合应用Same user on each iteration : 每次迭代应用雷同的用户Delay Thread creation until needed 将线程创立提早到须要的时候Number of Threads * Loop Count 就是 Sampler 执行的次数,能够在 View Results Tree 中看到。specify thread lifetime: 设置执行工夫Duration(seconnds): 申请的执行工夫,它与(Loop Count 的 Infinite)配合应用Startup delay(seconds):延迟时间,工作中很少用。python启动Jmeter脚本python基础知识温习os.sep: 取代操作系统特定的门路分隔符os.name: 批示你正在应用的工作平台。os.getcwd: 失去当前工作目录,即以后python脚本工作的目录门路。os.getenv()和os.putenv: 别离用来读取和设置环境变量os.listdir(): 返回指定目录下的所有文件和目录名os.remove(file): 删除一个文件os.stat(file): 取得文件属性os.chmod(file): 批改文件权限和工夫戳os.mkdir(name): 创立目录os.rmdir(name): 删除目录os.removedirs: 删除多个目录os.system(): 运行shell命令os.exit(): 终止以后过程os.linesep: 给出以后平台的行终止符。os.path.split(): 返回一个门路的目录名和文件名os.path.isfile()和os.path.isdir()别离测验给出的门路是一个目录还是文件os.path.existe(): 测验给出的门路是否真的存在os.listdir(dirname): 列出dirname下的目录和文件os.getcwd(): 取得当前工作目录os.curdir: 返回当前目录('.')os.chdir(dirname): 扭转工作目录到dirnameos.path.isdir(name): 判断name是不是目录,不是目录就返回falseos.path.isfile(name): 判断name这个文件是否存在,不存在返回falseos.path.exists(name): 判断是否存在文件或目录nameos.path.getsize(name): 取得文件大小,如果name是目录返回0Los.path.abspath(name): 取得绝对路径os.path.isabs(): 判断是否为绝对路径os.path.normpath(path): 标准path字符串模式os.path.split(name): 宰割文件名与目录os.path.splitext(): 拆散文件名和扩展名os.path.join(path,name): 连贯目录与文件名或目录os.path.basename(path): 返回文件名os.path.dirname(path): 返回文件门路关上文件函数温习with open( 文件名, '操作类型' ) as f: f.read()open(文件名,操作类型) f.readlines()读取形式有rand()readline()readlines()seek....等等 ...

September 2, 2021 · 3 min · jiezi

关于jmeter:性能工具之Jmeter使用shell启动

背景 在linux中执行Jmeter脚本时候,大家是否始终应用【jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]】命令执行,是否想过通过shell命令执行或者python执行,明天简略介绍下shell命令执行,前置条件须要配置Jmeter环境变量,如果没有配置,须要在脚本中批改相应地位。 成果shell脚本Jmeter环境变量配置参考 vi ~/.bash_profile#jmeter:门路JMETER_HOME=/root/tools/apache-jmeter-3.3PATH=$PATH:$HOME/bin:$JMETER_HOME/bin:export PATH 执行失效:source ~/.bash_profile验证 shell脚本参考代码 !/bin/bashauthor:liwen7DGroup2019/12/08/20/50cmdsh="/home/gaolou/apache-jmeter-3.1/bin/JMeterPluginsCMD. sh"case=$1 mNum=$ 2durationTime=$3 mark=$4 resultDataFileName="resultData.csv" hostIps="101.201.210.163"nowPwd=pwdecho -e "\033[32m-压力机开始执行。。请期待-\033[1m" echo testcaseName:${case}_${mNum}_${durationTime}_${mark} if [ -z ${case} ];then echo -e "\033[32m请输出脚本名,线程数,执行工夫,备注! 输出脚本名\033[0m" echo "ERROR" exit 1 fi if [ -z ${mNum } ];then echo -e "\033[32m请输出脚本名,线程数,执行工夫,备注! 输出线程数\033[1m" echo "ERROR" exit 1 fi if [ -z ${durationTime} ];then echo -e "\033[32m请输出脚本名,线程数,执行工夫,备注! 输出备注\033[1m" ...

September 1, 2021 · 3 min · jiezi

关于jmeter:运维攻坚之jmeter压力测试报错

背景某客户施行DAP,在上线前须要对DAP进行压力测试,有专门的压力测试环境,并且要求并发可能达到1000,团队应用jmeter作为压测工具,整个零碎架构很简略浏览器->Nginx->Tomcat,在压测的时候碰到以下问题 对DAP流程提交接口进行压测,压测不通过部署一个仅仅返回申请参数,没有任何业务逻辑,压测不通过绕过Nginx,间接对Tomcat进行压测,压测通过间接对Nginx进行压测,压测Nginx welcome页面,压测不通过并且对Nginx进行了大量的调优,能调的参数根本都试过,压测不通过,总结下来就是,只有通过Nginx,压测就不通过,看来问题呈现在Nginx上 环境信息Nginx:16CPU 64G内存Nginx配置,这里只列几个比拟重要的参数worker_processes 16;worker_connections 1000;keepalive_timeout 60;这些参数都调整过,对后果影响不大,当然如果调的太极其,比方worker_processes设置为1,必定是会报错的。 Tomcat:16CPU 64G内存这个配置Nginx跑1000并发齐全是足够的 排查先看下两个测试后果比照 压测tomcat简略接口,并发1000,循环50次,总共50000次申请 压测后果 所有申请没有呈现Error 压测Nginx welcome页面,并发1000,循环50次,总共50000次申请 有百分之0.31%的错误率,尽管不高,但这个错误率是始终有的,而且如果说Nginx的压测不如Tomcat,置信这个后果大家都承受不了,Nginx是负载平衡产品中公认最强的产品,一个是负载平衡,一个是应用服务器,负载平衡最重要的就是并发能力,应用服务器最重要的是业务能力,如果Tomcat在并发能力上超过Nginx,可能会颠覆很多人的认知。所以这其中必定是有问题的。 Nginx压测申请的谬误次要集中在以下几点 java.net.ConnectionException: Connection refused: connectjava.net.SocketException: Connection resetjava.net.SocketException: Unexpected end of file from serverorg.apache.http.NoHttpResponseException: failed to respond基本上是网络谬误,为了排除网络谬误,做了两个测试 本地运行我本人电脑(MAC)开nginx和tomcat,用jmeter进行压测,后果更不现实,也是1000并发 尽管有这么高的错误率,然而不论是nginx还是tomcat,并没有报错,这能阐明什么问题呢,阐明很可能是内核层面就报错了,也就是申请基本就没进来 Linux主机运行Jmeter反对在LInux下运行,也反对命令行模式,因而能够思考在内网服务器找一台同网段主机作为压测机器,步骤如下 将jmeter安装包上传到Linux压测机并解压在本地配好测试计划,保留为jmx文件,并将jmx文件上传至Linux压测机执行以下命令以命令行模式开启压测apache-jmeter-5.4.1/bin/jmeter.sh -n -t plan.jmx -l plan.jtl 将后果文件plan.jtl下载到本地,在汇总报告中点击Browser关上文件 错误率为0,联合本地运行的后果,能够猜想跟压测机的环境无关。 压测机本次应用的压测机是一台windows 7主机,如果是压测机的起因,那么为什么压tomcat就没问题,压nginx就有问题,两次压测到底区别在哪,咱们能够用wireshark进行抓包,看两次压测在网络包上有什么不同 Nginx压测抓包,发现有大量RST的包,并且继续疾速呈现 RST是连贯敞开时会发送的数据包Tomcat压测抓包也有RST的包,然而速度显著较慢,而且数量不多也就是说,Nginx压测一直在创立连贯和敞开连贯,tomact创立连贯和敞开连贯动作并没有那么频繁,咱们能够在windows上用以下命令查看连贯状况 netstat -a | find /i /c "TIME_WAIT"该命令能够统计以后零碎处于TIME_WAIT状态的连接数,TIME_WAIT示意连贯处于行将敞开的状态,这时候连贯所占用的端口仍然无奈开释,无奈进行再次调配,如果短时间内产生大量的TIME_WAIT连贯,容易导致端口号耗尽以至于无奈创立新的连贯,服务无奈响应Tomcat压测 TIME_WAIT连接数状况 TIME_WAIT示意期待敞开的连接数,能够看到迟缓增长,并且达到两千左右进行增长 Nginx压测TIME_WAIT连接数状况 能够看到快速增长,并且总数能够达到2w以上,最多能够达到4w,所以两次压测的区别就是TIME_WAIT的数量, 那为什么会产生这种后果,以下是我的集体猜想 nginx采纳的是epoll非阻塞模型,tomcat采纳的是线程模型,一个申请一个线程,属于阻塞模型,所以nginx能够段时间内"吃掉"大量的连贯,tomcat须要排队进入,这样就造成了以上景象,nginx短时间创立大量连贯,tomcat则是迟缓减少连贯论断windows作为压测机进行高并发压测并不适合,因为会在短时间内产生大量连贯,windows作为工作PC,在这方面解决能力不如Linux,加上网络稳定等因素,容易造成谬误,造成压测后果失真,尽管能够通过优化局部参数升高错误率,但解决不了基本问题,倡议通过同网段Linux主机作为压测机,测试计划能够在windows进行配置,后果剖析也能够在windows中实现,但执行测试工作倡议在Linux主机上进行。

July 30, 2021 · 1 min · jiezi

关于jmeter:jmeter压力测试

jmeter压力测试应用 JMeter 进行压力测试 一.前言压力测试是每一个Web应用程序上线之前都须要做的一个测试,他能够帮忙咱们发现零碎中的瓶颈问题,缩小公布到生产环境后出问题的几率;预估零碎的承载能力,使咱们能依据其做出一些应答措施。所以压力测试是一个十分重要的步骤,上面我带大家来应用一款压力测试工具JMeter。二.对于JMeterApache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最后被设计用于Web利用测试,但起初扩大到其余测试畛域。 它能够用于测试动态和动静资源,例如动态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 能够用于对服务器、网络或对象模仿微小的负载,来自不同压力类别下测试它们的强度和剖析整体性能。另外,JMeter可能对应用程序做性能/回归测试,通过创立带有断言的脚本来验证你的程序返回了你冀望的后果。为了最大限度的灵活性,JMeter容许应用正则表达式创立断言。Apache jmeter 能够用于对动态的和动静的资源(文件,Servlet,Perl脚本,java 对象,数据库和查问,FTP服务器等等)的性能进行测试。它能够用于对服务器、网络或对象模仿沉重的负载来测试它们的强度或剖析不同压力类型下的整体性能。你能够应用它做性能的图形剖析或在大并发负载测试你的服务器/脚本/对象。三.筹备工作因为JMeter是应用JAVA写的,所以应用JMeter之前,先装置JAVA环境,本文就不讲不如装置JAVA环境了。.JAVA环境变量配置:https://jingyan.baidu.com/art...解压下载的二进制包,进入bin目录,应用jmeter.bat启动程序。启动之后会有两个窗口,一个cmd窗口,一个JMeter的 GUI。后面不要疏忽CMD窗口的提示信息手游: JMeter: CMD窗口的提示信息Don't use GUI mode for load testing !, only for Test creation and Test debugging.For load testing, use NON GUI Mode: jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]& increase Java Heap to meet your test requirements: Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file ...

July 23, 2021 · 1 min · jiezi

关于jmeter:性能工具之Jmeter压测Thrift-RPC服务

概述 Thrift是一个可互操作和可伸缩服务的框架,用来进行可扩大且跨语言的服务的开发。它联合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 等等编程语言间无缝联合的、高效的服务。 Thrift最后由facebook开发,07年四月开放源码,08年5月进入apache孵化器。thrift容许你定义一个简略的定义文件中的数据类型和服务接口(IDL)。以作为输出文件,编译器生成代码用来不便地生成RPC客户端和服务器通信的无缝跨编程语言。 其传输数据采纳二进制格局,绝对于XML和JSON等序列化形式体积更小,对于高并发、大数据量和多语言的环境更有劣势。 Thrift它含有三个次要的组件:protocol,transport和server,其中,protocol定义了音讯是怎么序列化的,transport定义了音讯是怎么在客户端和服务器端之间通信的,server用于从transport接管序列化的音讯,依据protocol反序列化之,调用用户定义的音讯处理器,并序列化音讯处理器的响应,而后再将它们写回transport。官网地址:thrift.apache.org 基本概念 架构图 堆栈的顶部是从Thrift定义文件生成的代码。Thrift 服务生成的客户端和处理器代码。这些由图中的棕色框示意。红色框为发送的数据结构(内置类型除外)也会生成代码。协定和传输是Thrift运行时库的一部分。因而应用Thrift能够定义服务,并且能够自在更改协定和传输,而无需从新生成代码。 Thrift还包含一个服务器根底构造,用于将协定和传输绑定在一起。有可用的阻塞,非阻塞,单线程和多线程服务器。 堆栈的“底层I / O”局部依据所开发语言而有所不同。对于Java和Python网络I / O,Thrift库利用内置库,而C ++实现应用本人的自定义实现。数据类型: 根本类型: bool:布尔值,true 或 false,对应 Java 的 booleanbyte:8 位有符号整数,对应 Java 的 bytei16:16 位有符号整数,对应 Java 的 shorti32:32 位有符号整数,对应 Java 的 inti64:64 位有符号整数,对应 Java 的 longdouble:64 位浮点数,对应 Java 的 doublestring:未知编码文本或二进制字符串,对应 Java 的 String构造体类型: struct:定义公共的对象,相似于 C 语言中的构造体定义,在 Java 中是一个 JavaBean汇合类型: list:对应 Java 的 ArrayListset:对应 Java 的 HashSetmap:对应 Java 的 HashMap异样类型: ...

June 27, 2021 · 5 min · jiezi

关于jmeter:性能工具之Jmeter压测Hprose-RPC服务

图片概述 Hprose(High Performance Remote Object Service Engine),国人开发的一个近程办法调用的开源框架。它是一个先进的轻量级的跨语言跨平台面向对象的高性能近程动静通信中间件,它反对泛滥语言,例如nodeJs, C++,.NET,Java,Delphi,Objective-C,ActionScript,JavaScript,ASP,PHP,Python, Ruby,Perl等。什么是RPC? RPC(Remote Procedure Call Protocol)——近程过程调用协定,它是一种通过网络从近程计算机程序上申请服务,而不须要理解底层网络技术的协定。 其实简略的说,就是象调用本地的类的办法样来调用服务器端的办法实现。具体参考以下文章: 性能根底之浅谈常见接口性能压测 Hprose特点 反对简直所有常见语言的实现,包含浏览器中的javascript成熟稳固,曾经在很多我的项目中失去验证始终在继续稳步更新国人开发,有QQ群在线反对,回复比拟疾速(5分钟之内)和实体能放弃很好的兼容性,实体工作量较小Hprose服务端 Hprose 2.0 for Java 反对多种底层网络协议绑定的服务器,比方:HTTP 服务器,TCP 服务器和 WebSocket 服务器。 HTTP 服务器反对在 HTTP、HTTPS 协定上通信。 TCP 服务器反对在 TCP 协定上通信,并且反对全双工和半双工两种模式。 WebSocket 服务器反对在 ws、wss 协定上通信。Hprose客户端 Hprose 2.0 for Java 反对两种底层网络协议绑定的客户端:HTTP 客户端 和 TCP 客户端。 其中 HTTP 客户端反对跟 HTTP、HTTPS 绑定的 Hprose 服务器通信。 TCP 客户端反对跟 TCP 绑定的 Hprose 服务器通信,并且反对全双工和半双工两种模式。 只管反对这两种不同的底层网络协议,但除了在对波及到底层网络协议的参数设置上有所不同以外,其它的用法都完全相同。官网地址: http://hprose.com/ 实现逻辑 Hprose利用大抵就做三件事: 复制Hprose文件进我的项目写Hprose服务端写Hprose客户端Hprose服务端要做的事就两件: new一个HproseHttpServer对象用这个对象公布服务,包含函数、办法、对象甚至类Hprose客户端要做的事就两件: new一个HproseHttpClient对象用这个对象调用服务端公布的各种服务压测示例 此处咱们应用官网自带的HellWorld示例 源代码:https://github.com/hprose/hpr... ...

June 24, 2021 · 2 min · jiezi

关于jmeter:通过Jmeter调用easyNmon监控Linux服务器资源

一:引言easyNmon的指标很明确:简略、轻量、绿色,在不须要装置任何开发语言环境和插件的状况下进行Linux系统资源监控 如在固定服务器上进行长期监控,倡议应用open-falcon、Telegraf+InfluxDB+Grafana、Prometheus+Grafana或netdata等优良的监控工具 二:装置部署easyNmon1.下载地址 https://github.com/mzky/easyN... 2.上传至linux服务器相干目录 cd /home/wchtar -zxvf easyNmon.tar.gzcd easyNmonnohup ./easyNmon & [root@localhost easyNmon]# tail -2000f nohup.out Hostname: localhost OS: centos(rhel) 7.6.1810CPU: Intel(R) Xeon(R) CPU E5520 @ 2.27GHz * 16 coresMem: 16 GB Free: 5 GB Used: 10079 MBNetwork: 265139168 bytes / 209661006 bytesDisk: 19 GB Free: 2 GB接口(Get): /start 启动监控,接口方式时,所有参数非必选 参数n为生成报告的文件名, 参数t为监控时长(单位分钟), 参数f为监控频率,每隔多少秒收集一次; http://11.12.110.38:9999/start?n=name&t=30&f=30 /stop 进行所有监控工作: http://11.12.110.38:9999/stop /report 查看报告: http://11.12.110.38:9999/report /close 敞开本身: http://11.12.110.38:9999/close治理页面: 通过浏览器拜访web治理页面: http://11.12.110.38:9999执行的nmon文件:nmon/nmon寄存报告的目录:reportJmeter1.下载地址 https://jmeter.apache.org/dow... 2.上传并解压Jmeter cd /home/wchunzip apache-jmeter-5.4.zip3.设置环境变量 ...

May 31, 2021 · 1 min · jiezi

关于jmeter:JMeter-JDBC-使用过程中遇到的坑

JDBC一、开始执行脚本时,因为读取自定义变量报错,导致呈现字符转化失败异样cannot be cast to java.lang.String具体 log 请看: java.lang.ClassCastException: org.apache.jmeter.protocol.jdbc.config.DataSourceElement$DataSourceComponentImpl cannot be cast to java.lang.String at org.apache.jmeter.threads.JMeterVariables.get(JMeterVariables.java:118) ~[ApacheJMeter_core.jar:3.2 r1790748] at org.apache.jmeter.engine.util.SimpleVariable.toString(SimpleVariable.java:54) ~[ApacheJMeter_core.jar:3.2 r1790748] at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:147) ~[ApacheJMeter_core.jar:3.2 r1790748] at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:116) ~[ApacheJMeter_core.jar:3.2 r1790748] at org.apache.jmeter.testelement.property.FunctionProperty.getStringValue(FunctionProperty.java:101) ~[ApacheJMeter_core.jar:3.2 r1790748] at org.apache.jmeter.testelement.AbstractTestElement.getPropertyAsString(AbstractTestElement.java:281) ~[ApacheJMeter_core.jar:3.2 r1790748] at org.apache.jmeter.testelement.AbstractTestElement.getName(AbstractTestElement.java:165) ~[ApacheJMeter_core.jar:3.2 r1790748] at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:449) ~[ApacheJMeter_core.jar:3.2 r1790748] at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:254) [ApacheJMeter_core.jar:3.2 r1790748] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_144]起因起因是因为 Sampler 的名称带上读取公共参数${read-public-parameters}的例子,请查看以下截图。 解决办法将以上截图,名称的公共参数名称改为创立数据库-${testDataBaseName}即可。 二、查问中文内容无后果的解决办法在应用 JMeter 进行 JDBC 查询数据库时,sql 语句应用英文和数字能够查问到记录,而应用中文则查问不到记录,而且应用雷同的中文语句,能够在终端命令上和数据库管理工具上也能够查问到。 起因以上问题是因为数据库应用的编码与jmeter 查问时,应用的编码不统一,导致查问的条件转换后不统一,导致查问不到正确记录或查问到谬误记录。 JMeter 的默认编码是ISO-8859-1,而 mysql 数据库因为要存储中文信息,所以个别应用utf-8。在 JMeter 上填写的中文查问语句经字符编码转换到 mysql 上,不是之前填写的中文字段,导致查问条件生效,天然就无奈查问到正确的后果了。 ...

April 30, 2021 · 1 min · jiezi

关于jmeter:JenkinsJmeter接口成功率识别构建状态

问题形容Jmeter接口自动化测试对接Jenkins后,其中有局部接口执行失败返回对应错误码,然而Jenkins构建状态仍为胜利,此时再进行上游构建可能会存在问题。解决方案首先查看Jmeter测试报告,当接口全副执行胜利且断言胜利时,Success Rate为100.00% 在工程中减少执行shell,填写以下信息grep -c "100.00%" /home/ci/workspace/workspace/CKMSKdcTest/Report/TestReport.htmlif [ $? == 0 ]then exit 0else exit 1fi 通过搜寻报告中是否存在100.00%成功率来确认是否所有接口都执行胜利且断言胜利grep -c命令返回后果即示意$? == 0胜利,返回状态0,此时Jenkins通过状态0来确认build胜利,否则确认为build失败

April 7, 2021 · 1 min · jiezi

关于jmeter:Windows下JMeter分布式压测环境搭建

本文首发于:行者AI在我的项目中咱们常常会有压测的需要,而玲珑轻便且收费的JMeter也趁势成为了咱们的支流压测工具。 JMeter是Apache组织开发的开源我的项目,设计之初是用于做性能测试的,同时它在实现对各种接口的调用方面做得比拟成熟,因而,常被用作接口功能测试和性能测试。它可能很好的反对各种常见接口,如HTTP(S)、WebService、JDBC、FTP等、并以多种形式展现测试后果。 然而,在应用JMeter进行压测时,单机受限于内存,CPU,网络IO。咱们发现当被测接口须要很高的并发量,或者有些接口拜访数很高的时候,很容易就导致本地端口被占满,呈现申请报错的状况。此时,本地的一些TCP配置、性能峰值就可能成为性能测试的瓶颈点。(服务器还没被压崩,本地曾经崩了== ) 因而,本文梳理了基于JMeter的分布式压测环境的搭建办法来解决这个问题,并可能满足参数化的需要。 1. Jmeter分布式执行原理JMeter分布式执行时,抉择其中一台作为调度机(master),其余机器作为执行机(slave); master会在本地编辑好jmx压测脚本,执行时,master将jmx脚本发送至slave上,slaver执行时不须要启动jmeter,只须要把jmeter-sever.bat文件关上以非GUI模式执行; slave执行结束后将后果回传给master,并由master进行后果的汇总; 简略来说能达到的成果也就是:比方我在JMeter jmx脚本中设立的线程数是100,我在本地单机运行就会产生100次申请。如果我有1台master机器,2台slave机器,那么每次会向服务器发送的申请数总共就是100*3次。 2. 环境搭建办法2.1 环境筹备(1)master:JMeter版本5.1.1,jdk版本1.8; (2)slave:另外1台测试机,JMeter版本5.1.1,jdk版本1.8; 留神:JMeter和jdk版本与master统一,否则会呈现一些意外的问题。具体的装置教程就不在这里做赘述了,网上有很多参考文章,可自行查阅。 2.2 master机器配置(1)要保障master机器进行测试脚本的无效散发,须要配置slave机器的ip地址和端口号。在master装置目录的bin文件下,关上Jmeter/bin/jmeter.properties,找到remote_hosts=127.0.0.1的值并做批改: PS:若有多台近程机须要都加进来,用逗号隔开,后面127.0.0.1为本机,默认端口为1099(可自定义) (2)参数化配置 参数文件必须为绝对路径,否则脚本执行时无奈找到参数配置文件,因为master调度机在散发jmx脚本时,不会散发脚本中对应的参数文件。因而,须要手动将参数文件分发给slave机器(并且放在绝对路径下对应的地位,不然slave会找不到文件) 2.3 slave机器的配置(1)slave装置jdk和JMeter,并配置环境变量。尽量放弃与master机器版本统一。两台slave机器JMeter的装置门路也保持一致,不便后续进行参数化配置; (2)在Slave机器上,找到Jmeter/bin/jmeter.properties设置:server_port=1099; (3)进入slave的bin目录下,执行jmeter-server.bat,启动JMeter服务;启动胜利如下图: 2.4 验证分布式环境是否搭建胜利启动master机器中JMeter的GUI界面,在运行-近程启动选项中能够看到配置好的slave机器,此时阐明曾经连贯上近程slave机器。 如果你的环境在抉择全副启动之后,没有报错,且发动申请数量和事后jmx设置的线程数统一,阐明JMeter分布式测试环境搭建胜利,能够开始测试了。 3. 问题及注意事项master和slave必须是在同一网段;敞开防火墙;在master启动近程机器时,提醒FileNotFoundException;起因:自JMeter 4.0以来,RMI的默认传输机制将应用ssl协定。ssl协定须要密钥和证书能力工作。 解决方案:在Jmeter/bin/jmeter.properties中,找到server.rmi.ssl.disable,并设置:server.rmi.ssl.disable=true,示意不应用ssl。master和salve都得批改。 线程数的设定; 最终的并发线程数=jmx脚本设定的并发数*salve机器数量 JMeter分布式测试,是通过网络连接将执行脚本散发至机器下来的,也就是每个执行机拿到的脚本都是独立的,都会去执行jmx中设定的并发数。 同步定时器的应用; 该定时器的作用是用来设置集合点,从而阻塞线程,直到指定的线程数量达到后,再一起开释,能够霎时产生很大的压力。那么在分布式中是怎么来利用的呢? 举个栗子: 咱们在一个线程组中设立线程数为100,因为有3台slave,因而咱们冀望刹时并发能达到300,故减少了一个固定定时器,并冀望达到300的刹时并发,如下图: 启用3台slave机器之后发现,并没有任何申请。这是因为同步定时器的设置只在以后的jvm中起作用,而3台 slave则是3个独立的jvm,而同步定时器是须要在线程数达到设置的线程数后才会开释,若没有达到就会始终死 等。显然每台独立的slave永远也不会达到300的线程数,因为每台slave设置的线程数也才100,所以不会执行。 因而, 在分布式的状况下,设立的同步定时器中的阻塞线程数不要大于每个jvm中启用的线程数。 slave机过了一段时间打印了“starting...”之后,始终没有变动,也没有finish,master机也没有执行后果; 查看JMeter-sever.log发现:connection refused to host:172.2x.xxx.x.... 那该IP又是从哪里来的呢?最终发现,该IP为虚拟机网... 解决方案:如果近程负载机有虚构网络,须要敞开虚构网络。 论断:JMeter是JAVA利用,对于内存和CPU的占用较大,当应用单机进行测试时,对于高并发的压测,JMeter自身就会耗费本机很多资源,再想增大并发,一台机器就会显得有心无力,很容易达性能瓶颈。应用分布式压测,能够无效缩小因本机性能对压测后果的影响。

February 25, 2021 · 1 min · jiezi

关于jmeter:如何将Postman-API测试转换为JMeter以进行扩展

https://xueqiu.com/4544212997...https://xueqiu.com/4544212997...https://xueqiu.com/4544212997...

January 25, 2021 · 1 min · jiezi

关于jmeter:jmeter压测时自动获取token给其他接口使用

1、新增setup线程组,将获取token申请放到setUp线程组中; 2、调用获取token申请,应用json提取器或者正则表达式提取器,取得登录接口返回的token返回的token如上图所示格局,json提取器如下图设置。若应用正则表达式提取器,如下图设置: 阐明:(1)援用名称:下一个申请要援用的参数名称,如填写access_token,则可用${access_token}援用它。 (2)正则表达式:{"access_token":"(.+?)","token_type ():括起来的局部就是要提取的。 .:匹配任何字符串。 +:一次或屡次。 ?:在找到第一个匹配项后进行。 (3)模板:用$援用起来,如果在正则表达式中有多个正则表达式,则能够是$2$$3$等等,示意解析到的第几个值给title。如:$1$示意解析到的第1个值 (4)匹配数字:0代表随机取值,1代表全副取值,通常状况下填0 (5)缺省值:如果参数没有获得到值,那默认给一个值让它取,我填的null。 3、应用BeanShell后置处理器,将access_token设为全局变量。这样能力在别的线程组中调用该变量,否则只能在该线程组上面应用,不能在其余线程组中应用。${__setProperty(token,${access_token},)} 4、在下一个线程组中应用token时,应用${__property(token,,)}来援用。

January 12, 2021 · 1 min · jiezi

关于jmeter:JMeter压测时跑一会聚合报告就不动了

最艰难的事件就是意识本人!集体网站 ,欢送拜访!前言:最近,应用 JMeter 对我的项目进行压力测试;起初, JMeter 设置的并发线程数只是10个,而后在进行压力测试时,发现跑了一会后 JMeter 聚合报告 中的中数字全副不动了(像卡死了一样);下面简略形容了本文要说的问题;上面将次要从两方面来进行聊。 ①、具体问题形容 ②、具体的排查思路 问题详述:我的项目部署状况: 提供服务接口的我的项目 + Tomcat + Oracle提供服务接口的我的项目:接口中蕴含很多的数据库查问、更新、新增操作; 部署我的项目的应用服务器: Tomcat 连贯的关系数据库: Oracle 数据源配置 : 在Tomcat中的 context.xml 中配置数据源,连接池应用的是 Druid; 依据下面的部署状况, 而后应用 JMeter 进行压测,就呈现了文中一结尾说的问题,如下图: 问题排查:上面会简略的形容下此问题的排查过程,让大家在面对这种问题时,能够有一些思路。鉴于自己程度无限,如有问题敬请提出。 1、查看 JMeter 后果树:首先看下 JMeter 后果树 中是否存在谬误的日志,如果存在,而后看看是什么问题,具体进行解决; 然而,本文遇到这个问题时,发现后果树中并没有输入谬误日志,阐明申请接口时未呈现问题; 2、服务端排查:因为 JMeter 后果树中未展现出谬误的内容,阐明此时程序是失常运行着;而后查看服务端日志,发现没有呈现任何 异样 日志; 看到这,就发现怪异之处了,服务端也没有报任何谬误,那问题到底出在哪里呢? 别着急,还得去看 JMeter 的聚合报告去,通过聚合报告能够发现一些问题,就是聚合报告中 申请接口的均匀响应工夫太长了,高达 2 秒多,这个不失常呀,然而代码逻辑确保是没有任何问题的; 噢,对了,接口中存在很多数据库操作,是不是数据库呈现了问题,导致数据库操作比拟耗时呢;通过查看数据库服务发现是失常的;那是不是连接数不够用了呢? 嗯嗯,那来看下具体数据源的配置信息: 通过查看 数据源 的配置信息发现,Druid 连接池没有配置 最大连接数 以及最小连接数等 ;要晓得 druid默认的最大连接数是 8 ,而后咱再去应用命令查问下以后数据库的连接数: netstat -pan | grep 1521 | wc -l ,发现连接数是 8,阐明以后压测时,连接数曾经达到了最大值;因为连贯不够用,导致程序中进行 JDBC 数据库操作时须要期待可用连贯,所以说十分耗时,响应工夫就慢了,进而导致大量达到 Tomcat的申请得不到及时的解决,最终导致 JMeter 像卡死一样。 ...

September 24, 2020 · 1 min · jiezi

关于jmeter:使用jMeter测试通过SAP-ID-Service认证的SAP-Cloud-API

Recently I am working on a co-innovation project with one local partner in China. They will provide a Face Recognition solution which consists of a set of hardware & software. Once a person is recognized, the partner software will consume SAP S/4HANA contact creation API to create a contact instance in the system.Since we need to deliver this demo in SAP Cloud Forum site in Shanghai, and it is assumed that there will be lots of guests who would like to try this solution which leads to the possibility that multiple contact creation request would be sent to S/4HANA system simultaneously. As a result as one of demo preparation steps, I would like to generate a large number of concurrent contact creation request using jMeter and measure its performance. ...

August 31, 2020 · 5 min · jiezi

关于jmeter:如何使用jMeter对需要CSRF-token验证的OData服务进行并发性能测试

In my previous blog JMeter beginner – how to use JMeter to measure performance of OData service accessed parallelly I have demonstrate the way how to generate a large number of parallel request to a given OData service endpoint to measure the performance how this OData service implementation behaves via: Write a Java program by yourself, using standard API HttpClientBuilder provided by JDK.Use Open source tool JMeterIn that blog, the type of HTTP request I perform is “GET”, in that simple case no XSRF token generation and validation is necessary.Now in this blog we will deal with more complex stuff: initiate a large number of Service request creation request via HTTP post. In this case it is necessary to: ...

August 30, 2020 · 4 min · jiezi

关于jmeter:如何使用jMeter测试SAP-OData服务并发访问时的性能

For project reason I have to measure the performance of OData service being accessed parallelly. And I plan to use the open source tool JMeter to generate a huge number of request in parallel and measure the average response time. Since I am a beginner for JMeter, I write down what I have learned into this blog. I will continue to explorer the advanced feature of JMeter in my daily work. ...

August 29, 2020 · 3 min · jiezi

关于jmeter:jmeter-入门篇

1 Test Plan2 Add Test Group 3 Add Http Header Manageradd Authorization 4 Add Http Request 5 Add CSV Data Set Config参数的简要阐明: FileName:即同目录下csv文件的名称File Encoding: 默认为ANSIVarible Names: 定义文本文件中的参数名,参数之间逗号分隔.定义后可在脚本在以Shell变量的同样的形式援用Allow Quoated data: 双引号相干Recycle on EOF: 设置为True后,容许循环取值Stop Thread on EOF: 当Recycle on EOF为false并且Stop Thread on EOF为true,则读完csv文件中的记录后,进行运行Sharing Mode: 设置是否线程共享6 Add View Results Tree7 Add Aggregate Report

August 18, 2020 · 1 min · jiezi

关于jmeter:jmeter-入门篇

1 Test Plan2 Add Test Group 3 Add Http Header Manageradd Authorization 4 Add Http Request 5 Add CSV Data Set Config参数的简要阐明: FileName:即同目录下csv文件的名称File Encoding: 默认为ANSIVarible Names: 定义文本文件中的参数名,参数之间逗号分隔.定义后可在脚本在以Shell变量的同样的形式援用Allow Quoated data: 双引号相干Recycle on EOF: 设置为True后,容许循环取值Stop Thread on EOF: 当Recycle on EOF为false并且Stop Thread on EOF为true,则读完csv文件中的记录后,进行运行Sharing Mode: 设置是否线程共享6 Add View Results Tree7 Add Aggregate Report

August 18, 2020 · 1 min · jiezi

jmeter相关脚本testerhome

jmeter相干脚本-testerhome

July 12, 2020 · 1 min · jiezi

Jmeter之访问一个SSL双向认证的接口

我之前的章节接口测试之证书,对于各种不同格局的证书做了阐明。可是Jmeter须要的证书都不是这篇文章里提到的。 Jmeter须要导入的证书是keystore证书。这一章节,我讲会以一个例子来阐明如何应用Jmeter来拜访一个SSL双向认证的接口。 1 生成keystore证书如果你领有的是key和crt的话,那你要失去keystore的证书须要经验两个步骤。一步是依据key和crt生成p12,而后应用p12生成keystore。 1.1 把.key + .crt 生成 P12 证书命令行执行上面的命令,会生成一个p12的文件,叫server.p12 ,留神同时还会设置一个p12的明码,须要记住,下一步会用到。 openssl pkcs12 -export -out server.p12 -inkey server.key -in server.crt这一部分能够参考 [接口测试之证书]这篇文章1.2 应用p12生成keystore文件1.2.1 keytool介绍这里须要提到提到jdk自带的keytool工具,咱们须要应用这个工具来生成keystore证书。 咱们能够应用which命令,查看keytool的装置门路 Hongs-MacBook-Pro:bin hong.liu1$ which keytool/usr/local/opt/openjdk@11/bin/keytool1.2.2 keytool生产keystore先cd到方才生成的p12文件的门路下,而后执行上面命令 keytool -importkeystore -srckeystore certificate.P12 -srcstoretype PKCS12 -srcstorepass certificate_password -keystore mystore.keystore -storepass keystore_passwordcertificate.P12: 就是之前生成的p12证书,在咱们的例子里叫 server.p12certificate_password: p12的明码keystore_password: 设置keystore的明码,这个明码要记住,之后jmeter导入后须要应用。咱们这个例子里,咱们的命令如下,p12的明码和keystore的明码咱们都设置为porschepreview keytool -importkeystore -srckeystore server.p12 -srcstoretype PKCS12 -srcstorepass porschepreview -keystore myporshe.keystore -storepass porschepreview到这一步为止,咱们就生成了一个名字为 myporshe.keystore 明码为 porschepreview的证书。 2 证书导入Jmeter2.1 进入SSL 治理页面导入证书点击左上角的 Options->SSL Manager, 选中之前生产的 myporsche.keystore 证书。 ...

July 9, 2020 · 1 min · jiezi

Jmeter如何提取响应头部的JSESSIONID

Jmeter如何提取响应头部的JSESSIONID

July 8, 2020 · 1 min · jiezi

jmeter对https的网站进行测试是否要导出https的证书在jmeter里头进行转换

jmeter对https的网站进行测试,是否要导出https的证书,在jmeter里头进行转换

July 5, 2020 · 1 min · jiezi

JMeter-How-to-record-HTTPS-traffic

JMeter : How to record HTTPS traffic?

July 5, 2020 · 1 min · jiezi

jmeter入门之用户变量设置文件参数化方法

一:jmeter用户变量设置1.在线程组鼠标右击--添加--配置元件-用户定义的变量, 2.根据业务需求自定义变量的名称,添加需要的变量和对应的值 3.在脚本对应位置添加参数 二:文件参数化:两种方式: 1.函数助手 2.csv data set config 函数助手: jmeter(版本5.3) 工具--函数助手对话框--选择函数类型,以csvRead为例说明使用过程, 1.函数参数第一行值填写测试构造数据文件位置,如E:jmeterparams.txt, 2.第二行填写数据中内部数组的第一个数据下标0, 3.点击生成按钮,将函数字符串拷贝到相应的脚本请求中 csv data set config 1.添加--配置元件--csv data set config, 2.设置对应的数据 文件名:测试数据的文件名文件编码:utf-8变量名称:根据业务自定义,如添加帖子,测试数据包括title,des等分隔符:与文件数据中分隔符一致,如.text文件中用",",这里也应该填","下面几个暂时可以不动,需要用到的情况再分析,灵活修改3.将参数添加到对应的脚本请求中

July 2, 2020 · 1 min · jiezi