性能测试教程:自动化,Gatling和Jenkins的使用方法

作者 : IT 大叔 本文共4564个字,预计阅读时间需要12分钟 发布时间: 2020-09-30

如果您想扩大对性能测试的了解,那么本文适合您。今天,我们将介绍性能测试的基础知识,并教给您自动化测试所需的工具:Gatling和Jenkins。

什么是性能测试?

性能测试是检查各种工作负载下程序或产品的速度,稳定性,响应时间,可靠性和资源使用情况的综合过程。性能测试使您可以识别并消除软件中潜在的性能瓶颈。

通常,性能测试是通过在实验室或生产环境中进行的一系列定量测试来完成的。为了确定瓶颈,使用的典型参数是处理速度,数据传输速率,网络带宽,工作负载效率和可靠性。

性能测试有五种主要类型,可用于改善应用程序性能的不同方面。

  1. 负载测试:检查软件是否可以在预期的用户数量下达到最佳性能。目的是确定性能瓶颈的区域,并在应用程序上线之前解决它们。
  2. 压力测试检查应用程序的最大断裂点。这涉及利用极端的工作负载和高流量来测试应用程序何时中断。
  3. 浸泡测试:浸泡测试也称为耐久测试,它模拟了一段时间内用户的稳定增长,以测试系统的长期可持续性。
  4. 峰值测试:在用户突然出现峰值的情况下测试系统的性能。
  5. 卷测试:通过填充大量数据并监视整个软件系统,在变化的数据库卷下测试系统性能。

为什么我们需要性能测试?

性能测试使利益相关者能够确定软件中的瓶颈。瓶颈是阻碍应用程序整体性能的单一点。通过确定瓶颈,您可以突出显示应用程序可能失败或滞后的区域。

通过性能测试,您可以确定软件在发布之前需要改进的地方。如果没有它,应用程序可能会面临一系列问题,例如运行时间缓慢或整个操作系统之间的不一致。

没有性能测试,我们在代码和产品中会遇到各种各样的问题,包括响应时间短,加载时间长,可伸缩性差和瓶颈。

性能测试指标

组织在性能测试期间使用KPI(关键性能指标)来评估其软件的性能。以下是一些常见指标:

  • 吞吐量:系统在一段时间内处理的信息单位数。
  • 内存:工作负载可用的存储空间带宽:工作负载之间每秒移动的数据量
  • 延迟:从用户请求到系统响应开始之间的时间。
  • 每秒CPU中断数:进程接收到的平均硬件中断数。
  • 其他专用字节,页面错误,磁盘队列长度,最大活动会话数,每秒总网络字节数。

性能测试工具

现在,我们了解了性能测试的基础,让我们了解使用最广泛的开源性能测试工具。在本文中,我们将学习有关加特林和詹金斯的知识,但重要的是要知道那里还有什么。

加特林

Gatling是一种负载测试工具,使用Akka actor来模拟大量用户。这些测试使用Scala编写并使用DSL。加特林的设计目的是易于使用,高性能和可维护性。Gatling是一种广泛用于负载测试的工具,下载量超过500万,数千家公司使用它进行测试。加特林提供免费版本和付费企业版本。

Locust

Locust是用Python编写的开源负载测试工具。Locust具有分布式和可伸缩性,因此可以在多台计算机上支持大量同时用户。使用Locust,您可以在代码中定义用户行为,因此不需要笨拙的UI或XML。在蝗虫测试中,一群“蝗虫”会攻击您的目标站点。每个蝗虫的行为都是可配置的,您可以实时监视群。

Jmeter

Jmeter是一个用Java编写的开源负载和性能测试工具。它支持各种应用程序,服务器和协议,包括HTTP,TCP,SOAP,Web,LDAP等。它是最流行的性能测试工具之一。

性能测试教程:自动化,Gatling和Jenkins的使用方法插图(4)

Lighthouse

Lighthouse用于衡量网站的性能。这是一个开放源代码的自动化工具,用于提高网页质量。它提供性能,可访问性,PWA,SEO等方面的审核。给Lighthouse提供URL后,它将对页面进行审核并生成报告。指标可用于改善网站。

加特林自动测试

在软件世界中,有两种测试:手动自动化。上面我们介绍给您的过程大部分是手动的。测试自动化涉及自动运行测试,管理测试数据以及利用结果来改善软件质量。

通常,这可以通过编写脚本并使用自动化测试工具(如功能强大的负载测试工具Gatling)来实现。只要基础协议(例如HTTP / HTTPS)以非阻塞方式实现,Gatling的体系结构就是异步的

这种体系结构使我们可以利用虚拟用户,而不是使用专用线程。因此,与像JMeter这样的基于线程的负载测试工具相比,运行数千个并发虚拟用户没有问题。

加特林的特征

  • 丰富的实用程序: Gatling提供了一系列实用程序,并支持传递测试数据以从CSV,TSV,JSON,SSV和Redis加载测试方案。
  • UI记录器: Gatling提供了一个独立的记录器,能够将HTTP Web操作转换为Gatling测试脚本。
  • Akka Actors: Gatling使用Aka Actors,以便虚拟用户发出无阻塞请求,从而提供最大的效率。
  • Web套接字和JMS支持Gatling提供对JMS(Java消息服务),SSE(服务器端事件),Web套接字和MQTT(MQ遥测传输)的支持。
  • 断言:加特林提供可以对收到的响应执行的断言和检查。
  • 丰富的HTML报告: Gatling提供了功能丰富的HTML报告,其中包含有关已执行方案,配置的信息以及有关响应的统计信息。
  • 与Grafana&StatsD集成:通过将结果导出到Graphana,Influx时间序列数据库,StatsD等,Gatling还提供了持久执行报告的方法。
  • Jenkins CI / CD集成:通过 加特林,我们可以在运行时覆盖运行配置参数,包括报告配置。这使我们可以轻松地与CI / CD管道集成。
  • 分布式负载测试:通过加特林,我们可以通过分配负载并进行配置更改,对位于负载均衡器后面的多台服务器运行测试脚本。

加特林应力测试模拟

压力测试(也称为耐久测试)可验证系统在极端长时间条件下的错误处理能力及其可靠性。

样品:

在下面的示例中,我们将请求发送到https://api.coingecko.com以获取加密货币衍生产品。

import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._

class SampleSimulation extends Simulation {

  val httpProtocol = http
    .baseUrl("https://reqres.in/api/users")
    .acceptHeader("*/*")
    .doNotTrackHeader("1")
    .userAgentHeader(
      "Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0"
    )
    .disableWarmUp
    .disableCaching

  val getScenario = scenario("BasicSimulation - GET")
    .exec(
      http("GET request")
        .get("/")
        .check(status.is(200))
    )

  
  setUp(
    getScenario.inject(rampUsers(2) during (2 seconds))
  ).protocols(httpProtocol)
}

创建全局HTTP配置

在下面的代码片段中,我们可以创建一个全局HTTP配置:

  • 禁用缓存
  • 禁用初始预热
  • 设置所有HTTP请求的基本URL
  • 设置默认的内容类型并接受标题
val protocols = http
    .disableCaching
    .disableWarmUp
    .baseUrl("https://api.coingecko.com")
    .contentTypeHeader("application/json")
    .acceptHeader("application/json")

创建用户方案

在下面的代码片段中:

  • 创建一个用户场景,其中包含一个HTTP,exec用于向发出GET请求/api/v2/derivatives/exchanges,其中的基本URL是从全局HTTP配置中提取的。
  • 声明状态码并检查id响应中是否存在这些字段。
val scn = scenario("fetching all derivatives")
    .exec(http("fetch all derivatives")
      .get("/api/v3/derivatives/exchanges")
      .check(
        status.is(200),
        jsonPath("$[*].id").exists
      )
    )

设置用户注入配置文件

我们创建用户注入。在我们的案例中,我们以2次恒定速率执行用户场景,持续10秒。模拟完成后,我们断言失败请求的数量是否为0。

setUp(
    scn.inject(constantUsersPerSec(5) during (10 seconds))
  ).protocols(protocols)
    .assertions(global.failedRequests.count.is(0))

Jenkins  加特林

持续集成(CI)是自动发布流程的第一阶段。这是一种使用自动测试服获得开发人员代码更改的早期反馈的方法。过程:

  • 提交代码
  • 生成应用程序源代码
  • 运行自动化测试
  • 提供反馈信息

通过使用验收测试对代码进行更改来设置CI流程。CI流程中的自动化性能测试仅使用实际负载的5%即可完成。

这使我们能够收到早期反馈并评估新提交的代码的影响。如果有任何瓶颈或问题,我们可以在上线之前立即就地分析并解决问题。

Jenkins设置和安装

以下指南将为您提供在本地或远程计算机上安装Jenkins的步骤。

安装Homebrew软件包管理器

/bin/bash -c "$(curl -fsSLhttps://raw.githubusercontent.com/Homebrew/ 
install/master/install.sh)"

安装詹金斯

brew install jenkins

启动詹金斯服务

brew services start jenkins

Jenkins服务启动后,导航至https:// localhost:8080浏览器以完成安装。

下面的屏幕将要求您输入密码以完成安装以及密码位置。请按照以下说明进行操作。

性能测试教程:自动化,Gatling和Jenkins的使用方法插图(6)

性能测试教程:自动化,Gatling和Jenkins的使用方法插图(8)

性能测试教程:自动化,Gatling和Jenkins的使用方法插图(10)

性能测试教程:自动化,Gatling和Jenkins的使用方法插图(12)

性能测试教程:自动化,Gatling和Jenkins的使用方法插图(14)

现在,詹金斯(Jenkins)已设置好并准备与加特林(Gatling)一起使用!

安装Gatling Jenkins插件

请按照以下步骤安装插件。

  • 以管理员用户身份登录Jenkins。
  • 单击Manage Jenkins左侧面板上的选项。
  • 单击Manage Plugins选项,如下所示。

性能测试教程:自动化,Gatling和Jenkins的使用方法插图(16)

选择available选项卡,搜索Gatling插件,选择Gatling plugins,然后选择Download now选项。重新启动后进行安装。

性能测试教程:自动化,Gatling和Jenkins的使用方法插图(18)

安装插件后,您可以从UI选项重新启动,如下所示,或者通过命令行使用brew重新启动,如上一课中所述。

性能测试教程:自动化,Gatling和Jenkins的使用方法插图(20)

Jenkins重新启动后,您可以在已安装的插件(管理插件->已安装的插件)下看到Gatling。

性能测试教程:自动化,Gatling和Jenkins的使用方法插图(22)

现在,我们都准备使用Gatling插件来创建我们的负载测试工作,该工作也可以在CI流中使用!

接下来要学什么

恭喜你!现在,您应该对性能测试有了一个好主意。这些技能对任何公司来说都是超值的,因此将它们添加到简历中是确保候选人脱颖而出的可靠方法。

还有很多东西要学!掌握加特林和性能测试的下一步是:

  • 编写和运行加特林测试脚本
  • 使用Lighthouse自动执行网页性能(WPP)
  • 模拟网络节流
  • 加特林全球断言
免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 性能测试教程:自动化,Gatling和Jenkins的使用方法

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论