性能测试-jmeter
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
性能自动化测试
之 Jmeter 篇
ห้องสมุดไป่ตู้
Apache JMeter是Apache组织开发的基于Java的 压力测试工具。用于对软件做压力测试,它最初被 设计用于Web应用测 试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、 Java 小服务程序、CGI 脚本、Java 对象、 数据库, FTP 服务器,等等。 JMeter 可以用于对服务器、网络或对象模拟巨 大的负载,来在不同压力类别下测试它们的 强度和 分析整体性能。 另外,JMeter能够对应用程序做功能/回归测试, 通过创建带有断言的脚本来验证你的程序返回了你 期望的结果。
• Average:平均响应时间——默认情况下是单个 Request 的平均响应时 间,当使用了 Transaction Controller 时,也可以以Transaction 为 单位显示平均响应时间 • Median:中位值,也就是 50% 用户的响应时间 • 90% Line:90% 用户的响应时间(Note:关于 50% 和 90% 并发用 户数的含义 • Min:最小响应时间 • Max:最大响应时间 • Error%:本次测试中出现错误的请求的数量/请求的总数 • Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second) • KB/Sec:每秒从服务器端接收到的数据量
黄培昭 2016-04-28
样本数目:运行时得到的取样器响应结果个数 最新样本:最近一个取样器结果的响应时间 平均:所有取样器结果的响应时间平均值 偏离:所有取样器结果的响应时间标准差 吞吐量:每分钟响应的取样器结果个数 中值:所有取样器结果的响应时间中间值 显示图线为随时间变化曲线,但 x 轴不是时间轴,是取样 器个数的均匀分轴
JMeter的基本入门 下载Jmeter 安装jmeter 配置环境 运行 组件介绍 简单实例 录制脚本
作为一个纯 JAVA 的GUI应用,JMeter对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并 发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误。不过, JMeter也可以像 LoadRunner 一样通过使用多台机器运行所谓的代理来分担负载产生器自身的压力,并借此来 获取更大的并发用户数,我们只需手动配置一下即可。 1、在所有期望运行JMeter作为 负载产生器的机器上安装JMeter,并确定其中一台机器作为“控制器”,其他 的机器作为“代理”。然后运行所有 代理 机器上的JMeter-server.bat文件—假定我们使用两台机器 172.20.80.47和172.20.80.68作为 代理; 2、在控制器 机器的JMeter安装目录下找到 bin 目录,再找到 jmeter.properties 这个文件,使用记事本或 者其他文字编辑工具打开它; 3、在打开的文件中查找“remote_hosts=”这个字符串,你可以找到这样一行“remote_hosts=127.0.0.1”。 其中的 127.0..0.1 表示运行JMeter代理的机器,这里需要修改为“remote_hosts=172.20.80.47, 172.20.80.68”;(多个IP用“,”隔开) 4、保存文件,并重新启动控制器机器上的JMeter,并进入启动 ->远程启动菜单项。就会看到我们刚才添加的 两个代理的地址,选中即可运行,如果想同时启动所有代理,选择远程全部启动即可。
JMeter可以做什么?
压力测试及性能测试; 数据库测试; Java程序的测试; HTTP及FTP测试; Web Service测试; 等等;
JMeter主要特征
能够对HTTP和FTP服务器进行压力和性能测试,也可以对任何数据库 进行同样的测试(通过JDBC)。 完全的可移植性和100% 纯java。 完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。 完全多线程 框架允许通过多个线程并发取样和通过单独的线程组对 不同的功能同时取样。 精心的GUI设计允许快速操作和更精确的计时。 缓存和离线分析/回放测试结果。 高可扩展性: 可链接的取样器允许无限制的测试能力。 各种负载统计表和可链接的计时器可供选择。 数据分析和可视化插件提供了很好的可扩展性以及 以及个性化。 具有提供动态输入到测试的功能(包括Javascrīpt)。 支持脚本变成的取样器(在1.9.2及以上版本支持BeanShell)。
结果统计与分析
• Label :每个 JMeter 的 element (例如 HTTP Request )都有一个 Name 属性,这里显示的就是 Name 属性的值,即取样器名称
• #Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用 户,每个用户迭代10次,那么这里显示100(运行时得到的取样器响应结 果个数)
场景1、多家经销商同时在做用户的登录之后,大概20%的经销商在做整车登录, 80%的经销商在做维修配件的登录。
场景2、多家经销商同时在月末进行盘点作业的。
场景3、多家经销商同时进行xxx功能的检索查询。
2、测试录制相关 使用JMeter的代理或是BadBoy进行录制的时候,特别是JMeter代理的时候,操 作不能太快,不然容易造成录制失败。 录制之后,需要对录制之后的代码进行一定的处理。 比如,适当的追加断言,这样才能确认到这一步在实际运行中的正确性。
3、测试的实施过程中 有多个人在负责同一个系统的JMeter压力测试或性能测试的时候,需要考虑不要 互相干扰了。 因为大家使用的服务器的资源是一样的,没有分配好测试顺序的话,得出来的测 试结果可能就不是我们所要的结果了。 是混杂的结果,那就没有意义了。 4、需要监控的一些数据 web服务器、ap服务器、db服务器等的CPU、内存、Full GC、硬盘使用量、 translation数等。 还需要对JMeter中产生的聚合报告进行数据的分析。
什么是JMeter?
Apache jmeter 是一个100%的纯java桌面应用,用 于压力测试和性能测量。它最初被设计用于Web应用测试 但后来扩展到其他测试领域。 Apache jmeter 可以用于对静态的和动态的资源 (文件,Servlet,Perl脚本,java 对象,数据库和查 询,FTP服务器等等)的性能进行测试。它可以用于对服 务器,网络或对象模拟繁重的负载来测试它们的强度或 分析不同压力类型下的整体性能。可以使用它做性能的 图形分析或在大并发负载测试你的服务器/脚本/对象。
要进行分布式测试代理机器上需要添加环境变量,即添加用户变量JMETER_HOME=C:\jmeter,系统变量中 的path中添加C:\jmeter\bin
1、测试场景的设计(测试指标) JMeter压力测试计划作成的时候,需要事先进行场景设计,设想我们业务应用 中的几种场景。比如,考虑以下的这几种场景:
之 Jmeter 篇
ห้องสมุดไป่ตู้
Apache JMeter是Apache组织开发的基于Java的 压力测试工具。用于对软件做压力测试,它最初被 设计用于Web应用测 试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、 Java 小服务程序、CGI 脚本、Java 对象、 数据库, FTP 服务器,等等。 JMeter 可以用于对服务器、网络或对象模拟巨 大的负载,来在不同压力类别下测试它们的 强度和 分析整体性能。 另外,JMeter能够对应用程序做功能/回归测试, 通过创建带有断言的脚本来验证你的程序返回了你 期望的结果。
• Average:平均响应时间——默认情况下是单个 Request 的平均响应时 间,当使用了 Transaction Controller 时,也可以以Transaction 为 单位显示平均响应时间 • Median:中位值,也就是 50% 用户的响应时间 • 90% Line:90% 用户的响应时间(Note:关于 50% 和 90% 并发用 户数的含义 • Min:最小响应时间 • Max:最大响应时间 • Error%:本次测试中出现错误的请求的数量/请求的总数 • Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second) • KB/Sec:每秒从服务器端接收到的数据量
黄培昭 2016-04-28
样本数目:运行时得到的取样器响应结果个数 最新样本:最近一个取样器结果的响应时间 平均:所有取样器结果的响应时间平均值 偏离:所有取样器结果的响应时间标准差 吞吐量:每分钟响应的取样器结果个数 中值:所有取样器结果的响应时间中间值 显示图线为随时间变化曲线,但 x 轴不是时间轴,是取样 器个数的均匀分轴
JMeter的基本入门 下载Jmeter 安装jmeter 配置环境 运行 组件介绍 简单实例 录制脚本
作为一个纯 JAVA 的GUI应用,JMeter对于CPU和内存的消耗还是很惊人的,所以当需要模拟数以千计的并 发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至还会引起JAVA内存溢出的错误。不过, JMeter也可以像 LoadRunner 一样通过使用多台机器运行所谓的代理来分担负载产生器自身的压力,并借此来 获取更大的并发用户数,我们只需手动配置一下即可。 1、在所有期望运行JMeter作为 负载产生器的机器上安装JMeter,并确定其中一台机器作为“控制器”,其他 的机器作为“代理”。然后运行所有 代理 机器上的JMeter-server.bat文件—假定我们使用两台机器 172.20.80.47和172.20.80.68作为 代理; 2、在控制器 机器的JMeter安装目录下找到 bin 目录,再找到 jmeter.properties 这个文件,使用记事本或 者其他文字编辑工具打开它; 3、在打开的文件中查找“remote_hosts=”这个字符串,你可以找到这样一行“remote_hosts=127.0.0.1”。 其中的 127.0..0.1 表示运行JMeter代理的机器,这里需要修改为“remote_hosts=172.20.80.47, 172.20.80.68”;(多个IP用“,”隔开) 4、保存文件,并重新启动控制器机器上的JMeter,并进入启动 ->远程启动菜单项。就会看到我们刚才添加的 两个代理的地址,选中即可运行,如果想同时启动所有代理,选择远程全部启动即可。
JMeter可以做什么?
压力测试及性能测试; 数据库测试; Java程序的测试; HTTP及FTP测试; Web Service测试; 等等;
JMeter主要特征
能够对HTTP和FTP服务器进行压力和性能测试,也可以对任何数据库 进行同样的测试(通过JDBC)。 完全的可移植性和100% 纯java。 完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。 完全多线程 框架允许通过多个线程并发取样和通过单独的线程组对 不同的功能同时取样。 精心的GUI设计允许快速操作和更精确的计时。 缓存和离线分析/回放测试结果。 高可扩展性: 可链接的取样器允许无限制的测试能力。 各种负载统计表和可链接的计时器可供选择。 数据分析和可视化插件提供了很好的可扩展性以及 以及个性化。 具有提供动态输入到测试的功能(包括Javascrīpt)。 支持脚本变成的取样器(在1.9.2及以上版本支持BeanShell)。
结果统计与分析
• Label :每个 JMeter 的 element (例如 HTTP Request )都有一个 Name 属性,这里显示的就是 Name 属性的值,即取样器名称
• #Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用 户,每个用户迭代10次,那么这里显示100(运行时得到的取样器响应结 果个数)
场景1、多家经销商同时在做用户的登录之后,大概20%的经销商在做整车登录, 80%的经销商在做维修配件的登录。
场景2、多家经销商同时在月末进行盘点作业的。
场景3、多家经销商同时进行xxx功能的检索查询。
2、测试录制相关 使用JMeter的代理或是BadBoy进行录制的时候,特别是JMeter代理的时候,操 作不能太快,不然容易造成录制失败。 录制之后,需要对录制之后的代码进行一定的处理。 比如,适当的追加断言,这样才能确认到这一步在实际运行中的正确性。
3、测试的实施过程中 有多个人在负责同一个系统的JMeter压力测试或性能测试的时候,需要考虑不要 互相干扰了。 因为大家使用的服务器的资源是一样的,没有分配好测试顺序的话,得出来的测 试结果可能就不是我们所要的结果了。 是混杂的结果,那就没有意义了。 4、需要监控的一些数据 web服务器、ap服务器、db服务器等的CPU、内存、Full GC、硬盘使用量、 translation数等。 还需要对JMeter中产生的聚合报告进行数据的分析。
什么是JMeter?
Apache jmeter 是一个100%的纯java桌面应用,用 于压力测试和性能测量。它最初被设计用于Web应用测试 但后来扩展到其他测试领域。 Apache jmeter 可以用于对静态的和动态的资源 (文件,Servlet,Perl脚本,java 对象,数据库和查 询,FTP服务器等等)的性能进行测试。它可以用于对服 务器,网络或对象模拟繁重的负载来测试它们的强度或 分析不同压力类型下的整体性能。可以使用它做性能的 图形分析或在大并发负载测试你的服务器/脚本/对象。
要进行分布式测试代理机器上需要添加环境变量,即添加用户变量JMETER_HOME=C:\jmeter,系统变量中 的path中添加C:\jmeter\bin
1、测试场景的设计(测试指标) JMeter压力测试计划作成的时候,需要事先进行场景设计,设想我们业务应用 中的几种场景。比如,考虑以下的这几种场景: