DevOps 成神之路 — 测试自动化!!

今天,我们将深入了解 Selenium 和 Cypress 等测试自动化框架的世界,了解如何设计和实现 Web 应用程序的自动化测试,并探索如何将这些测试无缝集成到 CI/CD 管道中。

Selenium 或 Cypress 等测试自动化框架简介:

在软件测试领域,测试自动化框架在实现高效、可靠的自动化测试方面发挥着至关重要的作用。这些框架提供了一组指南、最佳实践和工具来有效地构建和执行自动化测试。它们抽象了自动化测试中涉及的许多复杂性,使测试人员和开发人员更容易创建和维护自动化测试套件。

1. Selenium 

Selenium 是最广泛使用的 Web 应用程序开源测试自动化框架之一。它允许测试人员自动与 Web 浏览器交互并无缝执行功能测试。Selenium 支持多种编程语言,包括 Java、Python、C#、JavaScript、Ruby 等,使具有各种语言偏好的测试人员和开发人员可以使用它。

Selenium 的主要特点

  1. 浏览器自动化: Selenium 允许您以编程方式控制 Web 浏览器。您可以模拟用户交互,例如单击按钮、填写表单和浏览网页。

  2. 跨浏览器测试 Selenium 支持多种浏览器,例如 Chrome、Firefox、Safari、Edge 和 Internet Explorer,允许您跨不同浏览器运行测试。

  3. 元素定位器 Selenium 提供了各种定位器来识别网页上的元素,例如通过 ID、名称、类名、CSS 选择器、XPath 等。

  4. 并行执行: Selenium 可以并行执行测试,从而减少总体测试执行时间。

  5.  与测试框架集成: Selenium 可以与 TestNG 和 JUnit 等测试框架集成,以管理测试套件并生成测试报告。

2.Cypress

Cypress 是一个现代且对开发人员友好的端到端测试框架,主要用于测试 Web 应用程序。它是用 JavaScript 编写的,并提供简单的 API,使开发人员可以轻松编写和维护测试。与传统的测试工具不同,Cypress直接运行在浏览器中,可以与被测应用程序紧密交互。

Cypress 的主要特点

  1. 实时重新加载:赛普拉斯在您编写测试时提供实时重新加载。它立即显示应用程序和测试代码更改的影响,使开发和调试过程极其高效。

  2. 时间旅行:赛普拉斯有一个名为“时间旅行”的独特功能,允许您在测试执行期间的任何时候暂停和调试测试。

  3. 自动等待: Cypress 在与元素交互之前自动等待元素出现在页面上。此功能消除了显式等待和超时的需要。

  4. 可调试性: Cypress 提供全面的调试工具,例如 Chrome DevTools。它记录有关测试运行的详细信息,帮助您快速识别和解决问题。

  5. 快照和视频记录:赛普拉斯捕获测试运行的屏幕截图并记录视频,这对于诊断故障非常有用。

Selenium 和 Cypress 之间的选择
Selenium 和 Cypress 之间的选择很大程度上取决于您的项目需求和团队的专业知识。

以下是一些需要考虑的因素:

应用程序类型:如果您主要使用传统 Web 应用程序并需要跨浏览器测试,Selenium 可能是更合适的选择。另一方面,如果您正在构建现代 Web 应用程序并且更喜欢对开发人员更加友好的体验,那么 Cypress 可能更适合。

编程语言:如果您在特定编程语言方面拥有深厚的背景,请考虑 Selenium 的语言支持是否符合您的专业知识。

测试速度: Cypress 由于其架构而提供快速的测试执行,而 Selenium 可能需要更长的时间来执行复杂的测试套件。

调试:赛普拉斯提供高级调试功能,可以更轻松地识别和排除问题。

社区和支持: Selenium 存在的时间较长,拥有更大的社区和更广泛的文档。然而,Cypress 也获得了巨大的知名度和社区支持。

最终,Selenium 和 Cypress 都是强大的测试自动化框架,选择取决于您的特定项目需求和团队偏好。

设计和实施 Web 应用程序的自动化测试:

让我们看一下一个示例项目,该项目使用 Selenium(使用 Python)和 Cypress(使用 JavaScript)为简单的 Web 应用程序设计和实现自动化测试。

示例项目:待办事项列表 Web 应用程序的自动测试
对于此示例,我们将为基本待办事项列表 Web 应用程序创建自动测试。该应用程序允许用户添加任务、将其标记为已完成以及删除任务。

使用 Selenium (Python) 设计和实现自动化测试

先决条件:

  • 安装 Python

  • 安装适用于 Python 的 Selenium WebDriver 

  • 下载适当的 WebDriver(例如 ChromeDriver)并将其添加到系统的 PATH 中

测试场景:验证任务是否可以在待办事项列表应用程序中添加、标记为已完成和删除。

1. 创建一个名为 test_todo_list_selenium.py 的新 Python 文件。

2.使用Selenium实现测试用例:


from selenium import webdriver

import time


# Initialize the WebDriver (using Chrome in this example)

driver = webdriver.Chrome()


# Open the ToDo list application

driver.get("https://exampletodolistapp.com")


# Test Case 1: Add a task

task_input = driver.find_element_by_id("new-task")

add_button = driver.find_element_by_id("add-button")


task_input.send_keys("Buy groceries")

add_button.click()


# Verify that the task has been added to the list

task_list = driver.find_element_by_id("task-list")

assert "Buy groceries" in task_list.text


# Test Case 2: Mark task as completed

complete_checkbox = driver.find_element_by_xpath("//span[text()='Buy groceries']/preceding-sibling::input[@type='checkbox']")

complete_checkbox.click()


# Verify that the task is marked as completed

assert "completed" in complete_checkbox.get_attribute("class")


# Test Case 3: Delete the task

delete_button = driver.find_element_by_xpath("//span[text()='Buy groceries']/following-sibling::button")

delete_button.click()


# Verify that the task has been removed from the list

assert "Buy groceries" not in task_list.text


# Close the browser

driver.quit()

3. 使用 python test_todo_list_selenium.py 运行测试。

使用 Cypress 设计和实现自动化测试 (JavaScript)

先决条件:安装Node.js 安装赛普拉斯

测试场景:验证任务是否可以在待办事项列表应用程序中添加、标记为已完成和删除。

1. 为 Cypress 项目创建一个新文件夹并导航到其中。

2. 使用以下命令初始化新的 Cypress 项目:

npx cypress open

3. Cypress 应用程序启动后,您将找到 cypress/integration 文件夹。

4. 创建一个名为 todo_list_cypress.spec.js 的新文件。

5. 使用 Cypress 实现测试用例:


describe('ToDo List Tests', () => {

beforeEach(() => {

cy.visit('https://exampletodolistapp.com');

});


it('Adds a task', () => {

cy.get('#new-task').type('Buy groceries');

cy.get('#add-button').click();

cy.contains('Buy groceries').should('be.visible');

});


it('Marks a task as completed', () => {

cy.get('#new-task').type('Buy groceries');

cy.get('#add-button').click();

cy.get('input[type="checkbox"]').check();

cy.get('input[type="checkbox"]').should('be.checked');

});


it('Deletes a task', () => {

cy.get('#new-task').type('Buy groceries');

cy.get('#add-button').click();

cy.get('button').click();

cy.contains('Buy groceries').should('not.exist');

});

});

6. 点击Cypress应用程序中的测试文件(todo_list_cypress.spec.js)来运行测试。

Cypress 将打开一个浏览器窗口,您将看到正在执行的自动化测试。您还可以在 Cypress 应用程序中查看测试执行的详细日志、屏幕截图和视频。

在此示例项目中,我们演示了如何使用 Selenium 和 Python 以及 Cypress 和 JavaScript 来设计和实现 ToDo 列表 Web 应用程序的自动化测试。Selenium 提供跨各种编程语言和浏览器的灵活性,而 Cypress 则为现代 Web 应用程序提供更加简化和开发人员友好的体验。

将自动化测试集成到 CI/CD 管道中:

将自动化测试集成到持续集成/持续部署(CI/CD)管道中是软件开发过程中的关键步骤。它确保每当对代码库进行更改时都会自动执行自动化测试,从而使开发人员能够在开发周期的早期发现并修复问题。

我们来详细说明一下将自动化测试集成到 CI/CD 管道中的步骤:

1. 设置版本控制系统:
第一步是设置版本控制系统(VCS),例如 Git。版本控制允许您管理代码库的更改、与团队成员协作并跟踪软件的不同版本。

2. 创建 CI/CD 管道:
接下来,您需要使用您选择的 CI/CD 工具设置 CI/CD 管道。流行的 CI/CD 工具包括 Jenkins、GitLab CI/CD、Travis CI、CircleCI 和 GitHub Actions。

CI/CD 管道由一系列自动化步骤组成,只要将更改推送到版本控制存储库,就会触发这些步骤。该管道通常包括构建应用程序、运行自动化测试、将应用程序部署到临时或生产环境以及生成报告等步骤。

3. 配置 CI/CD 管道进行自动化测试:
要将自动化测试集成到 CI/CD 管道中,您需要将管道配置为在每次代码提交或拉取请求后自动执行测试套件。

以下是此配置的一般步骤:
安装依赖项:确保 CI/CD 服务器或代理上安装了所需的依赖项(例如,编程语言、测试框架和 Selenium 驱动程序)。

签出代码: CI/CD 管道应从版本控制存储库中签出最新代码。

构建应用程序:如有必要,构建应用程序以创建可执行或可分发工件。

运行自动化测试:使用适当的测试框架执行自动化测试套件。例如,如果您将 Selenium 与 Python 结合使用,请运行包含 Selenium 测试的 Python 脚本。

报告和退出状态:捕获测试结果并生成测试报告。大多数测试框架都提供了以机器可读格式(例如,JUnit XML)输出测试结果的选项。此外,确保管道根据测试结果以适当的退出状态退出(例如,成功时以代码 0 退出,测试失败时以非零代码退出)。

4. 处理测试结果:
CI/CD 管道应适当处理测试结果。如果任何测试失败,应立即通知开发人员,以便他们解决问题。一些 CI/CD 工具提供与 Slack 或电子邮件服务等消息传递平台的内置集成,以发送通知。

5. 并行和分布式测试(可选):
对于具有大量自动化测试的大型项目,请考虑并行运行测试或将测试分布在多个代理或机器上,以加快测试执行速度。

6. 构建后操作:
根据您的工作流程,您还可以考虑在成功构建和测试运行后触发对临时或生产环境的部署。但是,在继续部署之前,必须确保自动化测试提供足够的覆盖范围和验证。

将自动化测试集成到 CI/CD 管道中是一种强大的实践,可以显着提高软件的质量和可靠性。它有助于及早发现错误,为开发人员提供快速反馈,并确保您的应用程序始终保持可部署状态。

通过将 CI/CD 管道配置为自动运行自动化测试,您可以将测试无缝集成到您的开发工作流程中,从而更轻松、更有信心地向最终用户交付高质量的软件。

结论:

测试自动化是现代软件开发的一个重要方面,因为它简化了测试过程并提高了整体软件质量。通过了解 Selenium 和 Cypress 等测试自动化框架并将自动化测试集成到 CI/CD 管道中,您可以提升开发工作流程并确保 Web 应用程序的可靠性。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值