这篇文章主要介绍“加特林的相关知识点有哪些”,在日常操作中,相信很多人在加特林的相关知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“加特林的相关知识点有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
在讨论加特林之前,先了解下理论知识、性能测试的两种类型,负载测试和压力测试:
- <李>
<强>负载测试(负载测试)强>:负载测试是一种主要为了测试软件系统是否达到需求文档设计的目标,譬如软件在一定时期内,最大支持多少并发用户数,软件请求出错率等,测试的主要是软件系统的性能。
李> <李>
<强>压力测试(压力测试)强>:压力测试主要是为了测试硬件系统是否达到需求文档设计的性能目标,譬如在一定时期内,系统的cpu利用率,内存使用率、磁盘I/O吞吐率,网络吞吐量等,压力测试和负载测试最大的差别在于测试目的不同。
李>加特林简介
加特林是一个功能强大的负载测试工具。它是为易用性、可维护性和高性能而设计的。
开箱即用,加特林带有对HTTP协议的出色支持,使其成为负载测试任何HTTP服务器的首选工具。由于核心引擎实际上是协议不可知的,所以完全可以实现对其他协议的支持,例如,加特林目前也提供JMS支持。
只要底层协议(如HTTP)能够以非阻塞的方式实现,加特林的架构就是异步的。这种架构可以将虚拟用户作为消息而不是专用线程来实现,因此,运行数千个并发的虚拟用户不是问题。
加特林快速入门实践
- <李>
创建春引导应用,提供RESTful API,以供测试https://github.com/ChinaSilence/gatling-test.git
如果有自己测试的网络应用可以忽略本步骤!
李> <李>启动数据库
Github中的示例代码依赖了PostgresSQL,所以要先启动数据库,最简单的方式当然是用码头工人咯:
<>之前,docker run -d \ ,,,name postgres \ ,,-e POSTGRES_DB=gatling \ ,,-e POSTGRES_USER=gatling \ ,,-e POSTGRES_PASSWORD=gatling123 \ ,,-p 5432:5432  \ 以前,,postgres >
在想法中安装scala环境
安scala插装件
安装scala SDK
李> <李>
编写性能测试脚本
每一个加特林测试都要继承<代码> 代码>类模拟,在里面你可以使用加特林scala DSL来声明一个场景列表。这里的目标是运行30个客户端,同时发送1000次请求。首先,客户端通过调用<代码> POST/人代码>方法将添加数据到数据库中,然后,尝试通过调用<代码> GET/人/{id} 代码>方法使用id来查询数据。
<>之前,class ApiGatlingSimulationTest extends Simulation { ,,val scn =,场景(“AddAndFindPersons") .repeat(1000年,“n"), { ,,,,exec ( ,,,,,,http (“AddPerson-API") ,,,,,,,,. post (“http://localhost: 8080/persons") ,,,,,,,,.header (“Content-Type",,“应用程序/json") ,,,,,,,,.body (StringBody (“““{“firstName":“约翰$ {n}“,“lastName":“史密斯$ {n}“,“birthDate":“1980 - 01 - 01 -“,,“address":, {“country":“pl",“city":“Warsaw",“street":“测试$ {n}“,“postalCode":“02 - 200“,“houseNo": $ {n}}}“““)) ,,,,,,,,支票(status.is (200)) ,,,,).pause (Duration.apply (5, TimeUnit.MILLISECONDS)) ,,}.repeat(1000年,“n"), { ,,,,exec ( ,,,,,,http (“GetPerson-API") ,,,,,,,,. get (“http://localhost: 8080/人/$ {n}“) ,,,,,,,,支票(status.is (200)) ,,,,) ,,} ,才能设置(scn.inject (atOnceUsers (30))) .maxDuration (FiniteDuration.apply (10,“minutes")) 以前,}>
运行弹簧引导应用
李> <李>
运行测试脚本
配置Maven插件参数
<>之前,& lt; build> ,,,,& lt; plugins> ,,,,,,,,& lt; plugin> ,,,,,,,,,,,,& lt; groupId> io.gatling