Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >新手须知:什么是微服务下的持续测试?

新手须知:什么是微服务下的持续测试?

作者头像
测试开发技术
发布于 2024-07-31 10:51:55
发布于 2024-07-31 10:51:55
2000
举报
文章被收录于专栏:测试开发技术测试开发技术

如今,软件开发对于速度和灵活性的持续追求,催生了各种超越传统界限的方法和实践。而作为现代 DevOps 实践的基石,持续测试的出现与发展,正好满足了加速软件交付的需求。下面,我将和您探讨持续测试的最新发展,并重点关注它与微服务及无服务器架构的紧密关系。

1、持续测试(Continuous Testing)基础

持续测试是一种在软件开发生命周期的每个阶段,都需要进行测试的做法。从单元测试集成测试、乃至其他测试,这种方法都能够协助尽早地发现和纠正缺陷,以确保软件的质量。它不只是单纯的缺陷检测,而是包含了一整套的方法集。其中,单元测试可以检查单个组件,而集成测试则可以评估不同模块之间的协作。因此,此方法不仅能够最大限度地减少缺陷,还可以确保整体系统的稳健性。可见,集成测试的意义在于促进不断改进的循环。也就是说,测试的反馈意见可以为后续的开发周期提供可用于改进的信息,从而创建一种持续改进的文化。

2、微服务(Microservices):解码复杂性

如今,微服务架构已成为现代应用开发的主导力量。它将单体应用分解为更小的、更独立的服务,从而为软件的开发和部署方式带来范式上的转变。虽然这种架构具有可扩展性和灵活性,但是也带来了管理和测试大量分布式服务上的挑战。因此,微服务的复杂性就需要我们采取更精细的测试策略,以实现其独立的功能、以及相互关联的特性。

2.1、分解测试策略

分解测试策略是有效进行微服务测试的基础。这种方法主张孤立地检查每个微服务。它包括对单个服务进行严格的测试,以确保其功能符合既定的规范,然后方可进行全面的集成测试。

这种有条不紊的方法不仅能在早期发现缺陷,还可以保证服务之间的无缝通信,以符合微服务的模块化特性。可以说,该策略保障了在同一个测试生态系统中,每个微服务都被视为一个独立的单元,为系统的整体可靠性做出贡献。目前,属于该类别的测试策略包括但不限于如下示例:

01 微服务单元测试

单元测试可被用于验证单个微服务的正确性。例如:如果您有一个负责用户身份验证的微服务,那么单元测试就会去检查身份验证逻辑是否能够正常工作,是否可以处理不同的输入,以及是否能够对有效与无效的身份验证尝试做出适当的响应。

02 微服务组件测试

组件测试可被用于测试一组相关的微服务或组件的功能。例如:在某个电子商务系统中,您可能拥有用于产品编目、库存管理、以及订单处理的不同微服务。那么组件测试将会涉及到验证这些微服务是否能够无缝协作,以实现订单提交、库存检查、以及产品目录更新等流程。

03 合约测试

合约测试可以通过验证每个微服务是否遵守指定的接口和通信协议,以确保微服务之间的合约能够得到切实的遵守。如果微服务 A 依赖微服务 B 的数据,那么合约测试将验证微服务 A 能否正确地“消费”由微服务 B 提供的数据。

04 微服务性能测试

微服务的性能测试包括评估其在各种负载下的响应时间、可扩展性、以及资源利用率。它将有助于在开发过程的早期,发现潜在的性能瓶颈。

05 微服务安全测试

微服务的安全测试会涉及到漏洞检查,确保适当的身份验证,授权机制是否到位,以及验证敏感数据是否得到了安全的处理。

06 故障注入测试

故障注入测试用于评估每个微服务对于故障的适应能力。您可以故意向微服务注入诸如:网络延迟或服务不可用等故障,以观察其响应情况。此类测试有助于确保微服务能够从容地应对各种意外故障。

07 隔离测试

隔离测试主要被用于验证微服务是否能够独立于其他服务运行。隔离测试往往通过在测试微服务时,模拟或删除其依赖关系,以确保微服务能够在隔离的状态下运行,从而避免了在实际环境中,造成隐藏的依赖关系问题。

08 服务虚拟化

微服务离不开服务虚拟化。它允许团队在受控环境中,模拟微服务的行为,从而兼顾了微服务的隔离与测试难题。服务虚拟化使得开发和测试团队有能力通过创建微服务的副本,在不依赖整个系统的情况下进行隔离测试。这种方法不仅能够加快测试的周期,还可以通过复刻真实场景,来提高结果的准确性。作为一种推动力,它在确保全面测试的同时,避免了对微服务生态系统所需的敏捷性产生潜在影响。

09 应用接口测试

微服务在很大程度上也依赖于 API 来实现无缝通信。在验证这些关键性接口的可靠性和功能时,强大的 API 测试显得至关重要。API 测试的方法主要包括仔细检查每个 API 端点对于各种输入、以及边缘情况的响应。此类检查可以确保微服务能够按照预期进行有效的通信和数据交换。同时,API 测试不仅是对端点的验证,也是对整个通信框架的验证,它属于微服务架构的基础层。

3、无服务器计算(Serverless Computing):彻底改变部署

无服务器计算通过将基础设施的抽象化,让开发人员可以只关注代码,而无需管理底层服务器。无服务器计算在带来高度可扩展性和成本效益的同时,也带来了测试方法上的范式转变。而为了确保无服务器应用的可靠性,我们往往需要一些新的测试方法。

01 事件驱动测试

无服务器架构往往通过事件驱动,来对触发器和刺激做出响应。事件驱动测试通常被用来验证由事件触发的功能,是否有能力被完整执行。其中一些方法不仅包括了仔细检查被测功能对于特定事件的响应,还包括评估其针对动态的、不可预见的触发因素的适应性。也就是说,事件驱动测试可以确保无服务器应用对于各种事件,做出准确可靠的响应,从而提升了应用防范潜在差异性的能力。这种方法对于在以事件为中心的环境中,保持无服务器功能的响应性和完整性,是至关重要的。

02 冷启动挑战

无服务器功能在冷启动期间往往面临巨大的性能挑战。持续的性能测试可以帮助无服务器功能,发现并解决从休眠状态启动时可能产生的延迟问题,进而确保其发挥最佳性能。通过积极主动地应对冷启动挑战,无论无服务器功能的初始化状态如何,开发团队都可以自信地实现无缝的用户体验。

03 第三方服务集成

由于无服务器应用通常也依赖与第三方服务的无缝集成,因此我们需要确保这些集成的兼容性和稳健性,成为无服务器架构持续测试的一个重要方面。其中,一种典型的方法是:对无服务器功能与第三方服务之间的交互进行严格测试,验证数据交换是否顺畅且正确。通过解决潜在的兼容性问题,以及确保集成的鲁棒性,开发团队可以提升无服务器应用的可靠性和稳定性。

4、工具和技术

01 微服务测试框架

JUnit、TestNG、Spock、Pytest 和 Behave 等工具,都是在微服务综合测试中非常实用的工具。这些框架通常都能够支持单元测试、集成测试、以及端到端测试。

02 无服务器测试工具

AWS SAM(Serverless Application Model,无服务器应用模型)、Serverless Framework、AWS Lambda Test、Azure Functions Core Tools 和 Serverless Offline 等框架都是可以帮助您开发、测试和部署无服务器应用的工具。它们具有如下不同的功能和用途: 作为一种工具,AWS SAM 可让您轻松地在 AWS 上开发和部署无服务器应用。它提供了基于 YAML 的语法,以定义无服务器应用,并与 AWS CloudFormation 相集成,以部署应用。此外,AWS SAM 还提供了一个本地开发环境,让您可以在将应用部署到 AWS 之前,对其进行测试。 Serverless Framework 是一款支持在多个云服务提供商(包括 AWS、Azure 和 Google Cloud Platform(GCP))上进行无服务器部署的工具。它提供了一个 CLI 界面,可用于创建、更新和部署无服务器应用。此外,Serverless Framework 还提供了一个插件系统,可以让您使用第三方扩展,来丰富其功能。 AWS Lambda Test 是一款可以让您在本地测试 AWS Lambda 函数的工具。它提供了一个模拟的 AWS Lambda 环境,您可以用它来运行您的函数并调试错误。此外,AWS Lambda Test 还可以为您的 Lambda 函数生成测试用例,从而帮助您提高代码覆盖率。 Azure Functions Core Tools 是一种可让您在本地开发和测试 Azure Functions 的工具。它提供了用于创建、更新和运行 Azure Functions 的 CLI 界面。此外,Azure Functions Core Tools 还可以为您的 Azure Functions 生成测试用例,从而帮助您提高代码覆盖率。 独立于云提供商的 Serverless Offline 是一款可让您在本地测试无服务器应用的工具。它提供了一个模拟的云端环境,您可以用它来运行无服务器应用并调试错误。此外,Serverless Offline 还能够为您的无服务器应用生成测试用例,并帮助您提高代码覆盖率。

下面的表格总结了上述五种工具的主要区别:

03 CI/CD 集成

持续测试与 CI/CD 管道的无缝集成,形成了一套强大的自动化测试流程。Jenkins、GitLab CI 和 Travis CI 等工具可以协调整个测试工作流程,以确保每个代码的变更在部署之前都经过了严格的测试。总的说来,由持续测试与 CI/CD 管道集成所提供的机制,既能够保证软件的质量,又可以达到如今数字化要求的速度。

5、结束语

综上所述,由于持续测试能够在整个开发过程中持续检查软件的问题和错误,因此已成为了快速、可靠地交付软件过程的重要一环。随着微服务和无服务器架构不断重塑软件应用的格局,持续测试的作用将变得更加突出。面对各种创新架构所带来的挑战,我们需要善于利用最新的工具和方法,让开发团队跟上快速迭代的需求,交付出高质量的软件。

链接:https://dzone.com/articles/continuous-testing-in-the-era-of-microservices-and

如果觉得有用,就请关注、点赞、在看、分享到朋友圈吧!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
聊一聊无服务器与微服务架构的奥秘
微服务和无服务器架构是云原生计算世界中的热门话题之一,虽然大多数人认为这些架构类似,但它们在软件开发中能够发挥出不同的作用。本文将概述了微服务和无服务器架构的区别以及如何相辅相成。
TARS基金会
2022/04/18
1.4K0
聊一聊无服务器与微服务架构的奥秘
从零开始掌握微服务软件测试
顾翔老师近期推出一对一入职面试辅导。有兴趣者可加微信xianggu19720625与我联系。先要提供简历初选,合适者进一步洽谈。
顾翔
2020/01/17
6090
从零开始掌握微服务软件测试
Serverless 微服务持续交付案例
“Serverless 风格微服务的持续交付(上):架构案例”中,我们介绍了一个无服务器风格的微服务的架构案例。这个案例中混合了各种风格的微服务
顾宇
2018/08/17
1.7K0
「自动化测试」微服务自动化测试简介
微服务 - 也称为微服务架构 - 是一种构建方式,它将应用程序构建为松散耦合服务的集合,具有完整的业务功能。微服务架构允许连续交付/部署大型复杂应用程序。本文将概述自动微服务测试工具和最佳实践。
架构师研究会
2019/08/16
2.4K0
微服务架构下的测试应对策略(下)
消费者驱动契约测试的流程是,消费者定义他们期望的API或消息是什么样子,这些期望即为契约,从这些契约可以生成存根,此后消费者团队可以在构建过程中重复使用它们。消费者和生产者都需要验证契约。
袁慎建@ThoughtWorks
2018/09/29
1.2K0
微服务架构下的测试应对策略(下)
微服务开发中5个惨痛教训
基于微服务的开发正在改变我们整个行业,超过70%的人正在尝试开发基于微服务的软件。微服务简化了业务、流程、技术和人员的集成,将大爆炸的整体问题分解为一个可以独立处理的小集合。然而,它也带来了管理这些小集合之间关系的问题。我们需要不同的过程、工具、培训、方法和团队来简化微服务开发。
程序你好
2018/07/26
7560
微服务开发中5个惨痛教训
微服务测试的思考与实践 | 洞见
最近几年,微服务架构越来越火爆,逐渐被企业所采用。随着软件架构的变化,对应的软件测试策略需要作何调整呢?本文将介绍微服务架构下的测试策略,并结合分享在业务和架构演变过程中,一个历经九年的项目测试策略的演进。
ThoughtWorks
2018/12/13
1.1K0
干货 | 基于 DevOps 的微服务生态系统与工程实践(三)
往期回顾: 第一部分:微服务与 DevOps 干货 | 基于 DevOps 的微服务生态系统与工程实践(一) 第二部分:微服务生态系统 干货 | 基于 DevOps 的微服务生态系统与工程实践(二) 前言 从2014年开始,当我接触微服务之后,我发现在微服务的演进过程中,开发和测试、运维需要相亲相爱,紧密合作,才能取得理想的效果。 本系列文章主要包括三部分内容: 第一部分:微服务与 DevOps; 第二部分:微服务生态系统; 第三部分:微服务架构的工程实践; 本文着重介绍第三部分:微服务架构的工程实践。
DevOps时代
2018/02/02
6170
干货 | 基于 DevOps 的微服务生态系统与工程实践(三)
微服务架构下的测试之道
1.系统架构的演变 伴随着互联网的快速发展,Web应用系统从面向企业内部发展到面向市场用户,业务的日趋复杂以及用户量的上升,那些曾经工作良好的单体应用开始遇到开发、测试、部署、发布各个方面的瓶颈,诸如扩展新增功能艰难、系统庞大难以维护、编译太耗时,发布流程太慢等问题困扰着开发团队。 SOA的问世促使系统架构发生了跨越式的演变,它提出了面向服务的架构思想,将系统拆分成多个服务组件,并通过ESB(企业服务总线)对服务组件进行统一管理,但重量级的ESB使得自身又成为了一个瓶颈。随之而来的是近来业界流行的微服务架
架构师小秘圈
2018/04/02
2.4K0
微服务架构下的测试之道
微服务的测试策略
作者 | Tomas Fernandez 译者 | 平川 微服务应用程序是一组通过网络进行通信的分布式程序,有时也会与第三方服务和数据库交互。微服务是网络化的,与传统的单体应用程序相比,它的故障点更多。为此,我们需要一种不同的、涉及面更广的测试方法。那么,我们该如何测试一个微服务应用程序?测试金字塔还有效吗?当涉及到第三方服务并可能出现网络中断时,我们该如何测试?在这篇博文中,我们将尝试回答所有这些问题。 本文最初发布于 semaphore 博客。 微服务应用程序是一组通过网络进行通信的分布式程序
深度学习与Python
2023/03/29
9140
微服务的测试策略
微服务下产品集成和集成测试框架流程
今天谈下微服务架构下的应用集成和集成测试方面的内容。在微服务架构下,由于传统的的单体应用以及拆分为多个微服务,那么原来单个系统内部的API接口调用以及变成了微服务间的外部接口调用,而且还可能已经由不同的开发团队在开发不同的微服务模块。
人月聊IT
2025/06/24
710
微服务下产品集成和集成测试框架流程
无服务器化的微服务持续交付
前言 我在刚进入 ThoughtWorks 的时候就做微服务,当时不知道什么叫做微服务,只是我们通过一个小的技术应用替换原先的大应用的一个部分,当时只是做一个解耦,后来等微服务的概念兴起的时候才知道我们当时做的是微服务,这是我做微服务的起因。 最近在做 DevOps 的一些咨询,在海外做一些互联网行业的并购,用了 DevOps 的相关技术。这次我就讲一下我之前做的一个案例,就是无服务化的微服务的持续交付。 一 什么是无服务器架构 无服务器架构,这个词2012年就已经出现了,当时是因为移动互联网兴起。大家会发
DevOps时代
2018/02/02
1.8K0
无服务器化的微服务持续交付
华为专家 | 轻量化微服务测试实践
前言 在我过去工作的这十年间,IT行业经历了很多的变迁,从单体架构到微服务架构,从传统组织到敏捷组织,我正好都有不同的体验,现在我在华为任软件架构师,华为有各种各样的产品线,我的工作职责之一是帮助产品团队构建软件工程能力,以及落地Cloud Native、微服务还有DevOps的相关实践,另外我同时也是几本书和资料的译者或作者。 我之前在比较早的传统团队里面去做研发工作时,测试主要采用手工的方式,其实这种日子是比较苦的,可能一直要加班到深夜,正式上线的时候还会提心吊胆,担心哪些功能会挂掉。 后来引入了自动化
DevOps时代
2018/02/02
2.9K0
华为专家 | 轻量化微服务测试实践
测试微服务的4个最佳实践
随着微服务架构的出现,应用程序堆栈发生了根本性的变化,这对软件测试产生了连锁反应。每天多次发布微型版本,软件测试更加精细,它与开发同时发生,并且与测试单体应用程序有根本的不同。
lyb-geek
2018/12/28
7390
基于 DevOps 的微服务生态系统与工程实践(三)
DevOps时代
2017/07/20
1.2K0
基于 DevOps 的微服务生态系统与工程实践(三)
【云端风云:云计算全局解密】一篇文章读懂云计算技术及其未来发展趋势
在当今数字化浪潮中,云计算如一颗闪烁的科技明珠,为企业和个人带来了前所未有的灵活性、效率和创新力。本文将带领读者深入探索云计算的核心概念、关键服务模型以及未来发展趋势。云计算不仅是数字化时代的基石,更是推动创新和变革的引擎。站在云端风云之巅,我们将解析云计算的奥秘,揭晓数字化未来的蓬勃蔓延。通过这场科技奇迹的探索,我们将共同领略云计算为全球带来的变革,见证科技与未来的奇妙融合。
奥耶可乐冰
2023/11/24
1.6K0
【云端风云:云计算全局解密】一篇文章读懂云计算技术及其未来发展趋势
干货 | 携程微服务架构下的测试浅谈
施赛花,携程机票BU测试工程师,主要负责携程机票聚合层服务的测试,以及自动化工具的开发。善于研究新技术,并转用于实践,提升测试工作效率。
携程技术
2019/04/22
5860
干货 | 携程微服务架构下的测试浅谈
提升微服务测试效率:消费者驱动契约测试
在软件工程的世界里,我们经常面临变化。微服务不仅改变了软件的体系结构,而且改变了团队的组织方式和协作方式。
yuanyi928
2018/12/06
1.3K0
无服务器架构中的十大安全风险
无服务器架构(作为服务或FaaS的功能)是应用程序在其上构建和部署后,可以根据云工作负载流自伸缩的架构。从开发的角度来看,无服务器架构主要关注核心功能,而忽略所有底层约束,如操作系统、运行时环境、存储等。
程序你好
2018/09/29
1.8K0
无服务器架构中的十大安全风险
微服务下的契约测试(CDC)解读
有近两周没有在公众号中发表文章了,看过我之前公众号的读者都知道,公众号中近期在连载《RobotFramework接口自动化系列课程》,原本计划每周更新一篇,最近由于博主在带一个新项目,实在是没空抽出时间来,所以向公众号中对连载课程一直期待的读者说声抱歉。
测试开发技术
2020/01/17
1.5K0
微服务下的契约测试(CDC)解读
相关推荐
聊一聊无服务器与微服务架构的奥秘
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档