测试Java微服务应用程序

随着微服务在Java开发中的广泛应用以及DevOps运动的影响力日益增强,测试Java应用程序从未如此复杂。 用于单片应用程序的测试策略开发人员需要进行调整,以适应微服务的现实。 此外,基于微服务的应用程序有望提高性能和功能,同时也带来一系列新的开发挑战,因此测试从未如此重要。

过去,测试是孤立的工作或个人工作,负责测试的人员不一定参与应用程序的编码。 同样,对应用程序进行编码是由开发人员完成的,而性能测试则留给了专用的测试团队。

当时的测试很重要,但是对于微服务而言,它就显得尤为重要,在这种情况下,单个服务会影响其他服务以及组合应用程序的性能。 由于单个开发人员经常致力于单个微服务,因此在应用程序到达传统测试阶段之前,服务间性能可能成为一个问题。 因此,单个容器和应用程序都需要进行持续测试,以支持成功的微服务部署。

该测试本身就是复杂的。 每个服务都有其自己的代码库(可能以不同的语言编写),数据库架构和依赖关系管理,这意味着将整个应用程序分解可能会花费一些时间和精力。 一旦完成,就可以对它进行整体测试。

还请参见: Java开发人员将微服务满意度评为10颗星中的6颗

表现领先

尽管传统的测试方法(如单元测试,负载测试和端到端功能测试)仍在应用程序测试中发挥重要作用,但性能已成为许多开发团队的关注点。 应用程序必须具有良好的大规模性能,因此在开发过程中进行性能测试有助于团队发现并避免潜在的瓶颈,从而避免在生产中造成问题。

但是,由于基于微服务的Java应用程序的复杂性,这些性能问题可能更难以诊断和修复。 为了克服这些挑战,开发团队需要采用新思想和新技术。

为什么测试自动化至关重要-但很难

自动化测试市场正在快速增长,有望帮助开发人员克服复杂性和可扩展性的挑战(不仅在微服务中,而且在各种软件中)。 许多最新的自动化和测试技术都包含专门为微服务开发的功能。 Kubernetes,Istio和Jenkins X是三重奏,可用于自动创建复杂但可抛弃的环境,从而带来更好的应用程序可伸缩性以及通过金丝雀发布而更安全地部署新生产功能。

从理论上讲,这种自动化水平一旦部署,就可以使Java开发团队更好地控制其应用程序,从而帮助他们产生稳定且可扩展的微服务,使它们能够很好地协同工作。 现实可能更具挑战性:尽管使用全新的应用程序来设置和维护此自动化测试过程相对容易,但如今正在使用的大多数微服务都已从大型单片应用程序中脱颖而出。

由于拖延了所有旧元素,因此很难创建一个完美的测试环境。 因此,尽管可以引入大量的自动化测试,但仍然需要一些手动测试。 这可能意味着测试环境变得支离破碎,难以控制,并且充斥着破坏成功的微服务的瓶颈。

为微服务开发团队灌输DevOps文化

转向微服务通常需要改变开发团队的结构和理念。 由于没有单一的部署重点(正在不断开发和部署单个微服务),因此需要一种一致的方法和一套完整实现的最佳实践来开发和测试应用程序。

在初始计划中需要考虑团队结构-团队负责人应考虑个性和技能,以实现最佳的开发效率和功效。 此外,需要在开发团队早期灌输协作和跨服务测试(以及支持最佳实践)的文化。

还请参见:微服务:“服务格局对业务敏捷性非常有益,但需要非常快速的补救周期”

提高微服务开发人员的知名度

孤立的开发结构是微服务开发人员面临的最大障碍之一。 开发一种微服务的开发人员可能无法深入了解另一种微服务,并且对一种微服务的后期更改可能需要对其他已完成的微服务进行更改。

为开发人员提供可视化的跨微服务代码影响所需的工具,可以帮助防止端到端测试或生产期间的性能问题,并防止后期,昂贵的更改。

尽管测试从未如此重要,但与此同时,开发团队可以使用的技术和工具却从未如此丰富。 在每种情况下都找到合适的解决方案,并在技术和过程中同时进行文化变革,并将这些想法用作构建可靠的Java微服务测试策略的基础。

翻译自: https://jaxenter.com/java-microservices-testing-167793.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Summary Testing Java Microservices teaches you to implement unit and integration tests for microservice systems running on the JVM. You'll work with a microservice environment built using Java EE, WildFly Swarm, and Docker. You'll learn how to increase your test coverage and productivity, and gain confidence that your system will work as you expect. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications. About the Technology Microservice applications present special testing challenges. Even simple services need to handle unpredictable loads, and distributed message-based designs pose unique security and performance concerns. These challenges increase when you throw in asynchronous communication and containers. About the Book Testing Java Microservices teaches you to implement unit and integration tests for microservice systems running on the JVM. You'll work with a microservice environment built using Java EE, WildFly Swarm, and Docker. You'll advance from writing simple unit tests for individual services to more-advanced practices like chaos or integration tests. As you move towards a continuous-delivery pipeline, you'll also master live system testing using technologies like the Arquillian, Wiremock, and Mockito frameworks, along with techniques like contract testing and over-the-wire service virtualization. Master these microservice-specific practices and tools and you'll greatly increase your test coverage and productivity, and gain confidence that your system will work as you expect. What's Inside Test automation Integration testing microservice systems Testing container-centric systems Service virtualization About the Reader Written for Java developers familiar with Java EE, EE4J, Spring, or Spring Boot. About the Authors Alex Soto Bueno and Jason Porter are Arquillian team members. Andy Gumbrecht is an Apache TomEE developer and PMC. They all have extensive enterprise-testing experience. Table of Cont
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值