基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测

这篇具有很好参考价值的文章主要介绍了基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

上一篇文章中,我们详细介绍了构建 Apifox Cli 的 Docker 镜像的步骤,并通过简单的示例演示了如何利用 GitLab 的 CI/CD 功能,将构建好的镜像利用在自动化测试作业中。在今天的文章中,我们将重点讨论如何构建 JMeter 的 Docker 镜像,并演示如何在 GitLab 的 CI/CD 作业中利用该镜像进行自动化压力测试。

测试接口

测试接口依旧采用上篇文章使用的接口,详见https://blog.csdn.net/jiajw0426/article/details/137612529

使用如下命令生成测试数据,为了演示我们会把脚本卸载执行自动化测试之前

curl -X POST -H "Content-Type: application/json" \
  -d '{"name": "John", "age": 30}' \
   http://192.168.3.52:9999/users

使用如下命令检查数据是否生成成功

curl http://192.168.3.52:9999/users

构建JmeterDocker镜像

如果可以上网可以通过命令从网上下载Jmeter

wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.6.3.tgz

我们基于 OpenJDK 17 镜像构建,设定工作目录为 /jmeter,然后从本地复制 JMeter 的压缩包至工作目录,并解压。接着,将 JMeter 的 bin 目录添加至 PATH 环境变量中。你也可以选择复制自定义的 JMeter 配置文件到相应目录。最后,可选地指定了默认的启动命令为 jmeter。

# 使用 JDK 镜像作为基础镜像
FROM openjdk:17

# 设置工作目录
WORKDIR /jmeter

#  本地复制JMeter
COPY apache-jmeter-5.6.3.tgz /jmeter/
RUN  tar -xzf apache-jmeter-5.6.3.tgz && \
    rm apache-jmeter-5.6.3.tgz

# 将 JMeter 的 bin 目录添加到 PATH
ENV PATH="/jmeter/apache-jmeter-5.6.3/bin:${PATH}"

# 复制自定义的 JMeter 配置文件(如果有的话)
# COPY jmeter.properties /jmeter/apache-jmeter-5.6.3/bin/jmeter.properties

# 指定默认的启动命令(可选)
# CMD ["jmeter"]

使用如下命令构建Docker镜像

docker build -t docker.mvcode.cn:8083/jmeter:5.6.3

然后使用命令上传到镜像库

docker push docker.mvcode.cn:8083/jmeter:5.6.3

基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测,docker,ci/cd,jmeter,功能测试

然后使用如下命令测试Jmeter命令是否可以正常使用

docker run --rm docker.mvcode.cn:8083/jmeter:5.6.3 jmeter -v

基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测,docker,ci/cd,jmeter,功能测试

编写测试用例

测试用例非常简单,就是多线程并发请求用户查询接口,验证查询结果返回结果是否正确。我们使用Jmeter工具编写测试用例。

设置环境变量

这里定义了一些用户变量,包括主机名(Host)、端口号(Port)、线程数(ThreadCount)和循环次数(LoopCount)。为了在后续的测试中灵活地修改,通过${__P(name,default)}方式从系统变量中获取,在Jemter中执行就使用默认值。既满足编写测试用例,有方便自动执行。
基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测,docker,ci/cd,jmeter,功能测试

定义线程组

在这个测试用例中,线程数由之前定义的 ThreadCount 变量控制,每个线程将循环执行指定LoopCount 次数的请求。

基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测,docker,ci/cd,jmeter,功能测试

用户查询请求

基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测,docker,ci/cd,jmeter,功能测试

JSON断言

使用$.[?(@.name == 'John' && @.age == 30)]对结果进行断言。

基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测,docker,ci/cd,jmeter,功能测试

本地执行测试

执行测试成功可以导出到文件。
基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测,docker,ci/cd,jmeter,功能测试

基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测,docker,ci/cd,jmeter,功能测试

定义Gitlab Job

将导出文件jmeter.jmx上传到testcases目录、
基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测,docker,ci/cd,jmeter,功能测试

修改测试脚本

基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测,docker,ci/cd,jmeter,功能测试

修改test.js脚本,如上图所示。首先添加如下内容,通过我们构建的devtools镜像,添加用于测试的数据。devtools镜像的构建步骤参照基于Docker构建CI/CD工具链(一)构建基础工具镜像

docker run --rm \
   docker.mvcode.cn:8083/devtools:1.0.0 \
   curl -X POST -H "Content-Type: application/json" \
  -d '{"name": "John", "age": 30}' \
   http://192.168.3.52:9999/users

添加执行Jmeter测试用的脚本如下

docker run --rm -v ${APP_ROOT}:/app -w /app \
   docker.mvcode.cn:8083/jmeter:5.6.3 jmeter \
   -n -j /app/test_jmeter.log \
   -l /app/replort_jmeter.log \
   -o /app/report \
   -JServerHost=192.168.3.52 \
   -JServerPort=9999 \ 
   -JThreadCount=5 \
   -t ./testcases/jmeter.jmx -e -f

这是一个 Docker 命令,用于在容器中运行 JMeter 测试。以下是命令的各部分解释:

  • docker run: 运行 Docker 容器的命令。
  • --rm: 在容器停止后自动删除容器,确保容器退出后不会留下残留文件。
  • -v ${APP_ROOT}:/app: 将本地 ${APP_ROOT} 目录(宿主机上的目录)挂载到容器内的 /app 目录,实现文件的共享和数据持久化。
  • -w /app: 指定容器的工作目录为 /app,即在容器内运行命令时的默认工作目录为 /app
  • docker.mvcode.cn:8083/jmeter:5.6.3: 指定要运行的 Docker 镜像的名称和版本,这里是 JMeter 版本为 5.6.3 的镜像,来自 docker.mvcode.cn:8083 仓库。
  • jmeter: 要在容器中执行的命令,这里是运行 JMeter。
  • -n: 非 GUI 模式运行 JMeter。
  • -j /app/test_jmeter.log: 指定 JMeter 的日志文件路径。
  • -l /app/replort_jmeter.log: 指定测试结果的日志文件路径。
  • -o /app/report: 指定生成 HTML 报告的目录。
  • -JServerHost=192.168.3.52: 设置 JMeter 测试时使用的服务器主机地址。
  • -JServerPort=9999: 设置 JMeter 测试时使用的服务器端口。
  • -JThreadCount=5: 设置 JMeter 测试时的线程数。你可以设置LoopCount设置循环次数。
  • -t ./testcases/jmeter.jmx: 指定要运行的 JMeter 测试计划文件的路径。
  • -e: 生成 JMeter 测试报告时包括所有样本数据。
  • -f: 在生成 JMeter 测试报告时强制覆盖已存在的报告文件。

综上所述,该命令的作用是在 Docker 容器中运行 JMeter 测试,并生成相应的日志文件和测试报告。其他参数可以参照JMeter官方文档。

执行CI/CD JOB

基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测,docker,ci/cd,jmeter,功能测试

执行测试完成后,你在宿主机上可以看到生成测试报告。如何收集测试报告我们会通过一篇专门的文章讲述。
基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测,docker,ci/cd,jmeter,功能测试

基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测,docker,ci/cd,jmeter,功能测试文章来源地址https://www.toymoban.com/news/detail-853798.html

到了这里,关于基于Docker构建CI/CD工具链(七)使用Jmeter进行自动化压测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Docker实现测试部署CI/CD----构建成功后钉钉告警(7)]

    首先需要在钉钉中创建一个项目群。 复制Webhook,后面在 Jenkins 配置时需要使用。         在Jennkins中下载 build user vars plugin ,获取项目中的相关变量值 在 Jenkins 中下载 DingTalk 插件。 在 Jenkins 的系统管理中可找到“钉钉”,这是安装过 DingTalk 后出现的。 修改Jenkinsfile文件

    2024年02月13日
    浏览(30)
  • 微服务 & 云原生:基于 Gogs + Drone 实现 CI/CD 自动化

    以一个简单的前后端项目来说,分别编写前后端的 Dockerfile 文件并构建镜像,然后编写 docker-compose.yml 构建部署,启动运行。每次代码变更后都需重新手动打包、构建、推送。 一个简单的例子: 前端: 项目名:kubemanagement-web 技术栈:Vue 后端: 项目名:kubemanagement 技术栈:

    2024年02月13日
    浏览(31)
  • 使用gitlab 自带 CI/CD 构建部署项目

    这里我用的是桥接模式 桥接模式方便局域网内的小伙伴一起使用 如果没有这个打算可跳过这步 编辑网络 vi /etc/sysconfig/network-scripts/ifcfg-你的网络名称 修改如下内容 这里我有句话要讲, 这些信息配置完成后出现\\\"网络不可达\\\" 需要把 BOOTPROTO 改为 dhcp 详情可参考 处理网络不可达

    2024年02月12日
    浏览(48)
  • 微服务 & 云原生:基于 Gogs + Drone 进行项目 CI/CD

    以一个简单的前后端项目来说,分别编写前后端的 Dockerfile 文件并构建镜像,然后编写 docker-compose.yml 构建部署,启动运行。每次代码变更后都需重新手动打包、构建、推送。 一个简单的例子: 前端: 项目名:kubemanagement-web 技术栈:Vue 后端: 项目名:kubemanagement 技术栈:

    2024年02月14日
    浏览(31)
  • 【CI/CD】基于 Jenkins+Docker+Git 的简单 CI 流程实践(上)

    在如今的互联网时代,随着软件开发复杂度的不断提高,软件开发和发布管理也越来越重要。目前已经形成一套标准的流程,最重要的组成部分就是 持续集成 及 持续交付、部署 。在此,我们在京东云上以一个案例简单实践下 CI 流程。 1.1 CI/CD 持续集成 (Continuous Integration,

    2024年02月13日
    浏览(39)
  • 使用Kubernetes进行CI/CD的最佳实践

    CI/CD是指持续集成 (Continuous Integration) 和持续交付/部署 (Continuous Delivery/Deployment) 的缩写,是一种软件开发方法论。通过自动化的构建、测试、部署等过程CI/CD能够帮助开发者快速地将代码交付到生产环境中。 Kubernetes是一种容器编排工具,它非常适合用来部署和运行分布式应用

    2024年02月08日
    浏览(34)
  • 【CI/CD技术专题】「Docker实战系列」本地进行生成镜像以及标签Tag推送到DockerHub

    背景介绍 Docker镜像构建成功后,只要有docker环境就可以使用,但必须将镜像推送到Docker Hub上去。创建的镜像最好要符合Docker Hub的tag要求,因为在Docker Hub注册的用户名是liboware,最后利用docker push命令推送镜像到公共仓库。 前提概要 你需要在Docker hub注册用户:到官网注册账

    2024年02月10日
    浏览(39)
  • 【前端自动化部署】,Devops,CI/CD

    提到 Jenkins ,想到的第一个概念就是 CI/CD 在这之前应该再了解一个概念。 DevOps Development 和 Operations 的组合,是一种方法论,并不特指某种技术或者工具。 DevOps 是一种重视 Dev 开发人员和 Ops 运维人员之间沟通、协作的流程。通过自动化的软件交付,使软件的构建,测试,发

    2024年02月10日
    浏览(32)
  • 前端自动化部署,Devops,CI/CD

    提到 Jenkins,想到的第一个概念就是 CI/CD 在这之前应该再了解一个概念。 DevOps  Development  和  Operations  的组合,是一种方法论,并不特指某种技术或者工具。DevOps 是一种重视  Dev  开发人员和  Ops  运维人员之间沟通、协作的流程。通过自动化的软件交付,使软件的构建

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包