Gatling是一个用Scala编写的负载测试工具,功能强大。它完全支持HTTP协议,也可以用来测试JDBC连接和JMS。使用 Gatling时,需要用Scala dsl代码定义测试场景。值得一提的是,Gatling生成的HTML负载报告内容全面,并且提供了 Gradle、Maven和Jenkins插件方便集成。
开始测试前,需要准备测试应用。示例程序非常简单,源代码可以在GitHub上找到(github.com/piomin/sample-gatling-load-tests)。它提供了一组CRUD操作的RESTful HTTP API,在可以数据库中新增和搜索Entity。数据库用Postgres,基于 Spring Boot构建,使用Spring Data实现持久层。
开发示例程序的下一步是运行数据库,最合适的方式是Docker image。下面的Docker命令会启动一个Postgres container,完成gatling用户和数据库初始化。
每个Gatling test suite都要继承Simulation类,使用Gatling Scala DSL声明一系列测试场景。我们的目标是启动30个客户端,同时发送1000次请求。首先,客户端通过 POST /persons方法向数据库添加person。然后,调用GET /persons/{id}搜索person。总共向应用程序发送6万次请求:3万次POST,3万次GET。下面代码展示了测试场景,非常简单。
通过一些Gradle插件可以在项目构建期间运行测试。但是,也可用 io.gatling.app.Gatling类定义简单的gradle任务。