Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 132|回复: 0

微服务架构的软件测试

[复制链接]

2

主题

2

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2023-11-2 15:30:36 | 显示全部楼层 |阅读模式
在过去的几年里,微服务悄然但确实在拥挤的软件架构市场中崭露头角。微服务架构不同于传统的单体应用程序,传统的单体应用程序是作为单个单元构建的。虽然整体架构相当健全,但围绕它的挫败感正在形成,特别是因为越来越多的应用程序被部署在云中。
微服务架构具有模块化结构,软件不是将组件插入在一起,而是通过将其分解为服务来组件化。因此,应用程序的构建就像一套可独立部署、可扩展的服务,甚至为用不同语言编写不同的服务提供了灵活性。此外,这种方法还有助于实现跨多个团队的并行开发。

微服务架构测试
微服务测试期间的挑战
很明显,应用于整体的测试策略需要随着向微服务的转变而改变。考虑到微服务架构中构建的应用程序提供了很高的功能和性能,测试必须覆盖服务的每一层以及各层之间,同时保持轻量级。然而,由于微服务开发的分布式特性,测试往往是一个巨大的挑战。面临的一些挑战如下:

测试团队倾向于使用围绕 SOA 测试构建的 Web API 测试 尼日利亚手机号码列表 工具,这可能会成为一个问题。由于服务是由不同的团队开发的,因此及时提供所有服务进行测试可能是一个挑战。
确定测试生命周期中每个点的正确测试量
测试和数据验证过程中提取日志复杂
考虑到开发是敏捷的且非集成的,专用测试环境的可用性可能是一个挑战。
Mike Cohn 的测试金字塔可以极大地帮助制定测试策略,以确定需要多少测试。根据这个金字塔,采用自下而上的方法来测试和考虑每个阶段所需的自动化工作可以帮助解决上述挑战。



单元测试的范围是服务内部的,并且是围绕一组相关案例编写的。由于单元测试的数量较多,因此理想情况下应该实现自动化。微服务中的单元测试必须合并社交单元测试和孤立单元测试,通过观察模块状态的变化来检查模块的行为,并查看对象及其依赖项之间的交互。然而,测试人员需要确保虽然单元测试限制了被测单元的行为,但测试并不限制实现。他们可以通过不断质疑单元测试与维护成本或实施约束成本的价值来做到这一点。
集成测试
虽然单独测试模块很重要,但测试每个模块是否与其协作者正确交互以及将它们作为子系统进行测试以识别接口缺陷也同样重要。这可以借助集成测试来完成。集成测试的目的是通过检查集成模块的成功和错误路径来检查模块如何与外部组件交互。进行网关集成测试和持久性集成测试通过识别外部组件之间的逻辑回归和损坏来提供快速反馈的保证,最终有助于评估每个单独模块中包含的逻辑的正确性。
组件测试
微服务中的组件测试要求通过使用测试替身和内部 API 端点替换外部协作者来隔离测试每个组件。这为测试人员提供了一个受控的测试环境,并帮助他们从客户的角度推动测试,允许进行全面的测试,缩短测试执行时间,并通过最小化移动部件来降低构建复杂性。组件测试还可以确定微服务是否具有正确的网络配置及其处理网络请求的能力。
合同测试
上述三项测试提供了模块的高测试覆盖率。但是,他们不检查外部依赖项是否支持端到端业务流程。契约测试测试外部服务的边界,以检查服务调用的输入和输出,并测试服务是否满足其契约期望。汇总所有消费者合同测试的结果可以帮助维护人员在需要时对服务进行更改,而不会影响消费者,并且在定义新服务时也有很大帮助。
端到端测试
除了测试服务之外,测试人员还需要确保应用程序满足业务目标,无论用于构建应用程序的架构如何,并测试完全集成的系统如何运行。因此,端到端测试构成了微服务测试策略的重要组成部分。除此之外,考虑到微服务架构中相同行为有多个移动部件,端到端测试可以识别覆盖范围差距并确保业务功能在架构重构期间不会受到影响。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2026-1-13 17:09 , Processed in 0.043888 second(s), 18 queries .

Powered by Discuz! DISCUZ_VERSION

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表