0

0

使用 Testkube 简化分布式 Java 应用程序的 BDD 测试

WBOY

WBOY

发布时间:2024-09-04 17:52:02

|

767人浏览过

|

来源于dev.to

转载

随着分布式应用程序趋势的持续,测试 java 应用程序变得越来越复杂。分布式系统涉及大量微服务,因此确保所有组件的一致性、管理故障和验证数据完整性至关重要。全面的端到端测试对于保证应用程序按预期运行至关重要。

行为驱动开发 (bdd) 通过用自然语言定义应用程序行为、简化分布式应用程序测试用例的解释和理解来解决这些挑战。

然而,将 bdd 集成到测试分布式 java 应用程序中也带来了一系列挑战。维护多个服务的 bdd 场景、编排测试环境以及管理服务和测试数据可能是一项艰巨的任务。

在这篇博文中,我们将探讨 testkube 如何使用 cucumber 简化分布式 java 应用程序的 bdd 测试,使该过程更加高效且易于管理。

cucumber - java 的 bdd 测试工具

cucumber 是广泛使用的 bdd 测试工具之一。它使用 gherkin,允许团队使用自然语言定义应用程序功能。它支持不同的编程语言,包括 java。它还与流行的开发框架很好地集成,使其成为流行的选择。最后,它会生成详细的报告,让您深入了解测试。

立即学习Java免费学习笔记(深入)”;

虽然 cucumber 是实现 bdd 的绝佳工具,但在测试分布式应用程序时,尤其是在 kubernetes 环境中,它面​​临着挑战。

  • 处理测试数据可能令人畏惧,尤其是在像 kubernetes 这样的分布式环境中。 cucumber 需要在步骤之间共享状态和测试数据,因此确保隔离既复杂又至关重要。

  • 计算、内存和存储等资源在 kubernetes 中动态配置。 cucumber 需要访问这些资源,而配置这一点很困难。

  • 聚合分布式 cucumber 测试运行的测试结果具有挑战性,可能需要额外的设置才能将所有这些结果放在一个仪表板下。

虽然 kubernetes 可以自动化部署、扩展和应用程序管理,但它增加了一个额外的抽象层,需要与配置 cucumber 一起管理它。这就是像 testkube 这样的工具发挥作用的地方。

使用 cucumber 和 testkube 进行 bdd 测试

testkube 提供了专为 kubernetes 构建的统一测试框架,以简化和精简整个测试流程。测试团队可以在 kubernetes 集群上存储、执行和管理测试。它将测试定义为 kubernetes crd,以提供现代解决方案来管理所有测试并在需要时进行扩展。

使用 testkube,您可以创建测试工作流程,其中包括从配置必要的基础架构组件到与其他测试工具无缝集成以及编排复杂测试的所有内容。请参阅我们的测试工作流程以了解更多信息。

让我们看看如何使用 cucumber 和 testkube 进行 bdd 测试。我们将使用 gradle 创建一个测试工作流程并将 cucumber 测试集成到其中。

此存储库包含此示例所需的所有文件。

先决条件

  • 获取 testkube 帐户。

  • kubernetes 集群 - 我们正在使用本地 minikube 集群。

  • 集群上配置的 testkube agent。

满足先决条件后,您应该准备好目标 kubernetes 集群并配置了 testkube 代理。

创建测试工作流程

导航到“测试工作流程”选项卡,然后单击“添加新测试工作流程”。

这将为您提供三个选项:

  • 从头开始创建 - 使用向导创建测试工作流程

  • 从示例开始 - 使用现有的 k6、cypress 和 playwright 示例

  • 从 yaml 导入 - 导入您自己的测试工作流程

我们将选择“从头开始创建”选项来创建此工作流程。

成新网络商城购物系统
成新网络商城购物系统

使用模板与程序分离的方式构建,依靠专门设计的数据库操作类实现数据库存取,具有专有错误处理模块,通过 Email 实时报告数据库错误,除具有满足购物需要的全部功能外,成新商城购物系统还对购物系统体系做了丰富的扩展,全新设计的搜索功能,自定义成新商城购物系统代码功能代码已经全面优化,杜绝SQL注入漏洞前台测试用户名:admin密码:admin888后台管理员名:admin密码:admin888

下载
  • 提供工作流程的名称并选择 gradle 类型。

  • 提供运行命令。在这种情况下,我们将提供 gradle 测试。

  • 提供gradle版本,我们使用8.5.0-jdk11。

使用 Testkube 简化分布式 Java 应用程序的 BDD 测试

在下一个屏幕上,提供测试文件的源。这可以是 git repo、字符串或文件。在本例中,我们将使用 git 存储库。

使用 Testkube 简化分布式 Java 应用程序的 BDD 测试

在下一个屏幕上,它将生成 yaml 规范文件并显示输出。

使用 Testkube 简化分布式 Java 应用程序的 BDD 测试

我们将通过在工件步骤中添加条件:始终来更新 yaml,以确保始终收集日志,无论是否有任何步骤失败。

kind: testworkflow

apiversion: testworkflows.testkube.io/v1

metadata:

  name: gradle-cucumber

  namespace: testkube

  labels:

    test-workflow-templates: "yes"

spec:

  use:

  - name: official--gradle--beta

    config:

      run: gradle test

      version: 8.5.0-jdk11

  content:

    git:

      uri:<a href="https://github.com/kubeshop/testkube-examples.git"> https://github.com/kubeshop/testkube-examples.git</a>

      revision: main

      paths:

      - cucumber test using gradle

  container:

    workingdir: /data/repo/cucumber test using gradle

  steps:

  - condition: always

    artifacts:

      paths:

      - '**/*'

yaml 文件是不言自明的,因为它列出了您在 yaml 中提供的详细信息。下面是 cucumber 功能文件,解释了我们正在测试的内容。

Feature: Hello World

  Scenario: Print Hello World

    Given I have a working hello world example

    When I run the hello world example

    Then I should see "Hello World" on the console

该存储库包含其他文件,包括测试步骤和测试运行程序,其中包含用于执行 cucumber 测试的相关代码。

单击“创建”以创建测试工作流程。

执行测试工作流程

工作流程准备就绪后,您将在屏幕上看到新创建的测试工作流程。单击它并单击“立即运行”以启动工作流程。

您将看到工作流程的执行以及每个步骤的实时日志。

使用 Testkube 简化分布式 Java 应用程序的 BDD 测试

您将看到基于测试执行的测试结果。在本例中,我们将测试修改为失败,因此,您将看到失败。

使用 Testkube 简化分布式 Java 应用程序的 BDD 测试

由于我们已经为此配置了工件,因此您可以导航到工件选项卡并查看 cucumber 生成的报告。 testkube 会保存每次执行的这些报告,从而更容易分析测试。

使用 Testkube 简化分布式 Java 应用程序的 BDD 测试

使用 Testkube 简化分布式 Java 应用程序的 BDD 测试

这是使用 gradle 创建 cucumber 测试工作流程进行 kubernetes 测试的简单演示。要更多地利用测试工作流程,您可以创建自定义工作流程并将其导入 testkube。

概括

这篇文章总结了运行 bdd 测试来测试分布式 java 应用程序的复杂性。我们研究了流行的 bdd 测试工具 cucumber,以及在 kubernetes 上运行它的复杂性。

我们还探索了测试工作流程,它将整个测试工作流程放入一个文件中,您可以在其中管理测试的各个方面。该演示展示了如何使用 cucumber 进行 java 应用程序的 bdd 测试。

访问 testkube 网站,了解有关可集成的其他测试工具的更多信息。如果您遇到任何困难,请随时在我们活跃的 slack 社区中发表评论。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

404

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

250

2023.10.07

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

718

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

219

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1561

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

649

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

1168

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

1142

2024.04.29

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

1

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 4万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.6万人学习

Git中文开发手册
Git中文开发手册

共0课时 | 94人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号