每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?3分钟?学习?何乐而不为?,希望?大家?点赞?,加?关注?,你的?支持?是我?最大?的?动力?。
在本指南中,我们将讨论端到端微服务测试中的关键挑战,以及如何通过保持同步来解决这些挑战
世界各地的 Web 和移动应用程序开发人员正在使用微服务架构来构建和交付令人惊叹的技术产品,这些产品在生态系统中具有快速、响应性和高度集成性。
在一个快速成长的科技初创企业中释放高潜力会带来一系列巨大的回 ,所以任何打破障碍发展更好的科技的东西都会得到所有人的赞赏和接受。
微服务体系结构就是这样一个范例,它正在塑造许多流行的和即将出现的技术产品的技术体系结构。它也塑造了我们建立团队和分配责任的方式。但和其他强大的探索领域一样,这一领域也伴随着一系列独特的挑战。
什么是微服务?
Web 服务或服务是一个术语,用于描述基于 HTTP 等协议并充当应用程序 UI 和数据库之间接口的 Web 契约。将复杂的业务和用户故事分解成非常小的模块,并为每个模块构建单独的服务,这基本上是微服务体系结构的本质。
微服务架构提供的一些关键好处是:
自主开发: 微服务体系结构允许您将团队和代码分解为自给自足的小组,而不是拥有一个非常大的团队和项目,这很难管理。团队自主地工作和交付,导致职责和独立工作优先级的明确划分。
功能专门化: 当根据业务需求确定模块并实现适当的团队结构时,它将导致每个团队成为其功能领域的专家。这在缺陷分析过程中也很有帮助。
动态资源分配: 现代云平台为您的应用程序基础设施提供按需扩展,云平台上的微服务允许您对最终的资源优化策略进行微调。
即插即用: 使用微服务的敏捷开发增强了在不停机的情况下从应用程序中添加或删除模块的能力,这在 SDLC 中需要快速添加特性的场景中很有帮助。
应用程序敏捷性: 由于应用程序不是一个单一的整体,一个非关键的故障组件通常不会影响所有其他工作部件,因此在故障场景中使应用程序更加敏捷。
在 CI/CD 环境中,适当实现的微服务架构有助于技术领导层跟踪总体进展,因为开发人员提交的代码之外的所有步骤都是自动的,可以通过仪表板和其他通信工具进行跟踪。
当一个贡献合并到主存储库中时,将触发一系列链式事件,包括在所有级别进行测试。
如果测试中断,整个 CI/CD 管道可能会停止,修复这个问题可能需要时间。在某些情况下,微服务架构往往会增加问题的复杂性。让我们试着理解。
Microservices 的单元测试和集成测试
单元测试是应用程序测试的各个层中的第一层。它意味着通过编写测试代码来测试代码的各个功能。当您向上移动测试层时,测试用例的数量往往会减少,但是成本和复杂性会增加,因此尽可能多地在单元测试级别进行测试是每个诚实和专注的开发人员的目标。
集成测试基本上是下一层,其中单元测试和应用程序功能基于更广泛的业务功能进行分组,并进行批量测试。编写单元测试涉及到大量的来回操作,因为它要求开发人员不仅要编写一次测试用例,而且还要准备模拟输入数据和外部服务响应,因为单元测试没有连接到实时数据库和服务,并且每当发生对原始功能的任何更改时,都要更新所有这些内容。
以下是事情变得棘手的原因:
这很可能导致团队忽视单元测试,因为随着复杂性的增加,工作开始吸收太多的资源,领导层说这些资源不值得压榨,并在单元测试和集成测试上大量削减,这是一个潜在的长期成本的短期收益。
这里有一些建议可以帮助你避免这种情况:
开发微服务时的团队管理
在微服务架构上构建技术产品的最大挑战之一是团队的结构和管理以及由此产生的复杂性。希望实现微服务架构的主要原因是为快速发展的产品增强开发过程。
在一个快速成长的初创企业中,每天都会有新的业务和用户场景发生变化,而且您希望最大限度地提高开发过程的速度和效率,这就是微服务最有益的地方。但只有在执行和执行得当的情况下才是有益的。
如果您的团队与您的整体技术标准规范不同步,或者您的规范计划本身存在漏洞,那么很容易发现人们即使在平均速度和质量下也难以交付,同时维持一个臃肿的交付线的开销。
挑战通常是这样出现的:
如何避免
跟踪和修复问题
如果领导层未能及时修复产品和团队问题,那么这些问题将不可避免地导致客户会议中的 bug 并引发问题。在 QA 检测到问题并通知产品团队之后,他们需要返回一份关于原因的 告,并在最短的时间内修复问题。
在这里,我们再次看到微服务体系结构和分布式团队结构的复杂性,这带来了更多的挑战:
对于所有的技术领导者来说,看到他们的团队陷入功能失调的模式,这是最可怕的噩梦。对于商界领袖而言,当昂贵的技术资源库似乎无法按照客户的预期赢得客户的信心和赞赏时,这可能是一场更为严重的灾难。
你可以通过以下方法来避免这种情况:
这里提到的挑战并不简单,需要专门的分析和具体案例研究,以便在现实生活中最佳地解决这些挑战。而且,每个团队和产品的变量都是不同的,所以对一个人有效的方法甚至可能对另一个人都不是可行的选择。
在这种情况下,所有防止这类问题的努力都没有结果,你不情愿地落入不得不修复一个破碎系统的可怕场景中,仍然有办法做到这一点。
现在我要提出的建议可能对一些人来说是合理的,对另一些人来说是有争议的,但是我可以向你保证,许多公司已经在过去,在许多停工期间,唯一的优先事项是让工作产品重新上线,已经结束了这种做法,也就是说,优先考虑生产环境的黑盒测试,保留测试环境的白盒测试,只有非常关键的生产流程。
这样,您就可以为生产环境开发新的功能和组件,而不必每次添加东西时都承担使单元和集成测试工作的额外责任。虽然远非理想,但在紧急或困难的情况下可以采用这种方法,在这种情况下,来自特定用户组的反馈比质量保证策略更有帮助。
最后,我们建议产品开发/管理过程中的所有参与者都要意识到这些缺陷,并积极努力避免这些缺陷,以便从精心设计的微服务生态系统中获得最大的收益。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!