【软件测试】- 将 Selenium 和 JMeter 测试脚本集成到 Jenkins 中实现自动化测试和持续集成(CI)及Jenkinsfile 实现 Jenkins Pipeline 原理介绍

这篇具有很好参考价值的文章主要介绍了【软件测试】- 将 Selenium 和 JMeter 测试脚本集成到 Jenkins 中实现自动化测试和持续集成(CI)及Jenkinsfile 实现 Jenkins Pipeline 原理介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


将 Selenium 和 JMeter 测试脚本集成到 Jenkins 中是实现自动化测试和持续集成(CI)的关键步骤。以下是详细的集成过程:

方式一、页面配置方式实现

1、准备工作

  1. 安装 Jenkins

    • 确保您已经在服务器上安装了 Jenkins。
    • 可以从 Jenkins 官网 下载并安装。
  2. 安装必要的插件

    • 在 Jenkins 中安装所需的插件,如 Git 插件、JUnit 插件、Performance Plugin(用于 JMeter)等。
  3. 准备测试脚本

    • 确保您的 Selenium 和 JMeter 测试脚本已经准备好,并且可以在本地执行。

2、集成 Selenium

  1. 配置 Selenium 测试项目

    • 在 Jenkins 中创建一个新的项目(Freestyle project 或 Pipeline)。
    • 如果测试脚本存储在 Git 仓库中,在项目配置中设置源代码管理为 Git,并提供仓库 URL。
  2. 添加构建步骤

    • 在构建环节,添加执行 Shell(Linux)或批处理命令(Windows)的步骤。
    • 添加执行 Selenium 测试脚本的命令,例如:
      java -jar selenium-server-standalone-<version>.jar -role hub
      java -jar selenium-server-standalone-<version>.jar -role node -hub http://localhost:4444/grid/register
      

    这两个命令是用于启动 Selenium Grid 的,它们并不直接用于执行 Selenium 测试脚本,而是用于搭建一个 Selenium Grid 环境。Selenium Grid 允许您在不同的机器和不同的浏览器环境中并行运行测试,这对于提高测试效率和覆盖更多测试场景非常有帮助。下面是对这两个命令的详细解释:

     	### 1. 启动 Selenium Grid Hub
     	```java
     	java -jar selenium-server-standalone-<version>.jar -role hub
     	```
     	- **作用**:该命令用于启动 Selenium Grid 的中心节点,即 Hub。Hub 负责接收来自测试脚本的请求,并将这些请求分发给 Grid 中的各个 Node。
     	- **参数解释**:
     	  - `java -jar selenium-server-standalone-<version>.jar`:使用 Java 运行 Selenium 服务器的 JAR 文件。
     	  - `-role hub`:指定运行的角色为 Hub。
     	
     	### 2. 启动 Selenium Grid Node
     	```java
     	java -jar selenium-server-standalone-<version>.jar -role node -hub http://localhost:4444/grid/register
     	```
     	- **作用**:该命令用于启动一个 Selenium Grid 的节点(Node)。Node 实际上运行浏览器实例,执行来自 Hub 的测试任务。
     	- **参数解释**:
     	  - `-role node`:指定运行的角色为 Node。
     	  - `-hub http://localhost:4444/grid/register`:指定这个 Node 连接到哪个 Hub,以及 Hub 的地址。
     	
     	### 为什么需要 Selenium Grid?
     	
     	在 Jenkins 中自动执行 Selenium 测试时,并不一定需要 Selenium Grid。如果您的测试只需要在单个环境中运行,那么直接运行 Selenium 测试脚本即可。但是,如果您需要在多种浏览器环境下或者不同的操作系统中并行运行测试,那么使用 Selenium Grid 就非常有用了。它允许您:
     	
     	- **并行执行测试**:在多个 Node 上同时运行测试,大大减少了测试时间。
     	- **跨浏览器测试**:在不同的浏览器和操作系统上执行相同的测试。
     	- **远程执行测试**:可以在不同的机器上运行测试,这在分布式测试环境中非常有用。
     	
     	### 总结
     	
     	如果您的 Jenkins 项目中需要在多个浏览器或操作系统中运行测试,或者需要并行化测试以提高效率,那么设置 Selenium Grid 是一个很好的选择。否则,对于简单的测试需求,直接运行 Selenium 测试脚本可能就足够了。
    

    在 Jenkins 中添加构建步骤,特别是执行 Shell(对于 Linux 系统)或批处理命令(对于 Windows 系统),主要是为了自动执行 Selenium 测试脚本。这一步骤的核心目的是实现自动化测试,即在构建过程中自动运行 Selenium 脚本,而不是手动执行这些脚本。这样做的原因包括:

     	### 自动化测试流程
     	- **提高效率**:自动执行测试脚本消除了手动触发测试的需要,节省了大量时间和劳动力。
     	- **减少人为错误**:自动化过程减少了因手动操作不当而导致的错误。
     	
     	### 持续集成的一部分
     	- **持续反馈**:将测试脚本集成到持续集成流程中,可以确保每次代码提交后都自动运行测试,及时提供反馈。
     	- **快速发现问题**:自动化测试可以在问题出现时尽早发现,加快问题定位和修复的过程。
     	
     	### 实现持续交付和部署
     	- **持续交付**:测试是持续交付过程中的关键环节,自动化测试确保了软件质量,使得软件随时准备好交付。
     	- **持续部署**:在自动化部署流程中,通过自动化测试可以确保部署的代码质量,降低部署风险。
     	
     	### 示例
     	
     	假设你有一个 Selenium 测试脚本 `test-suite.py`,用于测试你的 Web 应用。在 Jenkins 中,你可以添加一个执行 Shell 的构建步骤,其中包含命令 `python test-suite.py`。这意味着每次 Jenkins 触发构建时,这个命令都会自动执行,从而运行你的 Selenium 测试脚本。
     	
     	### 总结
     	
     	通过在 Jenkins 中添加执行 Selenium 测试脚本的构建步骤,可以将自动化测试融入到整个软件开发和部署的流程中。这不仅提高了软件开发的效率,而且通过及时的反馈和问题发现,提高了软件的整体质量和可靠性。
    
  3. 测试结果报告

    • 为了生成测试报告,确保 Selenium 测试能够输出 JUnit 兼容的 XML 报告。
    • 在 Jenkins 项目配置中,添加“发布 JUnit 测试结果报告”的后置操作,并指定报告文件位置。

3、集成 JMeter

  1. 配置 JMeter 测试项目

    • 与 Selenium 类似,创建一个新项目或在现有项目中添加 JMeter 测试步骤。
  2. 添加 JMeter 测试执行命令

    • 在构建环节中添加执行 JMeter 测试的命令,例如:
      jmeter -n -t MyTestPlan.jmx -l testresults.jtl
      
  3. 生成性能测试报告

    • 使用 Performance Plugin 来解析 JMeter 的输出文件(如 testresults.jtl)并生成性能报告。
    • 在项目配置中添加“Publish Performance Test Result Report”的后置操作,并配置 JMeter 报告的路径。

4、定期执行和触发器

  • 在项目配置中,您可以设置定期构建的计划,如每晚自动执行测试。
  • 还可以设置触发器,如每当有新的代码提交到 Git 仓库时自动执行测试。

5、示例

假设您有一个 Web 应用,Selenium 脚本用于测试用户界面,JMeter 脚本用于测试应用性能。您可以在 Jenkins 中创建两个项目,一个用于执行 Selenium 测试,另一个用于执行 JMeter 测试。两个项目都配置了从 Git 仓库获取测试脚本的步骤,并在构建后生成相应的测试报告。

6、总结

通过将 Selenium 和 JMeter 测试脚本集成到 Jenkins 中,您可以实现测试的自动化和持续集成。这不仅提高了测试效率,而且确保了代码质量的持续监控。需要注意的是,正确配置测试脚本和 Jenkins 任务对于确保测试准确性和可靠性至关重要。

方式二、jenkinsfile方式实现

将 Selenium 和 JMeter 测试脚本集成到 Jenkins 中,并通过 Jenkinsfile 实现自动化和持续集成,需要完成以下步骤:配置 Jenkins 与 GitLab 之间的集成、编写 Jenkinsfile 以及在 Jenkins 中配置项目以使用这个 Jenkinsfile。

1、配置 Jenkins 和 GitLab 集成

  1. 安装插件

    • 在 Jenkins 中安装 GitLab 插件。这可以通过 Jenkins 的管理界面,在“插件管理”中搜索“GitLab”插件并安装。
  2. 配置 GitLab 连接

    • 在 Jenkins 中配置 GitLab 连接。在“系统配置”中找到 GitLab 部分,并添加你的 GitLab 服务器信息。
    • 你需要提供 GitLab 的 URL 和访问令牌。
  3. 在 GitLab 中配置 Webhook

    • 在你的 GitLab 仓库中,进入“设置” -> “Webhooks”。
    • 添加一个新的 Webhook,指向你的 Jenkins 服务器,例如:http://your-jenkins-server/gitlab/webhook

为了使 Selenium 和 JMeter 测试在 Jenkins Pipeline 中更清晰和详细,我们可以分别为它们创建独立的阶段,并详细描述每个测试阶段的步骤。以下是一个详细的 Jenkinsfile 示例,其中包括了 Selenium 和 JMeter 测试的具体执行步骤。

2、Jenkinsfile 示例

pipeline {
    agent any

    stages {
        stage('Checkout Code') {
            steps {
                // 从 GitLab 仓库获取最新代码
                git 'https://your-gitlab-repo-url.git'
                // 添加凭证,如果需要的话
            }
        }

        stage('Prepare Environment') {
            steps {
                // 准备测试环境,例如安装依赖等
                // 根据需要添加具体命令
            }
        }

        stage('Run Selenium Tests') {
            steps {
                // 运行 Selenium 测试脚本
                // 假设脚本是一个 Python 脚本
                sh 'python path/to/your/selenium/tests.py'
                // 也可以是其他类型的脚本或命令
            }
            post {
                // 收集 Selenium 测试结果
                always {
                    junit '**/selenium-reports/*.xml'
                }
            }
        }

        stage('Run JMeter Tests') {
            steps {
                // 运行 JMeter 测试
                // 假设使用 JMeter 命令行运行测试计划
                sh 'jmeter -n -t path/to/your/jmeter/test-plan.jmx -l jmeter-results.log'
            }
            post {
                // 收集 JMeter 测试结果
                always {
                    archiveArtifacts artifacts: 'jmeter-results.log', fingerprint: true
                    // 如果 JMeter 结果也是以 JUnit 格式,可以使用 junit 步骤
                }
            }
        }
    }

    post {
        // Pipeline 执行结束后的操作
        always {
            // 清理工作区
            cleanWs()
        }
    }
}

3、具体步骤描述

  1. Checkout Code

    • 从 GitLab 仓库获取最新的代码。这里需要提供项目的 Git 仓库地址。
  2. Prepare Environment

    • 准备测试所需的环境,比如安装测试依赖、设置环境变量等。
  3. Run Selenium Tests

    • 执行 Selenium 测试。这里假设使用 Python 脚本,但也可以是其他类型的执行命令。
    • post 部分收集 Selenium 的测试结果。这通常是 JUnit 格式的 XML 文件,可以被 Jenkins 直接解析。
  4. Run JMeter Tests

    • 执行 JMeter 性能测试。使用 JMeter 的命令行工具运行测试计划,并将结果保存到日志文件。
    • post 部分收集 JMeter 的测试结果。这里我们仅保存日志文件,但也可以配置生成 JUnit 格式的报告。
  5. Pipeline 结束后的操作

    • 不论成功或失败,Pipeline 结束后都会执行的操作,例如清理工作区。

在 Jenkins Pipeline 中分别为 Selenium 和 JMeter 测试配置专门的阶段有助于组织和管理测试流程。每个阶段可以独立地执行和收集测试结果,使得测试过程更加透明和易于追踪。通过 Jenkinsfile,自动化测试的过程与持续集成流程紧密结合,提高了软件开发的效率和质量。

4、在 Jenkins 中配置项目

  1. 创建新项目

    • 在 Jenkins 中创建一个新的“流水线”项目。
  2. 配置流水线

    • 在项目配置中,找到“流水线”部分。
    • 选择“Pipeline script from SCM”。
    • 指定 SCM 类型为 Git,并提供你的 GitLab 仓库 URL。
    • 添加凭据(如果仓库是私有的)。
    • 指定 Jenkinsfile 的路径,通常是仓库根目录下的 Jenkinsfile
  3. 保存并运行项目

    • 保存配置后,可以手动触发构建,或者根据 Webhook 的设置自动触发。

5、Jenkinsfile 实现 Jenkins Pipeline 原理

Jenkinsfile 用于实现 Jenkins Pipeline,其核心原理是提供一种声明式或脚本式的方法来定义整个构建、测试、部署流程的自动化步骤。下面是 Jenkinsfile 实现 Jenkins Pipeline 的原理和工作方式:

1. 流水线的定义
  • Jenkinsfile:这是一个文本文件,用 Groovy 语言编写,定义了整个 CI/CD(持续集成/持续部署)流程。Jenkinsfile 可以存储在源代码仓库中,与应用代码一同版本控制。
2. Jenkins 与 Jenkinsfile 的交互
  • 读取 Jenkinsfile:当触发构建时,Jenkins 读取源代码仓库中的 Jenkinsfile,并解析其中定义的步骤和阶段。
  • 执行流水线:Jenkins 根据 Jenkinsfile 中定义的阶段(stages)和步骤(steps)执行整个流程。这可以包括拉取代码、运行测试、构建应用、部署到服务器等操作。
3. 声明式与脚本式 Pipeline
  • 声明式 Pipeline:使用预定义的结构和语法来描述流水线。它更简单、更易读写,适合大多数标准流程。
  • 脚本式 Pipeline:使用 Groovy 语言的脚本来定义更复杂的逻辑。它提供了更大的灵活性和控制力,适用于复杂的需求。
4. 流水线的组成部分
  • Agent:定义流水线运行在哪个节点上(例如任何可用节点或特定标签的节点)。
  • Stages:流水线的主要部分,定义了一系列的阶段,每个阶段完成特定的任务(例如构建、测试、部署)。
  • Steps:在每个阶段内部执行的具体步骤(例如执行脚本、复制文件、运行 Maven 命令)。
  • Post:定义在流水线运行结束后执行的操作(例如清理、发送通知)。
5. Jenkinsfile 的优势
  • 版本控制:将 Jenkinsfile 存储在源代码仓库中,使得构建流程的变更可追踪和审计。
  • 复用和共享:可在多个项目中重用 Jenkinsfile,实现流程标准化。
  • 代码即文档:Jenkinsfile 本身作为文档,描述了软件从开发到部署的完整流程。
6.示例

假设你有一个 Java Web 应用,你的 Jenkinsfile 可能包含以下阶段:拉取代码、编译代码、运行单元测试、打包应用、部署到测试服务器、运行集成测试。

7. Jenkins、GitLab 和 Jenkinsfile 之间交互的文字版本流程图:
GitLab Repository               Jenkins Server               Jenkinsfile
      |                               |                             |
      | 1. Push code/changes           |                             |
      |------------------------------> |                             |
      |                               |                             |
      |                               | 2. Read Jenkinsfile          |
      |                               |---------------------------->|
      |                               |                             |
      |                               | <------3. Define Pipeline----|
      |                               |                             |
      |                               | 4. Execute Pipeline          |
      |                               |    (Checkout, Build, Test,   |
      |                               |    Deploy, etc.)             |
      |                               |                             |
      |                               | 5. Report results            |
      |<------------------------------|                             |
      |                               |                             |

###交互解释

  1. 推送代码/更改

    • 开发者在 GitLab 仓库中推送代码或更改。
  2. 读取 Jenkinsfile

    • Jenkins 服务器检测到 GitLab 仓库的更改,并读取仓库中的 Jenkinsfile。
  3. 定义流水线

    • Jenkinsfile 为 Jenkins 提供如何执行构建和测试的详细指令(流水线的定义)。
  4. 执行流水线

    • Jenkins 根据 Jenkinsfile 中的定义执行流水线,包括代码检出、构建、测试、部署等步骤。
  5. 报告结果

    • Jenkins 执行完成后,会将结果反馈到 GitLab 仓库中,例如构建状态或测试结果。

这个流程清晰地展示了在持续集成环境中 Jenkinsfile 如何成为连接源代码仓库(GitLab)和 CI/CD 工具(Jenkins)的关键部分。通过这种方式,自动化的构建、测试和部署流程能够无缝进行。

8.总结

Jenkinsfile 实现的 Jenkins Pipeline 提供了一种声明式和/或脚本式的方法来定义和管理持续集成和持续部署的流程。通过将构建、测试和部署的过程编码化并存储在源代码仓库中,Jenkins Pipeline 增强了流程的可见性、灵活性和可维护性。

6、总结

通过以上步骤,您可以将 Selenium 和 JMeter 测试脚本集成到 Jenkins 的 CI 流程中。这样,每次代码更新时,Jenkins 可以自动从 GitLab 拉取最新代码,并运行定义在 Jenkinsfile 中的测试脚本,实现自动化测试和持续集成的目标。文章来源地址https://www.toymoban.com/news/detail-763045.html

到了这里,关于【软件测试】- 将 Selenium 和 JMeter 测试脚本集成到 Jenkins 中实现自动化测试和持续集成(CI)及Jenkinsfile 实现 Jenkins Pipeline 原理介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 软件测试/测试开发丨Jenkins Pipeline 学习笔记

    本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/26711 内建节点 SSH节点 Java Web节点 1.1.1 SSH节点配置 远程工作目录 节点中必须有该目录,用于下载和运行jenkins 主机 节点的ip 1.1.2 Java Web节点配置 全局安全配置 代理:勾选Java代理协议 没有负载监

    2024年02月09日
    浏览(27)
  • 软件测试之-集成测试

        1.集成测试也叫组装测试、联合测试、子系统测试或部件测试。     2.集成测试是在单元测试的基础上,将所有模块按照概要设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。     1.找出模块接口以及整体体系结构上的问题;          2.确保各组件组

    2024年02月08日
    浏览(29)
  • 软件测试之集成测试

    1、集成测试概念 1.集成测试也叫组装测试、联合测试、子系统测试或部件测试。 2.集成测试是在单元测试的基础上,将所有模块按照概要设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。 2、集成测试的目的 1.找出模块接口以及整体体系结构上的问题; 2.确保各

    2023年04月25日
    浏览(26)
  • 软件测试之【单元测试、系统测试、集成测试】

    目录 一、单元测试的概念 二、单元测试的目的 三、单元的常见错误 四、如何进行单元测试 五、单元测试策略 六、系统测试的概念 七、系统测试的环境 八、系统测试的类型 九、系统测试的过程 十、集成测试概念 十一、集成测试的目的 十二、集成测试关注的重点 十三、集

    2023年04月08日
    浏览(34)
  • 软件测试之单元测试、系统测试、集成测试详解

    🍅 视频学习: 文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 , 免费获取软件测试全套资料,资料在手,涨薪更快 单元测试是对软件基本组成单元进行的测试,如函数或一个类的方法。当然这里的基本单元不仅仅指的是一个函数或者方法,有可能

    2024年04月25日
    浏览(43)
  • 软件测试技能,JMeter压力测试教程,Plugins Manager插件管理器(十三)

    前面讲了JDBC连接数据库的时候,需下载mysql对应的jar包,放到libext目录下就可以使用了 jmeter 有个插件管理器Plugins Manager,可以方便的管理其他插件的下载和更新 下载地址:https://jmeter-plugins.org/install/Install/ 下载插件后把jar包放到 lib/ext 目录,然

    2024年02月07日
    浏览(47)
  • 【软件测试】单元测试、集成测试、系统测试有什么区别?

    1、粒度不同 集成测试bai粒度居中,单元测试粒度最小,系统du测试粒度最大。 2、测试方式不同 集成测试一般由开发zhi小组采用白盒加黑盒的方式来测试,单元测试一般由开发小组采用白盒方式来测试,系统测试一般由独立测试小组采用黑盒方式来测试。 3、测试内容不同

    2024年02月09日
    浏览(36)
  • 【软件测试】技术精选:Jmeter常见的几种报错

    这个错的含义是 没有连接到服务器地址,因此很可能是 内部网络中断导致。 这个和本地的线程数无关 可能原因是网络抖动不稳定导致 强制停止线程,连接中断产生的错误,正常压测我们等测试结束就好,不用强制停止 这个错误的导致是由于请求接口 设置的请求超时与 请

    2024年02月16日
    浏览(53)
  • Jmeter进行压力测试不为人知的秘密_jmter压力测试,软件测试面试项目

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新软件测试全套学习资料》

    2024年04月22日
    浏览(35)
  • 压力测试+接口测试(工具jmeter),软件测试 400道面试题通关宝典助你进大厂

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新软件测试全套学习资料》

    2024年04月26日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包