使用 Testkube 简化分布式 Java 应用程序的 BDD 测试
本篇文章向大家介绍《使用 Testkube 简化分布式 Java 应用程序的 BDD 测试》,主要包括,具有一定的参考价值,需要的朋友可以参考一下。
随着分布式应用程序趋势的持续,测试 java 应用程序变得越来越复杂。分布式系统涉及大量微服务,因此确保所有组件的一致性、管理故障和验证数据完整性至关重要。全面的端到端测试对于保证应用程序按预期运行至关重要。
行为驱动开发 (bdd) 通过用自然语言定义应用程序行为、简化分布式应用程序测试用例的解释和理解来解决这些挑战。
然而,将 bdd 集成到测试分布式 java 应用程序中也带来了一系列挑战。维护多个服务的 bdd 场景、编排测试环境以及管理服务和测试数据可能是一项艰巨的任务。
在这篇博文中,我们将探讨 testkube 如何使用 cucumber 简化分布式 java 应用程序的 bdd 测试,使该过程更加高效且易于管理。
cucumber - java 的 bdd 测试工具
cucumber 是广泛使用的 bdd 测试工具之一。它使用 gherkin,允许团队使用自然语言定义应用程序功能。它支持不同的编程语言,包括 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 导入 - 导入您自己的测试工作流程。
我们将选择“从头开始创建”选项来创建此工作流程。
提供工作流程的名称并选择 gradle 类型。
提供运行命令。在这种情况下,我们将提供 gradle 测试。
提供gradle版本,我们使用8.5.0-jdk11。

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

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

我们将通过在工件步骤中添加条件:始终来更新 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 测试的相关代码。
单击“创建”以创建测试工作流程。
执行测试工作流程
工作流程准备就绪后,您将在屏幕上看到新创建的测试工作流程。单击它并单击“立即运行”以启动工作流程。
您将看到工作流程的执行以及每个步骤的实时日志。

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

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


这是使用 gradle 创建 cucumber 测试工作流程进行 kubernetes 测试的简单演示。要更多地利用测试工作流程,您可以创建自定义工作流程并将其导入 testkube。
概括
这篇文章总结了运行 bdd 测试来测试分布式 java 应用程序的复杂性。我们研究了流行的 bdd 测试工具 cucumber,以及在 kubernetes 上运行它的复杂性。
我们还探索了测试工作流程,它将整个测试工作流程放入一个文件中,您可以在其中管理测试的各个方面。该演示展示了如何使用 cucumber 进行 java 应用程序的 bdd 测试。
访问 testkube 网站,了解有关可集成的其他测试工具的更多信息。如果您遇到任何困难,请随时在我们活跃的 slack 社区中发表评论。
好了,本文到此结束,带大家了解了《使用 Testkube 简化分布式 Java 应用程序的 BDD 测试》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多文章知识!
使用同步机制确保 Java 函数的线程安全性
- 上一篇
- 使用同步机制确保 Java 函数的线程安全性
- 下一篇
- # 用可重用函数替换通用验证
-
- 文章 · java教程 | 9分钟前 |
- Java集合size方法的优缺点分析
- 500浏览 收藏
-
- 文章 · java教程 | 12分钟前 |
- JavaPaths.get路径使用全解析
- 465浏览 收藏
-
- 文章 · java教程 | 16分钟前 |
- ArrayBlockingQueue并发使用技巧详解
- 104浏览 收藏
-
- 文章 · java教程 | 18分钟前 |
- Jackson动态枚举反序列化技巧解析
- 403浏览 收藏
-
- 文章 · java教程 | 1小时前 |
- Java列表对象复制与转换技巧
- 323浏览 收藏
-
- 文章 · java教程 | 1小时前 |
- Java多态原理与实现详解
- 424浏览 收藏
-
- 文章 · java教程 | 1小时前 |
- Java环境变量丢失原因及修复方法
- 127浏览 收藏
-
- 文章 · java教程 | 1小时前 |
- JavaCollections.frequency方法使用详解
- 290浏览 收藏
-
- 文章 · java教程 | 1小时前 |
- JavaFX鼠标事件集中处理技巧
- 321浏览 收藏
-
- 文章 · java教程 | 1小时前 |
- Javafor循环高效使用技巧分享
- 213浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- ChatExcel酷表
- ChatExcel酷表是由北京大学团队打造的Excel聊天机器人,用自然语言操控表格,简化数据处理,告别繁琐操作,提升工作效率!适用于学生、上班族及政府人员。
- 3207次使用
-
- Any绘本
- 探索Any绘本(anypicturebook.com/zh),一款开源免费的AI绘本创作工具,基于Google Gemini与Flux AI模型,让您轻松创作个性化绘本。适用于家庭、教育、创作等多种场景,零门槛,高自由度,技术透明,本地可控。
- 3421次使用
-
- 可赞AI
- 可赞AI,AI驱动的办公可视化智能工具,助您轻松实现文本与可视化元素高效转化。无论是智能文档生成、多格式文本解析,还是一键生成专业图表、脑图、知识卡片,可赞AI都能让信息处理更清晰高效。覆盖数据汇报、会议纪要、内容营销等全场景,大幅提升办公效率,降低专业门槛,是您提升工作效率的得力助手。
- 3450次使用
-
- 星月写作
- 星月写作是国内首款聚焦中文网络小说创作的AI辅助工具,解决网文作者从构思到变现的全流程痛点。AI扫榜、专属模板、全链路适配,助力新人快速上手,资深作者效率倍增。
- 4558次使用
-
- MagicLight
- MagicLight.ai是全球首款叙事驱动型AI动画视频创作平台,专注于解决从故事想法到完整动画的全流程痛点。它通过自研AI模型,保障角色、风格、场景高度一致性,让零动画经验者也能高效产出专业级叙事内容。广泛适用于独立创作者、动画工作室、教育机构及企业营销,助您轻松实现创意落地与商业化。
- 3828次使用
-
- 提升Java功能开发效率的有力工具:微服务架构
- 2023-10-06 501浏览
-
- 掌握Java海康SDK二次开发的必备技巧
- 2023-10-01 501浏览
-
- 如何使用java实现桶排序算法
- 2023-10-03 501浏览
-
- Java开发实战经验:如何优化开发逻辑
- 2023-10-31 501浏览
-
- 如何使用Java中的Math.max()方法比较两个数的大小?
- 2023-11-18 501浏览

