Gatling-压力测试工具-实用技术
- 格式:docx
- 大小:727.09 KB
- 文档页数:15
压力测试题及答案压力测试是指在一定压力条件下对系统进行长时间运行和稳定性测试,以验证系统在高负载下的性能和可靠性。
本文将提供一些常见的压力测试题及其答案,供读者参考。
压力测试题目一:什么是压力测试?为什么需要进行压力测试?答案一:压力测试是指在一定压力条件下对系统进行长时间运行和稳定性测试。
通过模拟系统在高负载、大并发情况下的运行环境,验证系统在真实使用情况下的性能和可靠性。
压力测试可以帮助发现系统性能瓶颈、优化不足的地方,提前发现和解决潜在的问题,确保系统能够稳定可靠地运行。
压力测试题目二:请列举一些常用的压力测试工具。
答案二:常用的压力测试工具包括以下几种:1. JMeter:JMeter是一款开源的Java应用程序,可进行功能、负载、性能和压力测试。
它支持多种协议和技术,并提供强大的测试报告功能。
2. LoadRunner:LoadRunner是一款商业化的压力测试工具,由惠普公司开发。
它支持广泛的应用程序环境和协议,可以模拟大量用户同时访问系统,进行全面的性能测试。
3. Apache Bench:Apache Bench是Apache HTTP服务器自带的一个用于进行性能测试的工具。
它简单易用,适用于对HTTP服务器进行简单的压力测试。
4. Gatling:Gatling是一款基于Scala语言的开源压力测试工具,专注于Web应用程序和API的性能测试。
它提供了简单易用的DSL(领域特定语言)来编写测试脚本。
压力测试题目三:请简述进行压力测试的步骤。
答案三:进行压力测试的一般步骤如下:1. 需求分析:明确测试的目标、范围和要求,并收集相关测试数据和环境信息。
2. 测试计划:制定详细的测试计划,包括测试目标、测试环境、测试工具的选择和配置,以及测试脚本的编写。
3. 测试准备:准备测试数据和环境,包括搭建测试环境、准备测试数据集和模拟用户行为等。
4. 测试执行:按照测试计划执行测试,模拟系统在高负载下的运行情况,记录并监控系统的性能指标。
服务器性能测试和压力测试的最佳实践和工具选择在现代科技日益发展的背景下,服务器性能测试和压力测试变得愈发重要。
为了确保服务器在面对大量并发访问时能够保持良好的性能,以及准确评估服务器所能承受的最大负载,进行有效的性能测试和压力测试就显得尤为必要。
本文将介绍服务器性能测试和压力测试的最佳实践和工具选择,以帮助读者全面了解并应用于实际工作中。
一、服务器性能测试的最佳实践服务器性能测试旨在评估服务器在正常工作负载下的性能表现。
以下是一些服务器性能测试的最佳实践:1.明确测试目标:在进行性能测试之前,需要明确测试的目标和指标,例如响应时间、吞吐量、并发用户数等。
明确测试目标有助于提供具体的参考依据。
2.制定测试计划:在进行服务器性能测试时,需要制定详细的测试计划,明确测试的范围、内容和时间等。
测试计划应包括测试环境的搭建、测试场景的设计和测试数据的准备等,以确保测试的可靠性和有效性。
3.合理选择测试工具:选择适用的性能测试工具对于测试结果的准确性和有效性至关重要。
常用的性能测试工具有JMeter、LoadRunner、Gatling等。
根据具体需求和项目特点,选择最适合的测试工具进行性能测试。
4.模拟真实场景:在服务器性能测试中,应尽量模拟真实的访问场景,包括正常业务访问、峰值访问、异常访问等。
通过模拟真实场景进行性能测试,可以更好地了解服务器在实际使用情况下的性能表现。
5.数据分析和优化:性能测试只有在对测试结果进行充分的数据分析和优化后才能发挥真正的价值。
通过对测试结果进行深入分析,找出性能瓶颈并进行优化,从而提高服务器的性能表现。
二、服务器压力测试的最佳实践服务器压力测试旨在评估服务器在高负载条件下的性能表现,以及确定服务器所能承受的最大负载。
以下是一些服务器压力测试的最佳实践:1.明确测试场景:在进行服务器压力测试之前,需要明确测试的场景和负载类型,例如持续高并发访问、突发性并发访问等。
明确测试场景有助于提供真实的压力测试环境。
常用压力测试工具集
1. 优测平台
优测压力测试是一款云原生性能测试工具,可模拟百万用户发压,支持单接口、全链路及JMeter 压测。
提供多维度性能测试报告,帮助业务快速定位产品性能瓶颈、准确验证系统能力,全面提升稳定性。
2. Apache JMeter
JMeter 是一个纯Java 应用程序,可用于测试静态和动态资源,例如静态文件、Java Servlets、CGI 脚本、Java 对象、数据库、FTP 服务器和更多内容。
3. LoadRunner
LoadRunner 是一种功能强大的性能测试工具,可模拟数千个用户同时访问应用程序,以评估系统的性能和稳定性。
适用于各种体系架构,能支持广泛的协议和技术,为测试提供特殊的解决方案。
4. Gatling
Gatling 是一种基于Scala 编写的现代化压力测试工具,它使用Akka 和Netty 等技术,可模拟数千个并发用户。
它主要用于对服务器进行负载等测试,并分析和测量服务器的各种性能指标。
5. CloudTest
集性能和功能测试于一体的综合压力测试云平台,专为现代网络和移动应用测试而设计开发,CloudTest 可以图形化实现判断、循环,整体减轻了测试开发的工作量,缩短了开发时间。
6. Tsung
Tsung 是一种开源的分布式压力测试工具,可模拟数千个并发用户,支持HTTP、SOAP、XML-RPC、JMS、AMQP 等协议。
支持可编程的情景化测试方案,要向发挥它的特性,依赖于人们的想象力和创造性。
软件测试中的压力测试工具在软件开发的过程中,为了能够保证软件的性能和稳定性,压力测试是必不可少的环节。
通过对软件进行大并发负载测试,可以检测系统在高负载下的性能表现,并找出潜在的问题和瓶颈。
为了有效地进行压力测试,我们需要借助一些专门的压力测试工具。
本文将介绍几种常用的软件测试中的压力测试工具。
一、Apache JMeterApache JMeter是一个开源的Java框架,被广泛应用于软件性能测试。
它具有用户友好的图形界面,可用于模拟各种负载类型,并提供了丰富的测试报告和结果分析功能。
JMeter支持多种协议,包括HTTP、FTP、SOAP、JDBC等,可以模拟大量并发用户,以测试系统在不同负载下的处理能力。
二、LoadRunnerLoadRunner是由Hewlett Packard开发的企业级性能测试工具。
它采用分布式架构,在支持大规模并发用户模拟的同时,可以监控多个服务器和应用程序的性能指标。
LoadRunner支持各种协议,包括Web、SOAP、JDBC等,并通过录制回放的方式生成测试脚本。
其强大的结果分析功能,可以帮助测试人员深入分析系统在负载下的性能状况。
三、GatlingGatling是一个基于Scala语言开发的高性能压力测试工具。
它采用事件驱动的方式进行测试,具有出色的性能和可伸缩性。
Gatling支持HTTP、JMS等多种协议,并提供了丰富的DSL(领域特定语言)用于测试脚本的编写。
它还拥有直观的图形化界面和实时报告,便于用户分析测试结果。
四、Apache BenchApache Bench是Apache HTTP Server项目的一部分,是一个轻量级的压力测试工具。
它通过发送大量并发请求来评估Web服务器的性能。
Apache Bench使用简单,支持多种HTTP方法,可以进行基本的性能测试和负载测试。
五、TsungTsung是一个开源的多协议分布式压力测试工具,使用Erlang语言编写。
服务器性能测试和压力测试的方法和工具随着互联网的迅速发展和应用的广泛化,服务器的性能和稳定性对于保证系统的正常运行和用户体验质量至关重要。
为了有效评估和优化服务器的性能,我们需要进行服务器性能测试和压力测试。
本文将介绍服务器性能测试和压力测试的方法和常用工具。
一、服务器性能测试的方法1. 基准测试(Benchmark Testing)基准测试是用来测量服务器性能的一种基本方法。
它通过记录服务器在标准化负载条件下的运行情况来获得性能指标。
基准测试可以评估服务器的处理能力、响应时间和吞吐量等关键指标,并提供性能基准数据供后续的性能优化和比较分析使用。
2. 资源利用率测试(Resource Utilization Testing)资源利用率测试是用来测量服务器在不同负载条件下资源的利用情况的方法。
通过监测服务器的CPU、内存、硬盘和网络等资源的使用情况,可以评估服务器在高负载条件下的性能表现和资源利用率,从而找出系统的瓶颈和优化方向。
3. 响应时间测试(Response Time Testing)响应时间测试是用来衡量服务器处理请求所需的时间的方法。
通过模拟用户请求并记录服务器的响应时间,可以评估服务器在不同负载条件下的响应速度和延迟情况。
响应时间测试可以帮助发现系统的瓶颈和性能瓶颈,并提供改进系统响应速度的建议。
二、服务器压力测试的方法1. 负载测试(Load Testing)负载测试是用来模拟服务器在高负载条件下运行的方法。
通过逐渐增加并维持大量请求的负载,测试服务器在负载峰值时的性能表现和稳定性。
负载测试可以帮助评估服务器的负载能力和扩展性,并发现系统的性能瓶颈。
2. 并发测试(Concurrency Testing)并发测试是用来模拟服务器同时处理多个请求的方法。
通过同时发送多个并发请求,测试服务器在处理多个请求时的性能表现和资源利用率。
并发测试可以帮助评估服务器的并发处理能力和稳定性,并提供优化建议。
软件测试中的压力测试方法和工具软件测试是保证软件质量的重要环节,其中压力测试是评估软件系统在高负载条件下的稳定性和可靠性的一种测试方法。
本文将探讨软件测试中的压力测试方法和常用的测试工具。
一、压力测试方法压力测试主要通过模拟真实环境下的高负载情况,评估系统的性能、可靠性和稳定性。
下面是几种常用的压力测试方法:1. 负载测试:负载测试是通过模拟多用户同时访问系统,测试系统在高负载情况下的性能表现。
测试人员可以通过逐渐增加用户数量或者用户请求的方式,来评估系统的负载能力和响应时间。
2. 并发测试:并发测试是通过模拟多个用户同时执行相同或不同的操作,来测试系统在并发访问情况下的性能和稳定性。
通过并发测试,可以评估系统在多个用户同时访问时的并发处理能力。
3. 弹性测试:弹性测试是通过模拟系统在短时间内的负载波动,测试系统对于负载波动的适应能力。
通过弹性测试,可以评估系统在负载变化较大的情况下的弹性和可伸缩性。
4. 瞬时峰值测试:瞬时峰值测试是通过模拟系统在短时间内的高峰负载情况,测试系统在高峰期的性能和可靠性。
通过瞬时峰值测试,可以评估系统在高负载冲击下的响应能力和稳定性。
二、常用的压力测试工具为了支持压力测试,测试人员可以借助各种专业的测试工具来实施测试。
下面是几种常用的压力测试工具:1. Apache JMeter:Apache JMeter是一个开源的压力测试工具,可以模拟多种类型的测试场景。
它支持多线程、分布式测试和图形化界面,可以对各种协议和服务器进行压力测试。
2. LoadRunner:LoadRunner是一种商业化的压力测试工具,被广泛应用于企业级软件的性能测试。
它提供了多种测试场景和协议支持,可以实现对复杂系统的全面性能测试。
3. Gatling:Gatling是一种基于Scala语言的开源压力测试工具,具有高性能和易于使用的特点。
它采用异步非阻塞的设计,可以模拟大量用户的并发请求,并且提供了可视化的测试报告。
软件测试中常用的性能测试工具和方法一、性能测试简介在软件开发过程中,为了保证系统的可靠性和稳定性,需要使用性能测试工具进行相应测试。
性能测试是软件测试中的一种重要测试方式,其目的是评估系统在各种情况下的负载能力、稳定性、扩展能力以及响应速度等方面的指标,以确定系统的性能瓶颈,并为系统优化提供参考。
二、常用性能测试工具1. JMeterJMeter是一款开源的Java应用程序,用于性能测试和负载测试。
该工具广泛应用于各种Web应用程序的功能和性能测试,可模拟一定数量的服务请求并监视响应时间、吞吐量等指标。
2. LoadRunnerLoadRunner是一种功能强大的性能测试工具,可模拟各种高负载情况下的用户行为,包括Web应用程序、数据库系统、移动应用程序等。
LoadRunner具有强大的脚本编辑和调试能力,可在多种操作系统和程序语言中运行。
3. GatlingGatling是一种基于Scala的开源性能测试工具,具有可扩展性和高效性。
Gatling适用于各种不同类型的测试,包括Web应用程序、API等,并具有分布式执行和监视能力。
4. Apache BenchmarkApache Benchmark是一种简单而实用的Web服务器负载测试工具,可测试和评估服务器的吞吐量和响应时间。
该工具使用简单,可通过命令行进行实时监视。
三、性能测试方法1. 负载测试负载测试是性能测试中的一种重要测试方式,可模拟各种负载情况下的用户行为,包括并发用户数量、访问频率等。
负载测试可以评估系统的响应速度、吞吐量、负载能力等指标。
2. 压力测试压力测试是通过持续增加负载测试,以甄别系统的强度和稳定性,测试系统在不同压力下的表现。
该测试方式可以评估系统的稳定性、鲁棒性和容错性。
3. 性能测试性能测试评估系统在特定负载情况下的性能指标,包括响应时间、吞吐量、QPS等,并可发现系统的性能瓶颈。
四、结语性能测试是软件测试中的重要环节,可以评估系统的稳定性、负载能力以及响应速度等指标,并为系统优化提供参考。
如何使用Gatling进行性能测试Gatling是一种流行的开源性能测试工具,可用于模拟大量用户在应用程序中的操作,以评估其性能和可扩展性。
在本文中,我将探讨如何使用Gatling进行性能测试。
我将涵盖以下主题:1. Gatling的基础知识2. Gatling性能测试的组成部分3. 使用Gatling进行基本性能测试的步骤4. 如何针对真实场景进行Gatling性能测试5. 结论和建议一. Gatling的基础知识首先,让我们介绍一些关于Gatling的基础知识。
Gatling是一个Scala编写的开源性能测试软件,其目标是提供一个有效的、快速的和可扩展的性能测试工具。
它运行于Java虚拟机上,并可以与许多Web应用程序、SOAP和REST服务、消息队列和其他协议交互。
Gatling 可以源自于相应的文件,也可以使用Maven、SBT和Gradle等构建工具进行构建。
Gatling 具有出色的图形化用户界面,可以展示详细的运行结果,使你方便和快速地了解应用程序的状态和性能。
二. Gatling性能测试的组成部分Gatling的性能测试包括以下几个组成部分:1. Protocols - 它们是Gatling的用于发送请求和接收响应的通讯协议。
其中常用的协议包括HTTP、HTTPS、FTP和JDBC等。
在Gatling中,可以为每个协议定义统一资源定位符(URL)和端口号。
2. Scenarios - 它们代表一组操作,即Gatling用户的行为模拟,并包含一个或多个步骤(即:定义如何执行操作的指令)。
3. Actions - 它们是可用于操作请求,例如解析响应或检查返回值的指令。
4. Injections - 它们定义了如何执行指定的并发用户数和请求数。
5. Assertions - 它们用于断言结果,通常包括定义响应时间、过滤器和检验器等。
6. Reports - Gatling具有用于显示性能测试结果的报告生成工具,报告内容包括各种统计指标、轻量级可视化图表和列表展示等。
服务器性能测试和压力测试的关键指标和工具服务器性能测试和压力测试是保证服务器正常运行和高效运行的重要环节。
只有通过全面、准确的测试,才能确保服务器在面对高负载和大并发情况下的稳定性和可靠性。
本文将探讨服务器性能测试和压力测试的关键指标和工具,并阐述它们对于服务器性能评估的重要性。
一、性能测试的关键指标在进行服务器性能测试之前,我们需要明确几个关键指标,以便评估服务器的性能表现。
这些指标包括:1. 响应时间(Response Time):指服务器从接收请求到返回响应所需的时间。
较短的响应时间代表服务器的处理速度较快。
2. 吞吐量(Throughput):表示服务器在单位时间内能够处理的请求数量。
较高的吞吐量代表服务器具备较高的处理能力。
3. 并发用户数(Concurrency):指同时向服务器发送请求的用户数量。
较高的并发用户数要求服务器具备较好的并发处理能力。
4. 错误率(Error Rate):表示服务器在处理请求过程中产生的错误比例。
较低的错误率代表服务器的稳定性更高。
5. 资源利用率(Resource Utilization):表示服务器在处理请求过程中所消耗的资源比例,如CPU利用率、内存利用率等。
合理的资源利用率能够提高服务器的性能表现。
二、压力测试的关键指标压力测试是模拟服务器面对高负载和大并发情况下的性能表现,帮助我们了解服务器在极限情况下的稳定性和可靠性。
在进行压力测试时,我们需要关注以下几个关键指标:1. 最大负载(Maximum Load):指服务器在能够正常运行的情况下所能承受的最大负载。
超过最大负载后,服务器可能出现性能下降、响应延迟等问题。
2. 最大并发用户数(Maximum Concurrent Users):表示服务器能够同时处理的最大并发用户数量。
超过最大并发用户数后,服务器可能导致请求堆积、响应慢甚至崩溃等问题。
3. 响应时间增长率(Response Time Growth Rate):指服务器在承受逐渐增加的负载时,响应时间的增长速率。
gatling 使用指南Gatling 使用指南一、简介Gatling 是一款基于 Scala 编写的现代化压力测试工具,广泛应用于Web应用程序的性能测试与负载测试。
它具有高效、可扩展、易于使用的特点,能够模拟大量用户同时访问目标系统,从而测试系统的性能和稳定性。
二、安装1. 下载 Gatling 安装包,并解压到指定目录。
2. 配置 Java 环境变量,确保 Gatling 能够正常运行。
三、编写测试脚本1. 打开 Gatling 目录下的 user-files 文件夹,新建一个名为simulations 的文件夹。
2. 在 simulations 文件夹下新建一个以 .scala 结尾的文件,作为测试脚本。
3. 使用 Scala 语言编写测试脚本,包括定义场景、设置用户行为、设置请求等。
四、构建压测场景1. 在测试脚本中,使用 scenario 方法定义场景,并设置场景的名称。
2. 在场景中,使用 exec 方法设置用户行为,如发送 HTTP 请求、执行数据库操作等。
3. 可以设置用户行为的重复次数、时间间隔等参数,以模拟真实用户的操作行为。
五、配置压测参数1. 打开 Gatling 目录下的 conf 文件夹,找到 gatling.conf 文件。
2. 修改 gatling.conf 文件中的相应配置项,如压测持续时间、并发用户数、目标系统地址等。
3. 根据需要,可以配置更多高级参数,如断言、报告生成等。
六、运行压测1. 打开命令行界面,切换到 Gatling 目录下的 bin 文件夹。
2. 执行命令gatling.sh -s <simulationClassName>,其中<simulationClassName> 是测试脚本的类名。
3. Gatling 会开始执行压力测试,并实时输出测试进度和结果。
七、分析测试结果1. 压测结束后,Gatling 会生成测试报告。
Gatling实用技术----高性能轻量级压力测试工具文档管理信息表文档修改记录表项目背景开发部门需要压力测试,但依赖QA的压力测试组不够便捷,因为其行动周期较长(业务讲解,计划制定,脚本匹配,文档撰写....),另外QA组使用的工具也比较专业,如果让开发部门自己用也不那么轻便。
否能找到一种方法,让开发人员跑一跑压力测试呢(在专业的QA压力测试组介入以前)?抛弃笨重的Loadrunner和功能有限的JMeter,我们找到了Gatling(格林机炮),一个高性能轻量级的测试工具本文档适用对象⏹有一定编程基础的开发人员⏹对应用性能有很高要求的开发团队本文不适合的对象⏹希望所有功能均由图形界面完成的使用者本文阅读时间1~2小时,建议分部阅读,中间安排充足的时间实验。
1 Gatling简介Gatling的Scala基础封装是基于Akka编程的,它是非阻塞异步编程模型,可以高效执行并有极高的容错率。
⏹专用web测试。
⏹像LR那样录制脚本,不用从零开始。
⏹脚本使用scala语言,易懂,易修改,控制灵活。
⏹基于JVM,随拷随用。
(对比LoadRunner的客户端安装以及JMeter需要XWindow组件,这个方便很多),操作接近apache的ab。
⏹原生支持NIO,并发性能很好,即使性能较差的电脑也能发起很大的负载压力。
⏹基于HTML的报表,简单易读。
2 Gatling入门2.1 准备工作2.1.1 下载下载地址:https:///excilys/gatling/wiki/Downloadsjdk6对应1.5版本,jdk7以上对应2.0版本。
本文档使用1.5.2版本进行演示。
2.1.2配置环境变量需要配置好JAVA_HOME和 GATLING_HOME环境变量,后者指向Gatling的根目录。
2.1.3 Gatling目录结构2.1.4 Recorder.bat 和gatling.batRecorder.bat和gatling.bat一个用来录脚本,一个用来执行脚本。
它们也提供了linux版本.sh。
Recorder是个桥接在浏览器和web服务器之间的代理,如果浏览器通过它访问网络时,它能记下浏览器的访问轨迹。
Reocrder提供了UI界面,让配置和执行变得简单。
同时,Recoder也是一个scala代码的生成器,它能把访问轨迹记录成scala代码。
Gatling.bat是一个包含了编译,执行scala代码的脚本,它提供了一些参数供使用者指定执行的细节(比如JVM_OPTS),运行它可以选择需要执行的scala代码,创建非阻塞的线程模型执行压力测试。
2.2 录制一个脚本2.2.1 启动Recorder执行{Gatling目录}/bin/recorder.bat|.sh,会启动一个图形控制界面,同时在后台启动了一个代理服务器。
配置浏览器,令浏览器通过这个代理服务器访问互联网,则一切操作都会被其记录。
2.2.2 浏览器指向Recorder代理启动Recorder之后,已经在本机的8000和8001上启动了代理,接下来我们配置一下浏览器,让它通过Recorder的代理访问网络。
配置好以后,当Recorder关闭时,浏览器无法访问任何网站,证明配置成功。
当脚本记录工作结束之后,别忘了改回无代理的状态,否则只要recorder一关,浏览器就不能访问互联网了。
笔者建议,如果经常录压力测试脚本,可以单独安装一个不常用的浏览器专用,比如chrom。
2.2.3 录制脚本录制以前,启动待测试的应用服务器,本文用grails搭了一个简单的web应用程序,跑在localhost:8080/teset/,然后打开浏览器,切换到Recorder点击start,回到浏览器访问地址,切回Recorder点击stop&save,这样就完成了一次录制。
2.2.4脚本保存位置录制完成的脚本放在了这里,路径根据Recorder的Output folder指定,重名情况下会覆盖旧文件。
如果录制的文件多了,可以考虑将这个文件夹弄到svn上去,以防万一。
2.3 编辑脚本2.3.1脚本内容分解我们打开刚才录好的RecordedSimulation.scala,看到内容定义,我们只关注httpConf,scn这两个对象就够了。
观察相同颜色的箭头,其功能脚本内容一目了然“用httpConf当做访问协议,用scn描述访若干问地址和暂停时间,用ers描述并发个数,执行访问。
”当然,所举的例子很简单。
而一个完整的操作流程至少包含“登陆验证,操作,退出”。
在实际的录制过程中,读者可能会发现录制完的脚本中有很多杂乱的请求,这是因为网页中的css,js等资源也是通过请求获取,凡是请求都会被记录到脚本,形成了像“杂音”一样的内容。
我们可以在编辑脚本时,适当删除它们。
因为很多这类请求消耗的是缓存服务器的性能,而大说数情况我们更关注应用服务器。
2.3.2编程思路✓将用户的操作,分解成多个“get”和“post”请求。
✓定义每个请求对应的参数变量。
✓缓存请求返回的值,如需要作为下次请求的参数。
✓使用“ers”属性,模拟多用户多线程。
可以阅读Gatling提供的演示脚本BasicExampleSimulation.scala,看看怎样给每个请求指定不同的header,每个请求指定不同参数,感受编程带来的灵活性。
读者可能会感受到,Galting其实是个编程类库,提供了各种发送网络请求的基础类。
2.4 运行压力测试2.4.1编程思路执行{Gatling路径}\bin\gatling.bat|.sh -sf <脚本路径>。
这时屏幕开始输出日志,观察负载应用服务器的日志,会发现正在处理批量的请求。
执行完毕之后,在此录下会产生报告文档,直接访问index.html即可阅读。
压力测试的结果,分为GLOBAL和DETAILS两栏,分别对平均分数和每组请求的分数做了统计。
我们重点参考Request/sec(每秒处理请求个数)和Transactions/sec(每秒处理事务个数,事务即每个模拟用户的一组请求)更详细的测试报告说明,请参考官网https:///excilys/gatling/wiki/Reports2.4.1注意事项●发送端与负载端的网络环境与带宽Galting作为发送端发起大量的请求,是很消耗网络带宽的。
如果开发机与应用服务器之间有带宽限制,则不应将发起端放在开发机,而应该放在负载端同机架的服务器,确保发起端有足够的带宽输出请求。
考虑Galting本身会占用内存和CPU去发起请求和接收请求,所以Galting不应该与负载端同使用一台服务器,或者共享硬件资源的两个虚拟机。
●负载压力根据脚本所定制的并发数,Galting需要占用内存去生成对象。
请根据情况,调整Galting 的配置文件,将更多内存分配给Galting的JVM,让其有足够的内存去发起请求。
3Gatling提高3.1 测试计划请在着手录制脚本以前,仔细制定一个计划,磨刀不误砍柴工。
比如制定多级压力,逐级测试,找到应用的极限。
3.2活用scala,实现功能型测试scala代码可以实现任何控制逻辑。
比如http类提供了一个check()方法,可以在发送压力请求的同时检查和记录每次访问的结果。
检查结果记录在report中,而记录的结果放在并在下次请求中复用(对应某些串联请求的业务场景)。
这样,压力测试就包含了功能测试,用来检查软件功能是否正确。
关于使用方法的细节,请参考官方文档的高级应用章节https:///excilys/gatling/wiki/Advanced-Usage3.3编辑可复用脚本Scala是面向对象的,利用好这一点,我们可以针对项目的特点设计通用测试脚本,让它为多个项目服务最好的参考,就是Gatling提供的高级脚本例子:{Gatling目录}/user-files/simulations/advanced里面讲脚本分成了若干文件和对象,令复杂脚本的结构更加清晰和可编辑。
提示:scala类可以直接访问同一个包路径下的所有类,不用import。
3.4使用窍门,导入IDE用eclipse新建一个普通project,文件目录指向Gatling的文件目录。
之后就能在eclipse 里编辑脚本发起测试了。
在这基础上,eclipse再加上了scala的插件,那就更加方便,所有的脚本都会高亮显示关键字,而且可以使用ctrl+shift+F来整理文档格式。
Eclipse的Scala插件:/download/current.html根据读者自己的eclipse版本来安装,推荐使用links模式,因为这个插件蛮大的,不用的时候,可以去掉它,省的白白消耗资源。
3.5配合JProfiler,找到性能瓶颈如果压力测试中,发现了性能缓慢,内存泄露等问题,JVM的分析工具就能派上用场了,将JProfiler绑定你的负载应用服务器,然后再使用Gatling施压。
这样JProfiler会记录下压力负载过程中,各种class的表现,比如哪些方法最费时间,哪些类调用次数最多等。
不过,还是推荐充分的分析自己的代码之后,再使用JProfiler,毕竟最了解代码的还是编写代码的人。
关于JProfiler的介绍文档,网上能找到很多,这里就不搬砖了。
4 总结综上所述,Gatling非常适合程序员来使用,就像apache的ab一样,属于拿起来就用的工具。
当然比起最专业的Loadrunner,它还是有不如的地方:⏹只能测试web应用,测试其他服务(类,服务,手机应用,DB-SQL)需要自己编写对应的web接口。
⏹它的分析功能不及LoadRunner多(LR10支持100多种报表)。
⏹任务控制功能不及LoadRunner多(LR10支持同时控制多客户端,定时启动等)⏹基于脚本,不会编程的人员有些不顺手。
不过,就日常使用而言,这些缺点也是优点,因为使用者不用花费额外的时间在学习某些华而不实的功能上。
尤其是作为开发人员,最大的目标就是确保软件本身的性能,而不是撰写报告,像Gatling这样拿起来就用用完了随手放下的工具用起来才真正顺手。